目前计算机程序设计语言考试中
编程题的自动评分技术仍然不完善,该技术是实现计算机在线考试及自动阅卷的关键和难点所在,因此许多研究者致力于寻找一种程序的中间表示形式(比如系统依赖图、抽象语法树)来进行源码分析并匹配评分,这种方法是将程序整体作为比较对象,不仅内存占用率高,而且实现难度大,同时也会牺牲灵活性。
本文融合了程序查错及局部纠错技术、基于反射机制的黑盒测试技术、知识要点的正则表达式匹配评分技术等关键技术,实现了Java编程题自动评分技术及原型系统。评分方式兼顾了可执行代码的动态测试与源程序的静态分析,实现了对不同的考生程序采用以下两种评分方法:
(1)对于可以通过编译的考生程序,利用 Java 反射机制提取考生程序的相关信息进行黑盒测试,给出测试分,再结合语法分、结果分,计算出总得分。
(2)对于无法通过编译的考生程序,利用本地 jdk 包中的编译器编译考生程序,然后进行查错并局部纠错,每纠正一个错误都要重新编译以消除虚假错误。
对于纠错后能顺利通过编译的考生程序,采用第一种评分方法。对于无法纠错的考生程序,则采取放弃纠错,根据错误种类适当给出语法分,再结合知识要点匹配情况计算总得分。
实验结果表明,本文所实现的 Java编程题自动评分技术提高了试题评阅过程的合理性和准确性,且具有较好的灵活性
1.1 研究背景
随着人类进入信息时代,信息技术作为生产力中最活跃的因素改变着社会的方方面面,网络以其独特的方式介入到社会的各个领域,给人们的行为方式带来巨大影响。
本文融合了程序查错及局部纠错技术、基于反射机制的黑盒测试技术、知识要点的正则表达式匹配评分技术等关键技术,实现了Java编程题自动评分技术及原型系统。评分方式兼顾了可执行代码的动态测试与源程序的静态分析,实现了对不同的考生程序采用以下两种评分方法:
(1)对于可以通过编译的考生程序,利用 Java 反射机制提取考生程序的相关信息进行黑盒测试,给出测试分,再结合语法分、结果分,计算出总得分。
(2)对于无法通过编译的考生程序,利用本地 jdk 包中的编译器编译考生程序,然后进行查错并局部纠错,每纠正一个错误都要重新编译以消除虚假错误。
对于纠错后能顺利通过编译的考生程序,采用第一种评分方法。对于无法纠错的考生程序,则采取放弃纠错,根据错误种类适当给出语法分,再结合知识要点匹配情况计算总得分。
实验结果表明,本文所实现的 Java编程题自动评分技术提高了试题评阅过程的合理性和准确性,且具有较好的灵活性
1.1 研究背景
随着人类进入信息时代,信息技术作为生产力中最活跃的因素改变着社会的方方面面,网络以其独特的方式介入到社会的各个领域,给人们的行为方式带来巨大影响。