竞赛级代码的自动化反馈生成
软件工程
2022-06-07 v1
摘要
竞技编程已成为程序员检验自身技能的流行方式。大规模在线编程竞赛吸引数百万经验丰富的程序员相互比拼。竞赛级编程问题本身具有挑战性,参与者常常无法在首次尝试时解决问题。一些竞技编程在线平台也允许程序员练习竞赛级问题,而对于错误的练习提交,标准反馈是其未通过的首个测试用例。通常,失败的测试用例无法为程序员提供足够的信息以修正代码中的错误,于是他们在数次不成功的尝试后便放弃该问题。我们提出 Clef,这是首个能够通过修复程序员错误提交来自动生成竞赛级代码反馈的数据驱动工具。关键进展在于,Clef 可以通过考察其他程序员随时间对其自身提交所做的修复,学习如何为错误提交生成修复。由于同一任务的正确程序与错误程序之间差异可能很大,我们引入一种新的数据结构——合并树,以捕捉提交之间的变更。合并树具有通用性:它既能编码算法层面的大幅重设计,也能编码语句层面的细微改动。Clef 将从一个提交数据库中学到的模式应用于为该数据库之外的新提交生成修复。我们在全球最大竞技编程平台 Codeforces 的六个真实问题上对 Clef 进行了评估。Clef 在修复程序员错误提交方面达到了 42.1% 的准确率。即便面对那些从未独立找到问题解的程序员的错误提交,Clef 也能在 34.1% 的情况下修复用户的程序。
引用
@article{arxiv.2206.01848,
title = {Automated Feedback Generation for Competition-Level Code},
author = {Jialu Zhang and De Li and John C. Kolesar and Hanyuan Shi and Ruzica Piskac},
journal= {arXiv preprint arXiv:2206.01848},
year = {2022}
}