论文部分内容阅读
随着计算机网络技术和智慧教育在教育测量和学习评价过程中的应用,计算机程序设计课程无纸化考试已经成为现代化教育的趋势。目前,程序客观题自动评分技术已经非常成熟,而程序设计题虽然有标准化结果,但由于表达方式的多样性,其自动评分一直是该研究领域难点。C语言程序设计课程是全国高等院校计算机及相关理工科专业中也是一门必修课程。本文根据教学和考试中对C语言程序题评分的实际情况,提出的C语言源代码自动评分方法,主要包括三部分研究内容:针对已有的程序中间表达形式不能较好地代表程序信息的问题,提出了基于流程控制图(Flow Control Graph,FCG)匹配的自动评分方法。根据C的程序语言特点,在详细分析C源代码语法、语义、内容结构的基础上,将预处理标准化后的源代码转换为更能体现学生实现编程任务过程的FCG。并以流程控制元为基本单位,计算学生程序与标准答案模板程序的FCG的匹配相似度给出程序评分类别。实验结果表明了 FCG表示程序的准确性以及评分的良好效果。FCG算法虽比传统静态评分技术有一定的优势,但其评分的准确性在很大程度上依赖标准答案模板的数量。针对教师提供的答案模板数量有限给评分带来的困难,本文提出了一种基于FC-KNN的自动评分算法。在FCG的基础上,提取流程控制元作为程序源码基本特征,将含标记(已评分)的学生程序作为训练样本转换成特征向量,表示在向量空间模型中;然后使用k近邻算法根据提取的特征对待评分程序进行分类,其归入的等级类别即为该程序的评分。初步的实验结果证实了 FC-KNN评分算法与依靠少量有限答案模板的FCG评分算法相比,准确性更高。FC-KNN自动评分算法结合了机器学习中的k近邻算法,前提是需要具备充足的含标记训练样本,而实际教学中,积累如此数量的含标记样本需要大量的时间与人力评分。针对FC-KNN需要充足训练样本的问题,提出了一种集成分类评分模型,将FCG与FC-KNN两种分类模型按照一定的策略进行组合,各取所长,将初级分类器FCG的输出结果作为次级分类器FC-KNN的输入样例,并设计了数学模型解决随着样本的增加,可能造成的类间样本不均衡的问题。最后,通过实验证实了集成后的分类评分模型,在样本积累各个阶段,均能达到较为理想的评分准确性。