中文

InvAASTCluster:将基于不变量的程序聚类应用于入门编程作业

软件工程 2025-05-01 v3 人工智能 计算机与社会 编程语言

摘要

由于编程课程注册学生数量庞大,聚焦于入门编程作业(IPAs)的自动化程序修复技术日益增多。此类技术通常使用程序聚类,以利用先前正确的学生实现来修复新的错误提交。这些修复技术使用聚类方法,因为分析所有可用的正确提交以修复程序是不可行的。然而,常规聚类方法依赖于基于抽象语法树(ASTs)、语法、控制流和数据流等特征的程序表示。本文提出 InvAASTCluster,一种新颖的程序聚类方法,使用动态生成的程序不变量来聚类语义等价的 IPAs。InvAASTCluster 的程序表示结合了通过不变量体现的程序语义,以及通过匿名化抽象语法树(AASTs)体现的程序结构。不变量表示程序执行期间必须保持为真的条件,而 AASTs 是去除了变量与函数名、仅保留其类型的 ASTs。我们的实验表明,在对一组正确 IPAs 聚类时,所提出的程序表示优于基于语法的表示。此外,我们将 InvAASTCluster 集成到最先进的基于聚类的程序修复工具中。我们的结果显示,当被基于聚类的修复工具使用时,InvAASTCluster 以更短时间多修复约 13% 的学生程序,推进了当前最优水平。

关键词

引用

@article{arxiv.2206.14175,
  title  = {InvAASTCluster: On Applying Invariant-Based Program Clustering to Introductory Programming Assignments},
  author = {Pedro Orvalho and Mikoláš Janota and Vasco Manquinho},
  journal= {arXiv preprint arXiv:2206.14175},
  year   = {2025}
}

备注

31 pages, 21 Figures, 5 Tables. Accepted for publication at the Journal of Systems and Software. GitHub repo: https://github.com/pmorvalho/InvAASTCluster