函数程序辅助评分的程序等价性(扩展版)
Program Equivalence for Assisted Grading of Functional Programs (Extended Version)
摘要:
在涉及编程作业的课程中,给学生有意义的反馈是一个重要的挑战。人类可以通过手动评分程序来提供有用的反馈,但这是一个耗时,劳动密集型,并且通常无聊的过程。自动评分器速度快,可扩展性好,但它们通常提供的反馈很差。虽然已经有关于改进自动分级机的研究,但是关于缩放和改进人类分级的研究是有限的。我们建议通过使用等价算法来增强手动评分过程,该算法可以识别学生提交文件之间的等价关系,从而扩展人工评分。这使人类评分员能够一次为多个学生提交的内容提供有针对性的反馈。我们的技术在两个方面是保守的。首先,它识别算法相似的提交之间的等效性,例如,它不能识别快速排序和合并排序之间的等价性。其次,它使用正式的方法,而不是聚类算法从机器学习文献。这使我们能够证明一个可靠的结果,保证提交永远不会错误地聚集在一起。尽管只有报告等价时,有算法的相似性和正式证明等价的能力,我们表明,我们的技术可以显着减少评分时间从介绍函数编程课程的数千个编程提交。
英文摘要:
In courses that involve programming assignments, giving meaningful feedback to students is an important challenge. Human beings can give useful feedback by manually grading the programs but this is a time-consuming, labor intensive, and usually boring process. Automatic graders can be fast and scale well but they usually provide poor feedback. Although there has been research on improving automatic graders, research on scaling and improving human grading is limited. We propose to scale human grading by augmenting the manual grading process with an equivalence algorithm that can identify the equivalences between student submissions. This enables human graders to give targeted feedback for multiple student submissions at once. Our technique is conservative in two aspects. First, it identifies equivalence between submissions that are algorithmically similar, e.g., it cannot identify the equivalence between quicksort and mergesort. Second, it uses formal methods instead of clustering algorithms from the machine learning literature. This allows us to prove a soundness result that guarantees that submissions will never be clustered together in error. Despite only reporting equivalence when there is algorithmic similarity and the ability to formally prove equivalence, we show that our technique can significantly reduce grading time for thousands of programming submissions from an introductory functional programming course.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。