For teachers, automated tool support for debugging and assessing their students' programming assignments is a great help in their everyday business. For block-based programming languages which are commonly used to introduce younger learners to programming, testing frameworks and other software analysis tools exist, but require manual work such as writing test suites or formal specifications. However, most of the teachers using languages like Scratch are not trained for or experienced in this kind of task. Linters do not require manual work but are limited to generic bugs and therefore miss potential task-specific bugs in student solutions. In prior work, we proposed the use of anomaly detection to find project-specific bugs in sets of student programming assignments automatically, without any additional manual labour required from the teachers' side. Evaluation on student solutions for typical programming assignments showed that anomaly detection is a reliable way to locate bugs in a data set of student programs. In this paper, we enhance our initial approach by lowering the abstraction level. The results suggest that the lower abstraction level can focus anomaly detection on the relevant parts of the programs.
翻译:对于教师来说,为调试和评估学生的编程任务提供自动化工具支持是他们的日常业务中的一大帮助。对于通常用来向年轻学生介绍编程、测试框架和其他软件分析工具的基于街区的编程语言来说,目前存在这种语言,但需要手工工作,例如写测试套件或正式的规格。然而,使用Scratch等语言的教师大多没有接受过这类任务的培训或经验。Linters并不需要手工工作,而是局限于普通的错误,因此在学生解决方案中忽略了潜在的特定任务错误。在先前的工作中,我们建议使用异常探测方法,在学生编程任务中自动发现特定项目错误,而不需要教师方面额外的人工劳动。对典型编程任务的学生解决办法的评估表明,异常探测是将错误定位于学生方案数据集中的可靠方法。在本文中,我们通过降低抽象水平来改进我们的初步方法。结果表明,较低的抽象水平可以将异常现象的检测集中在方案的相关部分。