程序设计类课程包括理论教学和实践教学两个部分,实践教学结合理论教学内容,组织学生独立完成一定量的编程任务,以提高学生动手能力.而在教学实施过程中,发现学生实践环节抄袭现象严重,有时一个教学班就两三个版本.由于实践教学任务重、学生人数多,仅靠教师人工比对的方法检查抄袭,工作量太大.为减轻教师的负担,提高学生实践水平,本文通过对学生程序类作业的特点及学生抄袭方式的分析,总结了防止学生程序设计任务抄袭的关键在于最大可能地杜绝完全的拷贝和简单的形式上的修改.设计并实现的防抄袭编辑平台能够有效阻止拷贝他人代码,同时通过对提交作业的自动检测,可以发现最常见的抄袭行为.上述工作为程序设计类课程的实践教学提供了必要的教学辅助.
一、学生程序作业抄袭的方式及对策
大多数学生普遍认为程序设计类课程较难学习,因而他们往往通过参考使用外来的资源或者直接拷贝或修改其他同学的程序来完成任务.这是抄袭的最直接原因,而电子资源本身特点也使抄袭更容易实现.
通过对学生提交的程序作业代码分析,发现抄袭主要有两种途径: 一种是电子文档的拷贝; 一种是重新使用外来的资源,如互联网、参考书和上届同学的作业等.
电子文档的拷贝就是将收集到的与问题有关的代码信息拷贝并粘贴过来,作为自己的作业上交,包括整体拷贝、部分拷贝.在教学中发现,有些学生甚至文件名都不变,直接将他人作业上交; 有些学生还对拷贝来的代码做一些简单的修改( 如修改变量名和注释等) 以逃避抄袭检查.电子文档的拷贝在程序设计类作业抄袭中所占比例较大,大约为 80%,因而,有效阻止电子拷贝是提高防抄袭效果的关键.
除了电子拷贝,有些学生利用互联网和参考书等资源,找到与作业任务相似的( 而不是完全一样) 解决方案,对这些资源进行"模仿"并修改以完成任务.与单纯的电子拷贝相比,这种行为是一种再学习的过程,尤其对于初学者,是值得借鉴的学习方法.我们要在教学中防止学生的不劳而获,也就是不了解问题的内在,仅仅是直接的电子拷贝或形式上的修改.
形式上的修改包括[1]: 修改文件名; 更改注释; 增加空行或者改变书写格式; 标识符重命名; 代码段重新排序; 改变表达式中的操作数或者操作符的顺序; 改变数据类型等.
在教学过程中教师有必要采取各种教学手段减少抄袭的发生.为了提高学生完成实验任务的主动性和积极性,在教学过程中主要采取以下手段[2]: ( 1) 美德教育: 通过成功案例引导学生诚实的态度和良好的学风; ( 2) 制定必要的惩罚措施: 让学生认识到抄袭被检查出来后的严重影响; ( 3) 课程任务的设计: 从实验内容的设计入手,让学生感兴趣,同时提供必要的参考资源,让学生知道如何去解决问题; ( 4) 实现过程监督; ( 5) 提交任务后必要的检测.
减少抄袭最根本的方法是让学生自主实践,抄袭检测的根本目的是找到确实存在抄袭行为的学生对象,通过对他们的惩罚以起到威慑作用,进一步督促他们独立解决问题.
对于大多数院校来说,一个教学班至少有 40 个学生,有的教师代几个教学班.如果这个教师要对实验的过程监督并检查抄袭往往力不从心,这个过程可以利用软件手段为教师提供辅助.
二、利用技术手段防止和检测程序代码抄袭
为了避免学生通过邮件等方式传来的代码复制到作业当中,使用专用的防抄袭编程环境,该环境限制从其他编辑器复制粘贴代码的功能.但这种方法仅对电子文档拷贝的抄袭方式起到约束作用,如果学生是逐行输入代码或对输入后的代码做简单形式上的修改,还要做进一步的检测.检测过程分两步进行.
第一步是形式上的检测.其目的是筛选出最常见的直接拷贝和修改文件名的电子抄袭.具体过程如下: 在学生保存作业时,系统将与学生有关的附加信息( 如学号、完成作业时间等) 与作业代码进行加密,这样每个学生的作业都标有本人的"印记".如果不是本用户打开的源程序,在编辑环境中将不能正确解密,看到的代码将是乱码.如果提交了,系统将自动识别出这些异常作业,并自动归类到问题文件夹中.这个过程不但能够检测出抄袭者,还能够同时找到被抄袭者.
第二步是代码级的检测.该过程对提交的程序进行必要的词法分析及语法分析,然后得到描述程序结构特征的标记,之后应用有效的比较算法得到相似的区域进而计算出相似程度,为教师提供参考.目前 Moss[3]和 Jplag[4]提供了程序相似性检测的网上服务,能对学生程序作业进行相似性检测,并快速找出存在抄袭嫌疑的作业对,为教师检测抄袭提供依据[5].
三、防抄袭编辑平台的应用过程
学生和教师通过防抄袭编辑平台进行交互: 学生登录后编辑、编译代码并提交作业.教师查看学生交作业情况,并通过自动抄袭检测报告的结果查看存在"异常"的学生作业,同时教师将批改后的结果反馈给学生.本系统功能图见图1.
1. 学生完成并提交作业.学生以本人信息进入编辑环境,编写代码,整个过程不能拷贝外来的电子数据,以杜绝完全拷贝的抄袭行为.另外,在此平台下打开他人的作业源程序将不能正常显示,以防止直接拷贝他人作业的抄袭行为,如图3 所示.学生完成作业后,选择提交功能,在提交窗口时会提示学生提交作业的题号.选择提交后会在服务器端根据学生选择的题号,自动将学生作业归类到相应的文件夹中,如图2 所示.
2. 教师自动检查作业抄袭.学生提交的作业会自动提交到指定的文件夹中,便于下一步抄袭自动检测.以用 Java 语言编写 GUI 应用程序实现用户登录验证实验题为例,共有 20个学生作业提交.通过运行 Moss 程序代码抄袭检测系统,可以得到每对作业间相似程度情况,并以百分比表示两个代码的相似度量化值( 如图 4) ,这个值越大相似程度越高.如果是90%以上,可确定存在抄袭,20% 以下,可确定没有抄袭,50% - 90% 范围内,需要进一步查看代码以确定抄袭与否.
每对程序都提供相关链接,将相似的代码段用同种颜色加以标识,以便于教师将抄袭代码定位,并提供有效抄袭证据.
3. 教师反馈信息.对于存在抄袭行为的学生,教师可以根据上步提供的证据,按照有关规定惩罚.同时,教师可根据学生作业完成情况进行批改,结果反馈给学生.该系统实现了作业的自动提交与自动归类,每次作业以题目的方式提交到指定的文件夹中.并通过抄袭检测将存在电子抄袭行为的学生作业自动归类到"异常"文件夹中,教师可以方便的从中找出修改文件名、拷贝他人代码的抄袭者与被抄袭者.如果教师想查看学生本次作业的情况,可以在指定文件夹中,依次查看学生此次作业的源代码,并在上面作批示,并将结果反馈给学生.
四、应用防抄袭编辑环境前后教学效果分析
在程序设计类课程中使用防抄袭编辑环境主要从两方面防止程序作业的抄袭行为,提高教学质量.一方面利用技术手段防止最常见的抄袭行为发生,如拷贝外来编辑环境中的代码和修改、编辑他人源文件; 另一方面是当学生提交代码后对提交后的代码进行相似性比对,找到逐行录入和部分修改的抄袭行为.下面从使用防抄袭编辑平台前后两方面进行教学效果分析如下:
使用防抄袭编辑环境之前,教师布置完程序任务后,在指定时间收集学生的作业代码,然后通过比对每两个学生作业查看其抄袭情况.当学生人数较多时,通过人工的方式非常耗时、低效且缺少说服力.
使用防抄袭编辑环境之后,学生在指定时间提交作业代码,作业自动归类在指定文件夹中,经过初步筛选,将直接拷贝他人文件或修改文件名的抄袭代码自动筛选出来,并将与其相关的学生信息及代码放在指定的文件夹中,教师只要打开文件夹即可立即找到这些抄袭者.同时,对于逐行录入他人代码及简单修改他人代码的抄袭行为,借助抄袭检测系统,对每对程序进行相似性比较,较快的找出所有程序集合中每对程序的相似代码段并给出相似程度的参考值.这些结果都留有存档,为下一步确认抄袭提供"证据".
以上述20 名学生一次 Java 程序设计课程实验为例,对两个班级学生同一个实验题目,分别使用和未使用防抄袭环境进行了两组实验,实验结果如表1 所示:
通过对比,使用防抄袭编辑环境从技术层面杜绝了最常见的电子抄袭行为,强迫学生必须自己动手去写代码.然而在写代码的过程中,学生有可能逐字地把别人的作业代码录入到防抄袭编辑环境中,或者录入后做些简单的修改,这些抄袭情况可以通过抄袭检测系统得到较高的相似度,经过教师进一步的核对,加以证实.
通过上述实验可以说明,使用防抄袭编辑环境减少了抄袭的发生,特别是最常见的电子抄袭行为的发生,通过加强和监督学生实验过程,提高了学生编程水平.同时,使用防抄袭编辑环境大大减少了教师人工检测抄袭的工作量,进一步提高了教学效率.
五、结 语
本文设计并实现了基于 Java 语言编程环境的防代码抄袭编辑平台,在这个平台下学生可以编辑代码并编译后提交作业,教师可以检测学生作业的完成情况,并根据检测结果判断学生作业抄袭情况.经过测试,本系统完全防止了拷贝代码及重新给源文件命名的电子抄袭,也可以发现修改源程序的抄袭行为.
在程序设计类课程教学过程中,应用本系统,可以防止最常见的电子抄袭,可以对提交后的作业进行抄袭检测,对有抄袭动机的学生起到威慑作用.同时帮助教师检查学生作业完成情况,方便实现教师与学生编程教学互动,是提高教学效果的有利手段.
参考文献:
[1] Edward J L. Metrics - based Plagiarism Monitoring[J].Journal of Computing Sciences in Colleges,2001,16 ( 4) :253 - 261.
[2] 王春晖,刘东升,张丽萍. 防止学生程序代码抄袭方法研究[J]. 内蒙古大学学报: 自然科学版,2010( 4) : 100 -103.
[3] A. Aiken. Moss: A System for Detecting Software Plagia-rism [EB / OL〗. http: / / theory. stanford. edu / ~ aiken /moss / ,2014 - 3 - 20.
[4] Lutz Prechelt,Guido Malpohl,Michael Philippsen. FindingPlagiarisms among a Set of Programs with Jplag[J]. Jour-nal of Universal Computer Science,2002,8 ( 11) : 1016 -1038.
[5] 王春晖,程金宏,孟繁军,等. 程序代码相似性检测技术在教学中的应用[J]. 计算机教育,2007( 12) :137 -139.
随着信息化时代的发展,计算机对生活的影响力日渐增加,高校学生作为社会人才培养的重点对象,掌握一定的计算机技术是必不可少的。高校应加强对计算机技术教学的改革与创新,提高学生在各个方面的综合素质能力,提高计算机的教学质量,培养出更多对社会对国...
1教学目标高等中医药院校计算机教学的目标,即高等中医药院校计算机教学的根本任务,主要包括:1.1传授现代信息技术发展和社会进步的基本知识及技能离开了知识的传授,教学无法发生和展开,一切教学活动就成无源之水,无本之木,高等教育的教学目的和目...
1分析高等院校计算机教学改革的必要性随着科技信息的蓬勃发展,计算机技术已经成为当前一种必备的应用性技术,为满足这一社会需求,我国大部分高校都开设了计算机相关课程,并将其设置为必修课。在进行计算机课程教学过程中,经常出现计算机教学与其他课程...
随着社会信息化的纵深发展,各行各业的信息化进程都在不断加速。用人单位对大学毕业生的计算机应用能力要求也随之提高,计算机水平已经成为衡量大学生专业素质与能力的突出标志。但高校的计算机教学效果并不理想,与社会的需求仍存在不小的差距。1高校计算...
一、调查背景与目的随着我国社会经济的发展,我国高等教育的教学水平也在不断提高,对外交流日益频繁。基于比较完善的医学教育体制、低于英美等西方国家的留学费用、入学手续简单等优惠条件,越来越多的外国学生来我国学习医学[1]。于是,面向留学生的教学...
信息社会以高速发展的经济和科技为基础,并且以信息的生产和传播为主要特征。在现代信息社会背景下,信息的传输速度加快,而且信息内容十分繁琐,在科技不断进步的同时,也使得传统的通信方式发生了巨大的改变,这对于新时期的计算机人才素质提出了更高的要...
本文主要研究“互联网+”对高校计算机基础教育和研究的影响, 对目前计算机基础教育教学现状进行了分析, 提出了高校计算机基础教育的改革策略, 以满足“互联网+”的需求和发展。...
0引言操作系统作为计算机专业学生的必修课程,是非常重要的一门核心课程。笔者在操作系统教学过程中发现在所有的章节中,进程的互斥与同步是学生最难掌握的部分。本文详细分析了学生在进程互斥与同步学习过程中遇到的常见问题,并提出解决方法。1进程互斥...
以就业为导向的教学模式要求高校计算机教学不断创新,构建以学生职业需求为目标的全新的教学理论体系与实践体系,及时调整课程设置和教学内容,按照实际的工作任务、过程和情境组织教学,形成围绕工作需求的教学与训练项目。计算机是一门实践性极强的学科,...
21世纪,是信息化的时代,是网络化的时代,各行各业的发展都不可避免地需要在网络环境中进行,大学计算机基础教学也应当而且非常有必要在网络环境中开展。基于此,在网络环境中如何做好大学计算机基础教学工作,进而使学生掌握更多实用的、先进的计算机知识...