学生程序自动评测与抄袭检测系统 赵长海 北京航空航天大学 计算机学院 2010-5-9.

Slides:



Advertisements
Similar presentations
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
Advertisements

面向侧面的程序设计 方林博士 本文下载地址:
《程序设计实践》 孙辉 理工配楼104A
计算机网络教程 任课教师:孙颖楷.
ASP .NET 程序设计(C#版) 第二版 机械工业出版社同名教材 配套电子教案
C++面试笔试精要 张立伦 讲师的CSDN博客地址
网页设计师的职业成长规律 主讲:刘万辉 淮安信息职业技术学院.
Tool Command Language --11级ACM班 金天行.
程序设计类课程教学辅助平台 CourseGrading 赵长海
计算机程序设计课程实践和考试方法的改革 —经验、支持工具
赵长海 北京航空航天大学 软件所 高级程序设计语言教学辅助系统 赵长海 北京航空航天大学 软件所
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
《数据结构》课程简介 李武军 南京大学计算机科学与技术系 2016年秋季.
在PHP和MYSQL中实现完美的中文显示
Hadoop I/O By ShiChaojie.
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
Computer Graphics 计算机图形学基础 张 赐 Mail: CSDN博客地址:
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
S 数控机床故障诊断与维修.
第二章 Java语言基础.
单元测试工具XUnit 任课老师:黄武 下午2时20分 25.
《编译原理与技术》 期末复习 计算机科学与技术学院 郑启龙 李 诚 25/12/2018.
实习前你需要知道的 PRESENTED BY Yisa.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
SOA – Experiment 2: Query Classification Web Service
编程作业3:网页正文抽取 (10分).
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
并行程序设计教学辅助平台 赵长海 结题.
微机系统的组成.
$9 泛型基础.
2019/4/20 关注NE官方微信,获取更多服务.
2019/4/16 关注NE官方微信,获取更多服务.
2019/4/ /4/25 学习科研好助手 NoteExpress文献管理与检索系统 北京爱琴海乐之技术有限公司.
2019/4/26 关注NE官方微信,获取更多服务.
实验七 安全FTP服务器实验 2019/4/28.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
PPCA2014.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
入侵检测技术 大连理工大学软件学院 毕玲.
考察点:switch\while\for System.in\Scanner char vs int
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
Presentation transcript:

学生程序自动评测与抄袭检测系统 赵长海 北京航空航天大学 计算机学院

问题的提出  程序设计类课程的要求 实践 ○ 大量练习,通过大量的实践领会程序设计内涵 和思维 考核 ○ 考察学生的动手能力! ○ 而非记概念、背知识点、应付书面考试的学习 模式

问题的提出  面临的问题 1 学生上机练习如何指导和监督? ○ 给予每一个学生及时的指导是不现实的,即使 有助教参与 ○ 学生是否完成了编程作业?结果是否正确?存 不存在抄袭? 国外调查:高达 85.4% 的学生承认抄袭过别人的编程 作业

问题的提出  面临的问题 2 如何考核学生的程序设计能力? ○ 纸质考试的问题: 教师能否在五分钟时间内看出一个程序的正确性? - 能否通过编译 - 运行时错误:数组越界、除零错误、空指针 - 输出结果的正确性 评分的客观性如果保证?

国内高校程序设计课程教学效果 上机考试形式 3 道编程题, 2 个小时内完成 题目来自大一学生的期中或者期末试题

国内高校程序设计课程教学效果

 观察到的现象: 相当一部分学生将程序先写到纸上,然后再 录入 IDE 内 念博士时,我接触过一个来自中国大陆的学生,他叫沈为民,他有 几件时间真的让我惊叹不已,印象最深的是,当我们大家都在计算 机上写程序的时候,只有沈为民不急于上机,他把一行行的程序写 到纸上,反复地看。我们非常惊讶,问他 “ 天啊,你怎么不在计算机 上写? ” 他说, “ 在中国,我们都是这样的,我们没有那么多计算机 啊。所以我们都是写在纸上,然后老师给我们修改程序。 ” 我当时非 常震惊,因为把程序写在纸上的做法,我闻所未闻,更不敢想象。 《世界因你不同 — 李开复自传》第四章 P99

CourseGrading  特点: 学生程序自动评分 ○ 动态测试、运行效率测试、程序特征识别、代 码静态检查、性能分析 抄袭检测 ○ 能够检测出标识符重命名、增加冗余语句、等 价的控制结构替换等 12 种学生常用的抄袭手段

CourseGrading  系统功能 课程管理系统 + 程序设计题型

CourseGrading  应用 作业 ○ 完成 8 次作业,每次作业有 12 道选择题和 3 道编 程题; 考试 ○ 期中考试要求学生两个小时内完成 10 道选择 题, 2 道编程题; ○ 期末考试要求学生在三个小时内完成 20 道选择 题, 3 道编程题 网上答疑等

程序自动评判系统研究现状  WebToTeach  BOSS  CourseMarker  问题: 使用过于复杂

代码相似性研究现状  Jones 总结了学生常用的 10 种抄袭手段,在此基础上,本 文又增加了常量替换和表达式拆分两种手段,根据抄袭所 付出的努力,从易到难依次为: (1) 完整拷贝 (2) 修改注释 (3) 重新排版 (4) 标识符重命名 (5) 代码块重排序 (6) 代码块内语句重排序 (7) 常量替换 (8) 改变表达式中的操作符或者操作数顺序 (9) 改变数据类型 (10) 增加冗余的语句或者变量 (11) 表达式拆分 (12) 等价控制结构替换

代码相似性研究现状  属性计数方法  结构度量 MOSS JPlag SIM YAP3

CourseGrading 自动评判流程  编译能否通过?  运行时错误? 错误原因: ○ 数据越界、除 零 …  输出结果是否正 确? 格式错误 内容错误  抄袭检测

编程题型设计  题目描述编程 根据题目描述,编写一个完整的可编译执行的程 序。学生程序的输入输出必须严格按照题目描述 中的要求。  接口编程 接口编程的灵感来自软件开发过程中的单元测试 (unit testing) 理论,传统的结构化编程语言,比如 C ,学生需要实现一个函数; Java 或者 C++ 这样 面向对象的语言,学生需要实现一个接口或者继 承一个抽象类。  程序片段编程 程序片段编程,即补充源程序中缺失的代码段, 代码段可以是一个表达式、语句、也可以是一个 函数实现。

编程题型设计 —— 题目描述编程题 题目描述

编程题型设计 —— 题目描述编程题 属性信息:便于教 师出题 程序约束:评判系统使用

编程题型设计 —— 接口编程题 题目描述

编程题型设计 —— 接口编程题 录入接口:头 文件或者抽象 类等

编程题型设计 —— 接口编程题  接口编程的灵感来自软件开发过程中的单元 测试 (unit testing) 理论,传统的结构化编程 语言,比如 C ,学生需要实现一个函数; Java 或者 C++ 这样面向对象的语言,学生需 要实现一个接口或者继承一个抽象类。  教师编写的题目的时候,除了题目描述,还 要提供头文件和 main 函数,这种类型的题目 对学生编写程序提供了导向与约束的作用, 一方面可以训练学生对函数或者类有更深入 的了解,此外,数据结构课程可以利用这种 约束作用,限定学生用某种类型的数据结构 编写代码。

编程题型设计 —— 程序片段编程题 题目描述

编程题型设计 —— 程序片段编程题 录入程序体

编程题型设计 —— 程序片段编程题 代码段可以是一个表达式、语句、也可以是一 个函数实现。系统根据代码段前后的调试打印 语句或程序最终的输出结果评判程序的正确 性。一般情况下,程序片段编程类的题目难度 较小,在作业或考试中,可以与其它两种类型 题目搭配。

评判方法  动态测试  运行效率测试  代码特征识别  代码静态检查

评判方法 —— 动态测试  通过运行被测程序,检查运行结果与预期 结果的差异

评判方法 —— 动态测试  输入输出形式 系统执行动态测试时会根据输入输出类型调 用相应的例程 (routine) ,执行待测程序

评判方法 —— 动态测试  运行时错误 崩溃 ○ Linux 下,进程崩溃时都会释放信号,如 SIGFPE 、 SIGSEGV 和 SIGBUS 等 评判系统内安装了信号处理函数,可以在运行时捕捉 学生程序发出的信号,并对这些信号进行解释,方便 学生查找崩溃原因 运行时间过长(可能是死循环)

评判方法 —— 动态测试  输出格式问题 完全匹配 内容匹配 ○ 忽略格式

评判方法 —— 效率测试  效率测试 时间效率和空间效率 ○ 根据占用内存和运行时间的均值来度量

评判方法 —— 效率测试  性能分析

评判方法 —— 程序特征识别  特征识别缘由 例如要求学生在代码中使用 for 循环,而不能 用 while 循环; 使用数组,不能使用指针; 或者采用多进程技术,而不能用多线程  实现方法 采用正则表达式构建 “ 包括 / 排除 (include/exclude)” 规则

评判方法 —— 代码静态检查  特征识别缘由 静态代码检查是指不运行被测试程序而寻找 程序代码中可能存在的错误或评估程序代码 的过程

抄袭检测

CourseGrading 开发经验  性能非常关键  系统安全性  源文件的组织与管理

北航应用效果

系统的发展 学生程序自动评分与 抄袭检测系统 仅支持学生程序自 动评分:动态测 试、性能分析、静 态分析、代码度量 学生程序抄袭检测 课程自动评分与抄袭 检测平台 自动评判:数据结 构、编译技术、汇 编、英文作文 抄袭检测:文档抄 袭检测、互联网相 似文档检索

本系统下载地址: