针对传统的基于动态测试和基于软件度量参数分析的编程题自动评分方法没有考虑学生程序是怎样实现编程任务的,以及不能从程序文本的语法结构和语义角度衡量学生程序与正确答案的接近程度等问题,本项目基于程序转换和程序语义分析两项核心技术,提出一种新的编程题自动评分方法.具体研究内容为首先将学生程序和模板程序转换成中间表示形式- - 系统依赖图;然后建立一系列程序标准化规则,并按照该规则对系统依赖图进行语义等价的转换,消除程序表达方式的多样性;最后在语义级别上匹配标准化的学生程序系统依赖图和模板程序系统依赖图,并根据匹配结果给出学生程序的评分.该方法被应用于"C语言编程题自动评分系统"中,申请了软件著作权,并应用于哈尔滨工业大学的C语言上机考试中.实验结果表明,编程题自动评分可减轻教师的负担,提高阅卷效率,避免人工评分受到人为因素的影响,确保评分结果客观、公正、合理,并且将上机实验和考试很好地结合在一起,可以有效提高学生的实践能力,具有重要的应用价值和应用前景.
英文主题词automated assessment; program transformation; semantic analysis; program normalization; program matching