APP下载

基于Online Judge 的C语言教学

2016-12-31邹林方郭一鸣周一峰刘超英

移动信息 2016年8期
关键词:用例C语言编程

邹林方 郭一鸣 唐 鸳 周一峰 徐 涛 刘超英



基于Online Judge 的C语言教学

邹林方1郭一鸣1唐 鸳2周一峰1徐 涛1刘超英1

1.成都理工大学,四川 成都 610059 2.四川师范大学,四川 成都 610101

慕课的兴起颠覆了以往的教学模式,它提供了大量免费、共享、高质的课程,使得学习变得随时随地。各高校相继在慕课平台上推出了自己的课程,尝试开展了基于C语言的慕课课程。Online Judge作为本次C语言教学的自动评阅工具,带来了很多便利,但同时也存在一些不足之处。除了介绍Online Judge涉及的相关技术之外,还比较了Online Judge与手动评阅,最后结合Online Judge的不足之处展望了Online Judge的发展方向。

Online;Judge;C语言;MOOC

MOOC潮流下,我院开展了基于C语言的慕课课程,软件工程专业2个班参加了此次的学习。除了传统的课堂教学外,学生还可在MOOC平台上观看由授课老师发布的学习视频,同时完成相应的测验与作业。这些作业不再是知识点的巩固与复习,而是由小的编程作业组成,可以弥补以往学生在编程方面训练偏少的不足。作业的批改不再是老师的手动评阅,而是借助于Online Judge[1]。

经过一学期的学习,Online Judge的确能激起学生的学习兴趣,提高学生的编程能力。

1 Online Judge

Online Judge是在线评判系统,最初用来于ACM-ICPC国际大学生程序设计竞赛。现在广泛用于各高校的程序类课程教学过程中,比较有名的如北京大学的POJ、浙江大学的ZOJ等。

1.1 Online Judge评阅过程

本次MOOC平台C语言的教学也是使用的这种评阅系统。它的评阅过程如下:学生根据题目要求编写程序并提交,如果编译不能通过则提示编译不能通过。若编译通过,则依次通过每个测试用例。用例的评判具体为:将用例中给定的输入作为提交程序的输入,然后运行程序,将程序输出与用例中预先保存的输出相比较,相同则获得本用例相应的分数,否则获得0分。最后将各个用例分数相加获得本题得分[2]。

1.2 Online Judge优缺点

Online Judge是程序自动评阅系统的一种,它具有客观、24小时可用、高效的特点。学生可利用此系统加大编程作业的练习,提高自己的编程能力。及时的反馈可以让学生发现程序中的错误,吸取经验。Online Judge也让老师从繁重的批改作业中解放出来,使老师更有精力关注于课程本身[3]。

然而在一学期的使用过程中,也发现了一些Online Judge的不足之处。

1.2.1 只考虑结果,不关心过程

有的学生投机取巧,直接输出程序结果,完全没有实现过程,自动提交以后,系统仍然返回满分。这种只考虑结果而不关心过程的方式实有不合理之处,同时也无法验证程序实现是否满足某些特殊要求。

1.2.2 没有程序错误程度的区分

编译没有通过,学生就没有成绩,即使程序只是有一点小小的错误,没有和其他错得很离谱,完全不会的学生区别开来,不能反映学生的真实水平。

1.2.3 约束条件多

要想成功通过测试用例,需要满足很多约束条件。比如输入输出的格式问题,学生往往在这方面出现错误,这些约束加大了学习中的阻碍,深深地打击了学习者的积极性[4]。

1.2.4 缺乏抄袭检测功能

作业与测验中的程序答案很容易在网络上找到。学生同时也会因为提交作业截止时间的到来而复制其他同学的代码来应付。抄袭检测可以检测出两份相同的代码,从而端正学生的学习态度。然而聪明的学生会对复制来的程序进行装饰,这也增加了抄袭检测的难度。

2 发展方向

Online Judge这种通过运行程序,依次检测每个测试用例的方式为动态评阅方式,但是一旦程序不能编译通过便不能评分。这在平时的作业练习的过程中没有太大的影响,但是在一些程序竞赛、考试就有关系了[5]。若一个同学的程序几乎是正确的,就因为缺少一个分号导致编译不能通过得分为0。这种情况下就没有体现出学生的真实水平。或许我们可以从静态评阅方式即不运行程序来评阅程序。模拟手工评阅的过程,提供若干参考答案,并设置关键语句,为每个关键语句按重要性给予相应的分数[6]。若关键语句正确则获得相应的分数。可以从程序的相似性来实现这种评阅方式。由于同一功能程序的编写方式有很多种,所以如何减少程序的多样性将是研究的重点。此种评阅方式可以很好地解决只输出结果而获得满分,或因小过失而得0分的问题。从程序的功能来评阅程序是无可置疑的[7]。以上提出的静态评阅方式并不能取代动态评阅方式。因为就算程序含有所有关键语句也不能保证它能正常运行,所以只能是辅助方式。从内容和结果同时考虑的动静态结合的评阅方式将会使程序的自动评阅更为合理[8]。

3 总结

近几年来,MOOC的火热颠覆了以往的教室学习模式,各种课程资源触手可及,程序类课程的学习也十分热门,这势必推动程序自动评阅技术的进一步发展。学习者可以得到更有针对性、更加及时的反馈,使得学习变得随时随地[9]。程序的自动评阅可以使教师从大量作业批改中解放出来,可以使得学习者有更多实战的机会,弥补重理论轻实践的不足。然而目前Online Judge还不够成熟,它还有很多的不足之处,相信不远的未来,一定会有一个更加合理、完善的Online Judge来辅助程序类课程的学习[10]。

[1]梅宏,王千祥,等.软件分析技术进展[J].计算机学报,2009,32(9):374.

[2]王兰.应用于C语言无纸化考试的自动阅卷系统的研究[D].长春:吉林大学,2006.

[3]马培军,王甜甜,苏小红.基于程序理解的编程题自动评分方法[J].计算机研究与发展,2009,46(7):1136-1142.

[4]熊浩,晏海华.代码相似性检测技术:研究综述[J].计算机科学,2010,37(8):155.

[5]邓爱萍.程序代码相似度度量算法研究[J].计算机工程与设计,2008,9.29(17):429.

[6]叶从欢,王光伟,黄兰英,等.MOOC平台下基于混合式学习的C语言教学模式研究[J].科技情报开发与经济,2015,25(22):129-130.

[7]丁凯,张运凯,王方伟,等.基于MOOC平台的C语言与程序设计混合式学习模式[J].中小学电教,2015(10):12-15.

[8]朱鸿鹏.《C语言程序设计》课程教学中的MOOC[J].知识窗:教师版,2015(9):38-39.

[9]廖雪花,厉兰洁,唐思娩.基于OnlineJudge的C语言程序设计实验课教学改革研究[J].计算机教育,2016(6):33-34.

[10]唐晓,李强,陈新,等.基于MOOC平台的C语言课程教学模式研究[J].空军预警学院学报,2015(3):227-229.

C language Teaching based on Judge Online

Zou Linfang1Guo Yiming1Tang Yuan2Zhou Yifeng1Xu Tao1Liu Chaoying1

1.Chengdu University of Technology, Sichuan Chengdu 610059 2.Sichuan Normal University, Sichuan Chengdu 610101

The rise of subversion of the previous teaching mode, it provides a large number of free, shared, high quality courses, so that learning becomes anytime, anywhere. All colleges and universities have launched their own courses in the Mu class platform, try to carry out the C language based on the mu course. Online judge as a tool for the automatic marking of the C language teaching, brought a lot of convenience. But there are also some shortcomings. In this paper, in addition to introduce related technologies involved in the online judge. We also compare the online judge and manual marking. Finally, combined with the shortcomings of online judge and prospects the development direction of online judge.

Online; Judge; C language; MOOC

G642;TP312.1-4

A

1009-6434(2016)08-0108-02

猜你喜欢

用例C语言编程
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
51单片机C语言入门方法
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索