相似度检测技术在计算机实验教学中的应用研究.docVIP

相似度检测技术在计算机实验教学中的应用研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
相似度检测技术在计算机实验教学中的应用研究

相似度检测技术在计算机实验教学中的应用研究 张华 周学权 张淼 郑宏珍 初佃辉 哈尔滨工业大学(威海)计算机科学与技术学院 X 关注成功! 加关注后您将方便地在 我的关注中得到本文献的被引频次变化的通知! 新浪微博 腾讯微博 人人网 开心网 豆瓣网 网易微博 摘????要: 计算机实验教学平台是现代实验教学改革的一个重要内容。然而, 在以往的实验教学模式中, 仅凭教师检查很难发现学生作业是否抄袭。为了解决此问题, 本文将基于数字指纹的代码相似度检测算法应用到程序设计实验教学平台中。实践表明, 学生之间的抄袭现象得到控制, 教师的评判工作量也大大降低。 关键词: 相似度检测; 实验教学; 代码抄袭; 作者简介:张华 (1978-) , 男, 内蒙古自治区通辽市人。硕士学位。讲师。主要研究方向为在线教学、服务大数据。 作者简介:周学权 (1979-) , 男, 广东省惠州市人。硕士学位。讲师。主要研究方向为个性化教学、服务大组合与优化。 作者简介:张淼 (1979-) , 女, 内蒙古自治区包头市人。硕士学位。讲师。主要研究方向为有效教学、密码学及其应用。 基金:山东省教改项目“基于大规模开放在线课程 (MOOC) 推动高等教育教学改革创新模式探索与实践” (B2016Z018) 、基于“MOOC+SPOCs+翻转课堂”的混合式教学模式研究及应用 (B2016Z020) 1 计算机实验教学中存在的问题 在程序设计、数据结构与算法等课程的实验教学中, 部分学生由于没有学好课程或者出于其他目的, 会抄袭其他同学的作业。在这种情况下, 教师在检查学生实验作业的同时, 还要在大量的作业中检查抄袭现象, 这无疑地增加了教师的工作量, 有时甚至很难通过手工操作完成。因此, 实现代码相似度的自动检测, 具有很重要的现实意义。 国外对代码相似度检测的研究起步较早。MOSS, Jplag, SIM和YAP系列等系统都是比较著名的代码相似度检测工具。其中MOSS和Jplag还有支持WEB访问的调用接口。国内也出现了不少具有相似度检测功能的在线实验平台, 如哈工大的高级语言程序设计能力训练平台及考试系统、国防科大的Trustie、浙大的PTA、成都琛石科技的实验楼等。 基于以上对代码相似度检测算法和系统研究现状的分析, 本文结合基于数字指纹的代码相似度检测算法完成代码相似度检测模块的设计与实现。 2 相似度检测需求分析与设计 2.1 需求分析 应用于程序设计实验教学平台中的代码相似度检测模块应符合以下要求: (1) 应当基于一种可靠的代码相似度计算方法; 图1:代码检测流程 ??下载原图 (2) 所基于的算法应易于移植 (可针对不同语言) ; (3) 友好的用户界面, 方便教师对学生在线提交的作业进行抄袭检查; (4) 输出信息中应明确给出所有具有抄袭嫌疑的代码。 只有达到这样的要求, 才能减轻教师的工作量并在有效降低抄袭率的情况下提高实验教学的质量。 2.2 流程设计 代码相似度检测是程序设计实验平台的核心子功能, 教师通过选择学期号、课程号、实验号和编码语言, 对学生上传的源代码进行相似度的检测, 代码检测流程如图1所示。可以看出, 送入相似度检测内核的文件不仅是根据学期号、课程号和实验号获得的代码文件, 有时还要有检测范围选择。同班检测时, 是最小的检测范围, 仅仅针对检测目录下相同班号的代码文件进行检测;同届检测, 对检测目录下的所有文件进行检测;隔届检测, 则需要引入往届学生提交的代码作为参考文件来进行检测。 2.3 算法设计 借鉴论文中的思想, 将数字指纹提取算法作为抄袭检测模块的核心。基于数字指纹的代码相似度检测算法的具体步骤如下: Step 1预处理:对程序源代码进行过滤和替换处理。首先, 把程序中所有的注释、空行、宏命令、与代码语义无关的内容全部去掉。 Step 2分词:将代码中所含的不同类型的符号之间加上间隔符“空格”, 若原来就有空格的则予以保留。 Step 3格式化:将用户自定义的标识符替换成UDEF, 将数据类型替换成DTYPE, 将标准输出printf及内容替换成printf () , 将cou及内容替换成cout, 并且删除代码中词语词之间的空格。 Step 4数值化:将代码重叠切分成长度为g的特征片段, 根据哈希函数计算得到数值集合。假设起始位置为i, 对于长度为g的特征片段, 其哈希值计算公式如下: 其中Ci是该片段中某个字符对应的ASCII码, g是片段长度即指纹粒度, M是一个很大的数。 Step 5指纹化:从获得的数值序列中去掉无效数值集合 (由代码编写规则产生的相同代码片段, 经数值化处理生成的集合) 后, 对有效数值序列进行重叠切分, 并采用最小Hash法获取最终的数字指纹序列,

您可能关注的文档

文档评论(0)

pengyou2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档