C语言编程题智能评分系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国内对编程题评分系统的研究起步较晚, 2000 年后一些权威的高校陆续自行开发建立 编程语言的在线测评平台。苏小红教授利用静
态分析的方法进行代码测试,在考虑到代码风 格与软件质量度量的基础上,通过提取抽象语 法树的方式进行程序的形式转换。“李永浩研 究出了基于程序理解的自动评分策略,该策略 利用程序理解的常规过程以及基本策略作为依 据制定编程题机器评分的方案。”[4] 马培军 等人对于程序理解的评分模型做了进一步的研 究,采用系统依赖图作为程序之间的中间表示 形式。在进一步优化后将学生编写的代码与标 准代码的依赖图进行匹配,以此为依据进行编 程题的评分。
C 语言编程题智能评分系统
文/黎青霞 杨乘
• Program Design 程序设计

本文通过对 C 语言编程题智
能 评 分 系 统 的 研 究, 分 析 了 此 评 要 分系统的研究意义及评分方法,
以 及 对 程 序 进 行 分 析, 分 析 其 中
的 词 法、 语 法 并 与 标 准 程 序 模 板
进 行 相 似 度 的 匹 配, 以 期 这 样 的
评分系统可以节约教师的阅卷时
间,可以为 C 语言在线考试系统
提供很好地支撑。
【关键词】C 语言编程题 代码关键字 骨架代 码 相似度匹配 智能评分
1 系统的研究意义
对于当前纸质化的 C 语言试卷或是无纸 化的 C 语言试卷,其包含的题型可以分为以 下几个大类:单选题、判断题、填空题、程序 改错题和便编程题。选择题、判断题、填空题、 程序改错题这几类题型客观性较强,无论是人 工阅卷还是机器阅卷都几乎不存在争议。编程 题主观性较强,在人工阅卷的过程中难免会存 在争议,对于机器阅卷而言,这更是一个难题。 编程题具有很强的灵活性,有的评分系统为降 低系统实现的难度,构建系统时几乎没有考虑 人工阅卷的思维方式,在评判编程题时只考虑 结果分值而忽略过程分值。学生编写的代码运 行结果与标准答案一致,则获得满分,运行结 果与标准答案不同,则判为零分;有的评分系 统虽然考虑了人工阅卷的思维方式,但并没有 很好地与之相契合,过程分值的判断依据不是 很合理。针对当前编程题评分系统的现状,希 望能研究出一个比较合理的 C 语言编程题智 能评分系统,一方面减轻教师的工作量,将以 往用于批改试卷的大量时间节约下来;另一方 面,对于 C 语言这种实践操作性高的学科, 在线考试系统更能贴合其对操作性的要求。许 多学校因评分系统的问题还是会选择纸质化的 考试形式,一个合理的评分系统可以提升在线 考试系统的价值,以更好的达到计算机评判系 统的公平性、情理性,会促进学校对其的使用。
静态分析方法是指不运行需要测试的程 序本身,即无需编译学生编写的代码,仅通过 分析或检查学生编写的程序的语法、结构、过 程、接口等以及与标准答案进行对比给出学生 成绩。该方法会运用软件进行代码的质量度量, 其原理是根据标准代码中指定的一些特征, 如:关键字、骨架代码、标识符长度等,来与 学生编写的代码进行比对,给与分值。但由于 学生编写的代码可能会存在结构的问题或是不 规范现象,采用这种方法搭建的评分系统在应 用时会带来实用性的问题。同时,如果学生编 写的代码有语法错误静态评分方法也无法进行 评判。
动态测试方法指通过运行需要测试的程 序,检查运行的结果与预期结果的差异,并分 析运行效率等性能。这种方法由三部分组成: 构造测试实例、执行程序、分析程序的输出结 果。但学生编写的程序有时要么会出现语法错 误,导致程序无法通过编译;要么会出现语义 错误而导致死循环,得不到程序执行的结果, 最后的评分为零,这样的评分标准不符合教师 人工阅卷的标准。该评分方法还很有可能忽略 学生设计程序题的思路,无法还原学生掌握知 识的真实程度,不利于教师对学生的学习做客 观、合理的评价。
4 拟采取的技术路线
4.1 B/S结构
B/S 结构即浏览器和服务器结构。客户机 上只要安装一个浏览器,服务器安装上数据库, 浏览器就可以通过 Web Server 同数据库进行 数据交互。
4.2 JSP技术
JSP(Java Server Pages)服务器端页面技 术。JSP 通常返回给客户端的是 HTML 文本, 客户端只要有浏览器就能进行浏览。
2 常用系统评分方法简介
当前比较普遍的编程题智能评分系统采 用的评分方法主要分为三类:
(1)软件质量度量方法; (2)动态测试方法;
(3)静态分析方法。 “软件质量度量方法是立足于软件复杂
性的程度和程序的特征来评价学生程序的质 量,从而给学生编写的程序评分。它的劣势在 于分析源代码结构时理解性较差,不能理解程 序的意思,单靠该技术给学生编写的程序评分 很难得到合乎情理的结果。”
现存的国内外编程题的评分系统在一定 程度上实现了机器评阅编程题的目标,但大多 数评分系统的评分思维向人工阅卷的思维靠拢 的情况并不乐观。如果能结合动态测试与静态 分析的方法研究出针对中职学校 C 语言课程 的编程题智能评分系统,并使其评分思维向人 工阅卷的思维靠拢,这样的系统在中职学校的 利用价值是可观的。
4.3 Java编程语言
Java 是一门面向对象编程语言,其程序 员以优雅的思维方式进行复杂的编程。
4 Eclipse开发平台
Eclipse 是 一 种 可 扩 展 的 开 放 源 代 码 IDE。Eclipse 允许在同一 IDE 中集成来自不同 供应商的工具,并实现了工具之间的互操作性。
3 国内外现状分析
国外对编程题评分系统的研究起步较早, “Douce 等人将其发展过程分为三个阶段:早 期的自动评分系统、基于工具的评分系统和面 向 Web 的评分系统。”国外在第一阶段中具 有代表性的评分系统评判 Algol 语言的程序自 动评分系统。该系统通过对程序题进行动态测 试和数值分析等方法,实现了如下的功能:提 供测试数据、记录运行时间和维护一个“成绩 册”。第二代评分系统结合了已经存在的工具 箱和由操作系统和编程环境提供的工具,更重 要的是以命令行或图形用户界面的形式展现出 来,操作者应用起来比较方便。第三代评分系 统最大的特点是面向 Web,同时结合了富有经 验的测试技术和模块。
相关文档
最新文档