logo资料库

基于程序理解的编程题自动评分方法.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
计算机研究与发展 Journal of Computer Research and Development ISSN 1000—12391CN 1l一1777/TP 46(7):1 1 36—1 1 42.2009 基于程序理解的编程题自动评分方法 马培军 王甜甜 苏小红 (哈尔滨工业大学计算机科学与技术系 哈尔滨 150001) (ma@hit.edu.cn) Automatic Grading of Student Programs Based on Program Understanding Ma Peij un,Wang Tiantian,and Su Xiaohong (Department of Computer Science and Technology,Harbin Institute of Technology,Harbin 150001) Abstract Traditional approaches of automatically grading student programs do not take into account how a student program answers a given programming task,and can not evaluate how close the source code is to correct sol utions.Therefore,a new approach is proposed based on program understanding. A model is implemented based on the combi ning of the common process and basic strategies of program understanding with the thinking mode of manual grading.A set of typical model programs representing the correct way to implementing the programming task are provided to match with a student program.Firstly.the student program and model programs are transformed into an intermediate representation called system dependence graph.Then,program normalization is performed on the system dependence graphs to remove code variations,so as to recognize syntactically different but semantically equivalent constructs.Finally,the normalized system dependence graph of the student program and those of model programs are matched and a mark is given.This approach has been applied to an on—line examination system for the programming language C.Test results show that it can evaluate how close a source code is to correct solutions in terms of syntax and semantics, and it has a high grading accuracy. Key words automated assessment;program understanding;program normalization;program matching;semantic 摘要针对传统的编程题自动评分方法没有考虑学生程序是怎样实现编程任务的,以及不能从程序文 本的语法结构和语义角度衡量学生程序与正确答案的接近程度等问题,提出一种基于程序理解的自动 评分方法.以程序理解的一般过程及基本策略为依据,结合人工阅卷的思维过程,建立评分模型.评分过 程可划分为3个阶段:首先将程序代码转换成系统依赖图中间表示形式;然后,对系统依赖图进行标准 化转换,消除程序表达方式的多样性;最后,匹配标准化后的学生程序与模板程序系统依赖图并根据匹 配结果给出评分.该方法被应用于“C语言编程题自动评分系统”中.实验结果表明:它可以根据学生程 序的语法和语义衡量学生程序实现编程任务的正确程度,具有较高的准确性. 关键词 自动评分;程序理解;程序标准化;程序匹配;语义 中图法分类号TP311 收稿日期:2007一10—29;修回日期:2008-I卜17 基金项目:国家自然科学基金项目(60673035) ˝ • ‰ ˚
马培军等:基于程序理解的编程题自动评分方法 1137 随着学生数目的增加和远程教育的发展.如何 利用计算机准确迅速地评测人的知识能力水平成为 分析及推理寻找学生程序和题目要求之间的异同, 作为评分标准.因此.从需要解决的核心问题及主要 新的研究热点.其中,程序设计语言的自动评分是当 任务来看。编程题自动评分与程序理解是一致的. 前计算机辅助教学领域比较热门的研究方向.但现 程序理解过程一般由3个阶段组成[7]: 有的程序设计语言考试系统的自动评分大多采用客 观题型,而对最能反映学生对程序设计语言应用技 1)分析源程序,将其转化为具有数据流和控制 流信息的抽象中间表示形式; 能的主观编程题却缺少有效的解决办法.如果能实 2)应用变换法则对中间表示形式进行规范化 现编程题的计算机自动评分。不但可以把教师从繁 琐枯燥的手T阅卷工作中解放出来。确保学生成绩 处理,以便降低理解的复杂度; 3)分析规范化处理结果,识别出程序中包含的 更加公正合理,而且可以提供快速的反馈。提高学生 的编程实践能力. 语义及知识信息。然后进行分析与推理,获取程序设 计者的意图. 自20世纪60年代以来,国内外许多学者都致 编程题自动评分中对学生程序的理解,也基本 力于编程题自动评分方法的研究[1].已有的评分系 遵循该过程. 统按照评分方法可分为2类:动态测试方法和软件 1.2编程题自动评分中的难点问题 度量参数分析方法.动态测试方法[21]的基本思想 是:先将源程序编译为可执行文件,然后输入测试数 据集。通过比较运行结果与期望结果给学生程序评 分.软件度量参数分析方法[5卅的基本思想是:基于 软件复杂性度量和程序特征(例如:代码行、变量个 数以及复杂度等)评价学生程序的质量,从而给出评 分.动态测试方法的优点在于它是判定程序正确性 最直接的方法.软件度量参数分析方法的优点在于 学生在考试中编写的程序有着与一般软件产品 不同的特点.如功能简单、大多具有固定的算法和结 构等.这些特点使得理解过程中第3)步的难度大大 降低.然而学生程序也有一些给编程题自动评分带 来困难的不利特点.例如,程序的正确性难以保证、 可执行性差、相对于标准答案程序的实现方法多.这 些特点决定了编程题自动评分除了要解决一般程序 理解系统面临的问题外还要解决以下几个问题: 度量参数容易计算.但这2种方法都没有考虑学生 1)如何证明学生程序语义、知识及概念应用的 程序是怎样实现编程任务的,也不能从程序文本的 正确性. 语法结构和语义角度衡量学生程序与正确答案的接 2)由于各个学生编程风格、解决问题的方法不 近程度. 为了克服以上2种评分方法的缺陷,本文提出 一种从理解、分析程序源代码的角度给程序评分的 同,导致同一题目的实现形式多种多样。从而使得程 序理解变得非常复杂.如何使形式各异的程序映射 到现有的而且有限的解题方法上,并且保证映射的 方法.本文首先分析编程题自动评分与程序理解在 正确性. 任务上的一致性.然后,分析编程题自动评分中的难 点问题.接下来,提出基于程序理解的编程题自动评 3)如何处理错误程序.以什么样的标准进行评 分,才能更加符合人工阅卷的思维过程. 分模型.并论述实现该模型的3个关键技术.最后, 1.3人工评分中教师的思维过程分析 分析实验结果. 教师在人工阅卷评分之前,通常会给每一道编 程题设定多个标准答案.评分过程中,对比学生程序 1 编程题自动评分与程序理解 一\ 和标准答案,根据两者匹配程度给出得分.如果学生 1.1 程序理解 程序理解是通过对程序进行分析、抽象及推理 获取知识的演绎过程[7],在这个过程中需要解决数 据收集、知识组织及信息浏览[8]3个方面的问题.程 序理解的任务是在不同的抽象级别上建立程序的思 维模型。建立从问题领域到程序设计领域的映射集. 编程题自动评分需要从学生程序中抽取必要的数据 信息,并将这些数据以某种形式组织起来,然后通过 程序和任何一个标准答案都不匹配,教师就会分析 该程序是否采用标准答案以外的方法,根据统计,如 果标准答案比较完备,这种情况发生的比例一般小 于5%[9].如果学生程序采用了错误的方法几乎不 能和标准答案匹配,教师一般要检查其中是否包含 题目中要求的知识点,并酌情给分.受到人工评分 “比较过程”的启发,本文通过定义模板程序(即标准 答案)集合,并结合程序理解方法解决编程题自动评 分中的难点问题. ˝ • ‰ ˚
1138 计算机研究与发展2009,46(7) 2 基于程序理解的编程题自动评分模型 while,for,entry等;边的类型有声明依赖、控制依 赖、数据依赖等.具有等价的SIX_;的2个程序具有 等价的语义【l引. 本文在下列定义的基础上解决编程题自动评分 定义3.程序标准化.程序标准化是根据一系列 中的难点问题. 标准化规则对SDG进行语义等价的转换过程. 定义I.结构语义等价.若2个程序P.和P: 定义4.语义等价的转换.如果转换改变了程序 有相同的系统表示,则称P。和P:结构语义等 的计算行为却不改变计算结果,则称该转换为语义 价‘1 0。. 等价的转换. 定义2.系统依赖图.程序P的系统依赖图 使用一系列语义等价的转换可将采用相同算法 (system dependence graph,SDG)…oG一(V,E,f, g)是一个带标记的有向多重图.其中: 且语义等价的程序标准化为相同的SDG. 定义5.程序匹配.程序匹配是将标准化的学生 、,是节点集合,表示程序中的语句和谓词; 程序SDG与模板程序SDG进行匹配的过程.学生 ECV×V是边集合,表示节点间的依赖关系; 程序和模板程序的语义相似度越高,则学生程序的 ,:、厂jS是给节点指定类型的函数; 正确性越高. g:E—T是给边指定类型的函数. 节点类型有声明、赋值、return,if-else,switch, 通过前面的分析,可建立基于程序理解的编程 题自动评分模型,如图1所示: :Program :Normalization:i Student y 5璺‘序 N。r。m∞ali北乒 Program r ./一一 ::Mashing and: Grading : }丫 07 N。S肌D8G1isze4/二 ‘~-¨ /ModeI Prn口ramE|ll 吵SDGs/- f 罗j Fig.1 Model of program—comprehension-based grading of student programs. 图1 基于程序理解的编程题自动评分模型 评分过程可划分为3个阶段: 达形式多样的语句,需要在程序标准化操作中将其 1)将程序代码转换成中间表示形式——SDG; 转换成相同的表示方式.而在Livadas等人提出的 2)对SDG进行标准化转换,消除代码多样化; SDG中,各种选择结构语句以不同的形式表示,各 3)匹配标准化后的学生程序SDG与模板程序 种循环语句表示形式也不同,不能支持这种程序的 SDG并根据匹配结果给出评分. , 标准化操作.为此,我们在原有SDG节点类型的基 3 基于程序理解的编程题自动评分方法 选择结构节点包括selection节点和selector节点, 础上新增加了选择结构节点和循环结构节点类型. 3.1程序的中间表示 用于表示所有的选择结构语句,其中selection节点 表示一个选择结构,selector节点及其子节点表示 为了便于程序标准化操作,本文在2个方面改 一个选择分支.循环结构节点包括iteration节点和 进了Livadas等人提出的SDG[11]的定义. itr—sub节点,用于表示所有的循环结构语句.其中 . 第一,引入新的节点类型.学生可任意使用if, iteration节点表示一个循环结构,itr—sub节点及其 if-else,switch和选择运算符(?:)实现一个选择结 子节点表示循环体. 构,也可使用for,while和do-while中的一种来实 第二,以语法树的形式表示表达式,语法树比传 现循环结构.为了能够识别这些语义等价但语法表 统SDG中用token表示表达式的优点在于树型结 ˝ • ‰ ˚
马培军等:基1:程序理解的编程题自动评分方法 1139 构更便于执行程序转换和匹配. 3.2程序标准化 1)表达式标准化.由于各种运算符的优先级和 结合性不同,导致一个表达式可以用多种等价的形 式表示.表达式标准化可消除这种表达式多样化.利 用运算符的分配律、交换律等属性建立转换规则.这 些规则被反复调用应用于表达式语法树,直到任何 规则都不适用于任何表达式为止. 2)控制结构标准化.程序中通常含有3种控制 结构:顺序、分支和循环.每种控制结构可以用多种 语法表示,导致控制结构的多样化.控制结构标准化 规则,可以用于消除这种多样化. 3)消除冗余代码.包括删除恒等式、删除未被 引用的变量、删除未被引用的赋值语句等. 4)函数调用标准化.实现一个编程任务,程序 的模块结构可以是多种多样的,子函数的个数以及 调用位置都可能不同,给程序理解带来困难.为此我 们提出基于SDG的函数内联算法,把不含递归调用 的函数进行函数内联,将程序转换成一个没有函数 调用语句和子函数的语义等价的程序. 5)变量重命名.2段语义等价的代码中的变量 名可能不同.然而,如果2段代码语义等价,那么对 应的变量的类型和出现频率就是相同的.因此,可根 据变量的类型以及出现频率等信息给变量重命名. 6)重排语句顺序.2段语义等价代码中的语句 排列顺序可能不同.如果两条语句间不存在依赖关 系,则它们可以互换位置,这样的语句被重新排序. 3.3程序的匹配及评分 学生程序与模板程序的匹配分为4个级别:规 模、结构、语句和知识点匹配,按式(1)计算语义相似 度: ’ SemanticSim=A】·SizeS+A2-StructS+ A3·States+A4·Pivots, (1) 其中Sizes,StructS,States,Pivots为4个级别上 匹配得到的相似度,A。,A:,A。与A.分别为这4个相 似度的权值,它们满足A。+.=I:+A3+I:l。=1. 3.3.1程序的规模匹配 首先,根据SDG语句在程序中的作用将其分为 4类:1)循环类语句;2)选择类语句;3)赋值类语句, 包括赋值语句、函数调用语句;4)其他类语句,即不 属于以上3类的语句. 然后,遍历SDG,统计各类语句节点的个数,得 到学生程序规模向量h和模板程序规模向量Ⅵ. 最后,按照式(2)计算规模相似度: SizeSim=1一sqrt(∑((h。一Vt,)/ max(ysj,Yti))2). (2) 3.3.2程序的结构匹配 程序的结构匹配基于以下2个定义. 定义6.结构树.在SDG中提取循环、选择,顺 序结构,生成只包含节点及控制依赖边的树型结构, 并且提取的节点只具有类型而没有表达式. 定义7.匹配节点对.2棵结构树T。,T2的节点 对(口。,矶)是匹配节点对,当且仅当:1)v,与u:具有 相同的符号,即相同的类型;2)口。,u:的父节点是匹 配节点对;3)假设叫。与"tO:是匹配节点对,v。与硼。 是兄弟,忱与撕是兄弟,那么若t,。在硼。前出现, 则u2在∞:前出现;4)u,至多能和T2中的1个节 点匹配,口:至多能和T。中的1个节点匹配. 程序的结构匹配为学生程序结构树S与模板 程序结构树T的匹配.求S与T的最大匹配等价于 求S与T的最大匹配节点对集合.本文将基于动态 规划方法的最长公共子序列算法[1 3】应用于结构匹 配中,算法如图2所示: Fig.2 Algorithm for structure matching. 图2结构匹配算法 ˝ • ‰ ˚
最后按照式(3)计算结构相似度,即最大匹配节 Table l Namer of Model Programs for Each Qu髑tion 点数与模板结构树的节点数的比值. 裹I 为每道编程题提供的模板程序个数 StrcutSim=StructureMatching(S,T)I I丁f. Programming Tasks Number of Model Programs 计算机研究与发展2009。46(7) (3) 3.3.3程序的语句匹配和知识点匹配 结构匹配过程中保留了类型匹配的节点信息, 因此语句匹配可以在结构匹配基础上检查语句、表 达式的匹配情况.通过遍历2个表达式的语法树求 得两个表达式的最大匹配,计算相似度,并将各语句 的表达式相似度保存在对应的SDG节点中.最后, 遍历模板程序SDG获得各个节点的表达式相似度 value。按照式(4)计算语句相似度,即各个节点的表 达式相似度的和与模板SDG节点总数lG£I的比值. StateSim=>:value(口.)/I Q I. (4) 程序的知识点匹配模拟人工评分按照知识点给 分的方法,从学生程序的SDG中抽取出一些关键语 句,然后搜索模板程序SDG,分析是否含有这些关 键语句,并计算相似度. 4实验结果分析 我们将基于程序理解的编程题自动评分方法应 用于“C语言编程题自动评分系统”中,于2006年春 季,进行了2000名本科生C语言考试的试点.为了 验证编程题自动评分的性能,本文将系统自动评分 结果与人工评分和基于动态测试的评分进行比较. 4.1实验中采用的编程题目 共设置了5道编程题,题目如下: 1)从键盘任意输入30个学生的成绩,保存到 数组中,并采用选择排序算法按由高到低的排序结 果输出. .2)从键盘输入一行字符,统计并输出其中单词 的个数. 3)写一个函数,用简单变量作为函数参数,计 算并输出z的疗次方. 4)自己定义一个函数,用字符数组作为函数参 数,以实现和函数strlen相同的功能. 4.2基于程序理解的评分方法的准确率分析 C语言编程题自动评分系统的评分结果见表 2.表中GP表示评分准确率。计算公式如下. GP_(1一些坐甏淼掣)·100%, (5) 其中StandardMark是一个程序严格按照评分准则 评分时应得的分数,TestMark是由评分系统给出的 分数,FullMark是程序完全正确时应得的分数. 11dale2 Aeenraey of Grading Based On Pr雌阳m Understanding ‰ksPeGr雾centage o v:N竺o.签of Program之s。裟No.三。嚣f Pro黧gram£s 从表2可以看出,评分系统评分中平均有 94.9%的程序的评分准确率大于95%,具有较高的 准确性.但仍有一小部分程序的评分准确率低于 95%.导致评分准确率低的原因有2个:一是缺少模 板程序,学生可能用特殊算法实现程序,如果系统中 没有对应的模板程序,则可能得到不合理的低分;二 是遗漏错误,当学生程序与模板程序结构非常相似, 但是某些关键语句表达式错误时,如果严格按照评 分准则评分,可能扣除比较多的分数,然而评分系统 没有指定针对哪些关键语句扣除特定的分数,这可 5)从键盘任意输入一个整数力,输出行是否是 能导致扣除的分数小于严格按照评分准则的扣分. 素数. 4.3与人工评分方法的比较 为每道题目提供的模板程序个数如表1所示. 为了与人工评分进行比较,由教师对这些学生 本文从2000份考生答案中随机抽取200份作实验. 程序进行了人工阅卷评分,评分结果见表3.表3中 ˝ • ‰ ˚
马培军等:基于程序理解的编程题自动评分方法 GP计算公式与表2中相同,只是TestMark表示由 程序合理评分;2)可以判别一个程序是否满足编程 教师给凇的分数.从表3可以看m,人下评分也不可 任务要求. 能做到完全正确或公正,导致错误的主要原因是人 4.5基于程序理解的评分的局限性及改进 丁评分常由于粗心而遗漏了错误. 尽管基于程序理解的编程题自动评分方法在总 Table3 Results of Manual Grading 表3人工评分结果 O 对比表2与表3可以看出。基于程序理解的评 分比人T评分遗漏的错误少,而人工评分在识别特 殊算法方面优于基于程序理解的评分.另一方面,人 工评分可能存在不一致性,而本文评分方法是计算 机按照相同的评分准则进行评分,评分结果更加客 观公正,因此,从总体性能而言,本文评分方法优于 人工评分. 4.4与基于动态测试的评分方法的比较 为了与基于动态测试的方法进行比较,我们使 用哈工大ACM在线评测系统(http://acre.hit. edu.cn)动态测试学生程序.在测试程序中,19.6 0/6 可以通过编译和链接,但是没有结果输出,还有 23.4%输出的运行结果不正确,由于这种程序不能 被基于动态测试的ACM评分系统进行分析,因此, 这些程序都被评为0分.由于本文提出的基于程序 理解的评分方法是对源程序进行静态分析,无需运 行程序,因此可以对没有输出结果和输出结果不正 确的程序评分. 在实验中,我们还发现,第l道编程题的学生答 案中有9个程序没有采用选择排序,而采用了其他 排序算法。由于它们在ACM动态测试中可以输出 正确的排序结果,因而获得了满分.显然这是不合理 的,因为它们不满足题目中采用选择排序算法的要 求.而我们的评分系统可以避免这种问题,由于教师 只提供了选择排序算法的模板程序,这9个程序因 与模板程序的相似度较低,于是只得了较低的分数. 总之,基于程序理解的方法在2个方面优于基 体上优于人T评分与基于动态测试的方法,但是它 仍存在如下局限性,需要进一步研究与解决. 1)对模板程序要求较高.如果不能提供充足的 模板,则会导致较低的评分准确率.解决这个问题的 一种方法是将自动评分系统与题库系统相结合.当教 师发现一个新答案时,可将该程序作为模板程序加入 到题库系统的答案库中.随着系统的使用,可以积累 越来越多的模板程序,评分准确率也会进一步提高. 2)当学生程序与模板程序结构非常相似,但是 某些关键语句表达式错误时,可能出现因遗漏错误 而导致评分准确性降低的情况.解决这个问题的一 种方法是在模板程序中标注关键语句的分数,把关 键语句评分结合进来. 5结束语 本文提出一种基于程序理解的编程题自动评分 方法.将程序理解的基本策略与人工评分的思维过 程结合起来,从程序文本分析、程序匹配角度进行评 分,克服了基于动态测试的自动评分和基于软件度量 分析的自动评分方法没有考虑学生程序是怎样实现 编程任务的缺陷以及人工阅卷评分中的容易漏检错 误的缺陷.同时,这种方法更加符合人工阅卷的思维 过程,而且易于使用,只要教师在服务器端提供考试 程序的模板程序,那么学生在提交程序后,可以实时 地获得程序匹配后的评分结果,既满足了学生急于了 解考试成绩的心理,也解除了教师阅卷的负担,对于 实现无纸考试具有重要的实际应用意义和推广价值. 参 考 文 献 [1]Ala—Mutka K.A survey of automated assessment approaches for programming assignments[J]. Computer Science Education.2005.16(2):83-102 [2]Morris D S.Automatic grading of student’s programming assignments l An interactive process and suit of programs[C] //Proc of the 33rd ASEE/IEEE Frontiers in Education Conf. Piscataway.NJ:IEEE,2003:1.6 [3]Brenda C.Andy K.Andrew I..et a1.On automated grading of programming assignments in an academic institution[J]. 于动态测试的方法:1)可以对不能输出正确结果的 Computers and Education.2003·41(2)I 121-13l ˝ • ‰ ˚
1142 计算机研究与发展2009.46(7) [4]I。i Wenxin,Guo Wei.Peking University oneline judge and its [13]Yang W.Identifying syntactic differences between two applications[J7.Journal of Jilin University·2005.23(2)£ programs[J].Software Practice and Experience.199t.2I l 70-177(in Chinese) (7,:739—755 (李文新.郭炜.北京大学程序在线评测系统及其应刷[J]. 占林大学学撤,2005.23(2):170-177) Is]Mengel S A,Ulans J.Using Verilog I。()GIS(’(,PE to analyze student programs[q/Proc of the 28th Annual Frontiers in Education Conf.Piscataway.NJ:IEEE.1998:121 3-1 218 [6]Ala·Mutka K.Uimonen T。Hannu—Matti J.Supporting students in C++programming courses with automatic program style asMssment[J].Journal of Information Technology Education.2004.3 I 245-262 [7]Exton C.Constructivism and program comprehension strategies[c]l/Proc of the 10th Im Workshop on Program Comprehension(IWPC’02). Washington, I)c z IEEE Computer Society·2002:282—283 [8]Tilley S R,Paul S.Towards a framework for program understanding[C]//Proe of the 4th Int Workshop on Program Comprehension(WPC‘96).Washington,I)c:IEEE Computer Society·1996:19-28 [9]Xu s w.Chee Y S.Transformation-based diagnosis of student programs for programming tutoring systems E3]. IEEE Trans on Software Engineering,2003.29(4):360-384 [io]Qian Shuren. Semantic understanding and language- environment analysis of programming[anguage[J]. Computer Research and Development.1994。3l(7)I 37—42 (in Chinese) (钱树人.程序设计语言的语义理解及语境分析[J].计算机 研究与发展。1994.3l(7):37_42) Ma PeUun.born in 1963.Professor and PhD supervisor.His main research interests include space computation, information fusion.color matching,image processing and intelligent contr01. 马培军.1963年生,教授.博t生导师,主 要研究方向为空间计算、信息融合、色彩匹配,图像处理. Wang Tiantian. born in 1 980.PhD candidate in the Computer Science Department of Harbin Institute of Technology.Her current research interests include software engineering, program analysis and computer aided education. 王甜甜,1980年生.博士研究生,主要研究方向为软件丁程, 程序分析、计算机辅助教学. Su Xiaohong,born in l 966.She has been professor of Harbin Institute of Technology since 2004.She is a senior member of China Computer Federation。 Her main research interests include software bug detection, graphics and [11]I.ivadas P E.Johnson T.An optimal algorithm for the image processing, information fusion and intelligent graph[J]. construction Information Sciences Applications,2000·125(1121314):99一 dependence system of the 13l computation. 苏小红,1966年生,教授.博士生导师,中国计算机学会高级 会员,主要研究方向为软件缺陷检测、图像处理与识别、信息 [1 2]Horwitz S.Prins J。Reps T.On the adequacy of program 融合、智能计算. dependence graph for representing programs[c]//Proc of the 15th ACM Symp on Principies of Programming Language.New Yorkl ACM。1988I 146—157 Research Background The increasing student number and the expanding popularity of distance learning make it necessary that computer aided assessment technology should be used.In the context of programming course.programming is the most common way of evaluating students’problem-solving skills,so that automatic grading of student programs should be included.Therefore,in this paper,a new approach is proposed based on program understanding to automatic grading student programs.A model is implemented based on the research of combining the common process and basic strategies of program comprehension with the thinking mode of manual grading.This approach can evaluate how close a source code is to correct solutions in terms of syntax and semantic,and it has a high grading accuracy.This approach has been applied to an on-line examination system for the programming language C.The system has been used in the C programming course since 2004 at Harbin Institute of Technology.The advantages of using this system are that the students are assessed on what they have to do in practice,rather than on their theoretical knowledge,and that the marking load on the examiner is drastically reduced.The techniques proposed in this paper can also be useful for program understanding,program analysis and software maintenance.Our work is supported by the NationsI Natural Science Foundation of China(No.60673035). ˝ • ‰ ˚
分享到:
收藏