LLM2D
InvAAST聚类:关于将基于不变式的程序聚类应用到入门级编程作业中
InvAASTCluster: On Applying Invariant-Based Program Clustering to Introductory Programming Assignments
作者: Pedro Orvalho, Mikol\'a\v{s} Janota, Vasco Manquinho
发布日期: 5/1/2025
arXiv ID: oai:arXiv.org:2206.14175v3

摘要

arXiv:2206.14175v3 通知类型: 替换-跨平台 摘要:由于参加编程课程的学生人数众多,针对入门级编程作业(IPAs)的自动化程序修复技术数量不断增加。通常,这些技术使用程序聚类来利用之前正确提交的学生实现来修复新的错误提交。这些修复技术使用聚类方法,因为分析所有可用的正确提交来修复程序是不可行的。然而,传统的聚类方法依赖于基于特征(如抽象语法树(ASTs)、语法、控制流和数据流)的程序表示。 本文提出了一种名为 InvAASTCluster 的新型程序聚类方法,该方法使用动态生成的程序不变量来聚类语义等效的 IPAs。InvAASTCluster 的程序表示结合了程序的语义(通过其不变量)和结构(通过其匿名抽象语法树(AASTs))。不变量表示在程序执行过程中必须保持为真的条件,而 AASTs 是去除了变量和函数名称,仅保留其类型的 ASTs。我们的实验表明,当聚类一组正确 IPAs 时,提出的程序表示在基于语法的表示方面表现出更优性能。此外,我们将 InvAASTCluster 集成到一个最先进的基于聚类的程序修复工具中。我们的结果显示,当与基于聚类的修复工具结合使用时,InvAASTCluster 通过修复约 13% 更多的学生程序,并且在较短的时间内,使当前的最先进方法得到了进一步的提升。