论文部分内容阅读
近年来计算机辅助测评(CAA)领域受到了更多的关注,但所解决的多为客观题测评问题,而主观题由于灵活性和创造性强等因素,一直没有出现很好的测评方案。程序作业属于主观题,与自然语言相比,由于程序设计语言的规范性强,多义性少,加之学生程序主要是中小程序,可作为主观题测评领域的一个研究出发点和突破点。 本文研究学生程序作业的计算机辅助评价。在本工作室研发的编程学习可视化环境基础上,通过扩充基于程序作业标准答案模板的测评技术,实现对学生程序作业的计算机辅助评价,既有利于程序设计语言初学者更快更好地理解掌握程序设计的基本概念和方法,也有利于减轻教师批改程序作业的负担,增强学生程序测评工作的客观性、准确性和实时性。 本课题的主要研究目标是程序测评系统的设计和实现。在该系统中,采用源码特征比较的方案,将学生程序与存储在题库中的模板程序集依次比较,然后根据基于相似度概念的评分规则得出对学生程序完成程度和质量的测评结果。在学生程序与模板程序比较前需要对二者进行一系列信息提取和结构转换工作。输入源程序后通过语法分析主要建立起对程序控制结构的信息树,称作扩展语法树(EST);在EST的基础上通过对数据流向的分析,建立起扩展流图(EFG)作为过渡;在EFG基础上通过对程序基本块的划分,对各子块的控制和数据依赖关系分析,以及使用一些规范化规则等技术,得到了程序特征属性图(PFSG)。之后的程序评价过程是基于程序对等结构和程序等价结构的概念,对学生程序和模板程序的PFSG进行的。 本文的内容组织如下:第一章介绍自动测评相关技术背景、现状和意义,并介绍本课题的研究点;第二章介绍整个测评系统的总体架构和处理过程;第三章提出程序对等结构和等价结构的概念,并分析了需要从程序中提取的信息;第四章讨论测评系统中数据结构的选用;第五章介绍表达式、条件语句和循环语句等程序结构规范化技术;第六章介绍变量跟踪技术和比较评分技术;第七章以一个实际的例子说明如何使用模板程序测评学生程序的整体过程。