欢迎来到天天文库
浏览记录
ID:31786229
大小:68.30 KB
页数:8页
时间:2019-01-18
《在线评测在c程序设计实验教学中探究和评价》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在线评测在C程序设计实验教学中探究和评价本文针对c程序设计课程实验教学的特点,利用在线评测系统对选课的目标群体开展实验教学研究。探索在实验教学中应用在线评测的教学方法和手段,同时对传统的纸质考试方式进行变革,在课程考试中引入在线评测,并对实施的结果做详细的数据分析和评价。在线评测程序设计实践教学1引言对普通规模的理工科高校而言,每年选程序设计课程的本科生数量大约在2000至2500人次左右,辐射面广,受众面大。无论是C,C++还是Java,程序语言设计课程作为理工类本科生的必修课程,都有一个共同的特点:即“上机第一、实践第一”。仅通过课堂的理论教学是无法理解程
2、序设计的精髓的,也无法培养和锻炼学生的实践能力和创新能力。因此,课程的实践教学环节的重要性凸显,胜过其他任何一门课程。目前程序设计课程在实践教学环节大多仍停留在学生撰写纸质实验报告,编写程序代码,课后由教师进行批改这种传统的教学模式上。这种传统的实践教学模式不仅存在浪费资源,耗时耗力的问题,而且加重了教师和学生的负担。根据一项生物心理学研究显示,人脑类似一个反馈激励系统,在有效的信号刺激下,刺激的频率越快,信息驻留在大脑中的时间就越长,有效及时的信息反馈能够激发人脑的学习潜能和兴趣。而传统模式由于反馈时间周期长,恰恰缺乏了及时的特点,大脑在得不到有效反馈的情况
3、下,对信息的记忆度将大为减弱。因此传统的实践教学模式不利于学生的进一步学习。在线评测的英文名为OnlineJudge,简称0J,是一个基于HTTP协议的服务器端判题系统,用来检测程序源代码的正确性。用户可以在线提交多种程序(如C、C++)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。0J系统最初使用于ACM-ICPC国际大学生程序设计竞赛和信息学奥林匹克竞赛中的自动判题和排名,现广泛应用于世界各地高校学生程序设计的训练、参赛队员的训练和选拔、各种程序设计竞赛以及数据结构和算法的学习和作业的自动提交判断,著名的有RQNOJ
4、、URAL、北京大学OJ等。目前,在线评测模式正在被越来越多的程序设计学习和爱好者所接受。2实验教学的实施利用OJ实施教学首先需要在服务器上建立试题库,题库包括ACM程序设计竞赛试题及与C程序设计课程实验教学内容紧密结合的实际问题。每道题目包含Description(题目描述)、Inputdata(输入数据格式)和Outputdata(输出数据格式)三个部分,学生编写完成后在网页中将源程序提交到服务器,服务器启动编译器编译该源程序并生成可执行程序,以输入数据文件作为输入启动该可执行程序,并将程序的输出结果和标准输出数据文件进行对比,最后系统返回给用户一个状态:
5、完全一致则判为Accept(接受),否则判为WrongAnswer(错误),超时(TimeLimitExceed),超内存(MemoryLimitExceed),运行时错误(RuntimeError)或是无法编译(Comp订eError),并返回程序使用的内存、运行时间等信息。学生能够立即看到服务器反馈的结果,同一段代码可以修改后多次提交。在0J上开展实验教学十分方便,除预先部署题库外,利用0J的AuthorsRanklist(用户排名等级)功能,即按SolvedProblems(做对题数)和Submit(提交次数)的比例对用户进行排序,如图1所示。Autho
6、rsRanklist在一定程序上能较准确地反映学生的实际水平,便于教师掌握学生的实验进度,并有针对性的对个别排名靠后的学生进行实验辅导。对学生而言,提交通过的题数越多,自己的排名越靠前,能让学生获取成功的喜悦感和成就感,进一步刺激他们主动去做更多的题,争取更髙的排名,形成了正反馈激励效应。另一方面由于程序课程覆盖面广,基本上涵盖了理工类的所有本科生,选课的人数众多,采用了0J系统对学生提交的作业进行评判,一方面可以大大减轻教师的工作量,另一方面又可以减少因教师的主观因素使评测尺度不统一,做到高效客观的判题。3扩充平台的功能3.1增加相关考试功能在现有0J功能的
7、基础上,进一步丰富了平台的功能,改进后的0J支持多种语言的判定,有C、C++、Pascal和Java。扩充了考试模块,包括多种题型的设定,有选择、判断、填空和程序设计。增加了防作弊开关功能,如图2中所示,左侧控制菜单中有Switch按钮,用来开启和关闭查看代码和收发邮件功能。考试时禁止考生互发邮件和查看试题源代码。3.2相似代码检测功能在平时的编程练习或考试过程中,两个人可能提交相似的源程序以欺骗系统进行判断。人工批阅过程中,类似的欺骗很容易被发现,但对于机器评测这是一个盲区,0J系统对于代码防抄袭(cheatchecker)方面没有做预防措施。为了解决这个问
8、题,可利用基于最长公共子序列LCS(l
此文档下载收益归作者所有