周 铭
(西安科技大学计算机科学与技术学院,陕西 西安 710054)
【摘 要】实践教学是程序设计课程的重要组成部分。详细探讨了在线评测系统在程序设计实践教学中的改革与应用,该系统引导学生自觉和自主地进行程序实践,培养学生的学习兴趣、提高学生的自学和创新能力,在很大程度上提高了教师的教学效率和教学质量。
教育期刊网 http://www.jyqkw.com
关键词 程序设计;实践教学;在线评测
0 引言
程序设计课程的目的是培养学生掌握基本的程序设计思想和方法,并使学生具备一定的程序设计能力。程序设计课程是一门实践性很强的课程,实践教学是其中一个重要环节。程序设计能力最终要体现学生针对问题能够设计、实现和调试程序,要求学生在学习期间能够将实践顺利地进行下去,常见问题是,学生掌握了C++语法的细节,但处理实际问题的能力较弱;偏重考试成绩,动手能力欠缺;而实践不足也常是学习效果不佳的主要原因。
目前,多数高校程序设计课程的实践教学通常是由老师布置题目,学生编写程序,由老师来评判程序的正确与否。这种形式的实践教学既缺乏激励机制,难以引起学生的兴趣;又因为需要人工评判程序,评判结果不及时且带有主观性,难以调动学生的学习积极性。教师手工评阅程序和指导学生实验是一项繁重的工作。
程序设计竞赛的广泛开展和OJ(Online Judge,在线评测)网站的涌现给程序设计课程提供了一种新的实践教学方法。我们在实践课上根据教学的需要选取国内外著名OJ网站上的试题作为例题、讨论题、练习题等,以培养学生独立分析问题、解决问题的能力,以及分组讨论、团队协作、文档组织等能力。学生在线提交程序,OJ网站的在线评测系统实时反馈评判结果。OJ网站上的试题一般都具有较强的趣味性和挑战性,而且评判过程公正、评判结果反馈及时,能引起学生的极大兴趣。在课程的最后阶段,我们通过课程设计强化学生的学习效果,以及检验学生的程序实践能力。
利用程序在线评测系统代替教师人工评测,不仅减轻了教师的工作负担,实现了对学生编写程序源代码评测的自动化,而且促进了学生进行自主、自觉地学习和训练,把枯燥的编写代码变成一种乐趣,帮助学生真正提高编程技能;还实现了作业及时、客观、公正的评测。
1 在线评测系统的实践
1.1 课下自主练习
任课教师可以根据实际情况,提供自己的POJ服务,加入自创的更贴近教学内容的练习题。学生在完成OJ网站上的题目时,程序正确与否完全由评判系统客观地判定。学生编写的程序即使通过了题目中给出的样例输入数据,也未必正确。为了验证程序的正确性,学生必然要多拟一些测试数据进行测试。
ACM/ICPC题目对输出要求是极其严格的,只要程序考虑不全面或者格式不对,程序就不可能通过。这种评判方式保证了评判结果客观、公正。程序提交后,系统将给出程序提交结果。结果信息主要有: Accepted(接受)、Unaccepted(不接受)、Compile Error(编译错误)、Wrong Answer(答案错误)、Runtime Error(运行错误)、Time Limit Exceeded(超时)等。学生在OJ上提交程序时,可以根据OJ系统反馈回来的评判结果反复修改程序,一直到最终收获 AC(Accept,程序正确)。这个过程不仅能培养学生独立分析问题、解决问题的能力,而且每成功解决一道题目都能给学生带来极大的成就感。这种新颖的实践形式能较大程度上引发学生的兴趣。学生在掌握这些程序设计思想和方法后,可以完成OJ上一些简单的题目,并从中获得程序设计实践的快乐和动力。
1.2 作业提交
批改作业对教师而言是一项繁重的工作,尤其是对程序设计课程.通常作业中的语法错误较容易检查,而逻辑性错误则很难发现,需要对程序进行认真的分析,这使得教师的工作量大大增加。现在班级人数都比较多,要做到能够准确快速地判断每一个学生设计出的程序的优劣和是否抄袭,并给出合理的成绩,教师通过人工的方式是很难完成的。教师在网上抽查学生作业,及时发现问题,如代码风格,算法、实现手段等,在线评测系统就能够极大地减少教师花费在检查学生代码的正确性、算法性能、抄袭情况、作业的完成率和正确率统计方面的工作,使教师有更多的时间与学生交流和答疑,教师通过查看学生提交的代码长度、执行时间、占用内存值和提交时间等信息,能快速地发现代码拷贝现象,同时通过观察学生提交的正确的和错误的代码,总结出一般性问题,在随后的课堂上予以有针对性地讲解,以达到更好的教学效果。
1.3 测验考核
现在很多大学开设了OJ系统,大部分学校都把系统放在网站上,同时对公众开放。如:北京大学POJ现在拥有二十万余用户和将近四千道题,每个月都有月赛;杭州电子科技大学的HOJ具有公有和私有两种类型的比赛,还提供DIY contest,可以让用户自己出题和授权来组织一次内部竞赛;天津大学的TOJ具有Virtual Contests(虚拟竞赛)板块,它通过把历年真实的现场比赛过程再现,使用户可以亲身感受到激烈的现场比赛。对于不具备相应硬件条件的学校,POJ也提供网上考试服务。OJ能够方便地进行考核和组织竞赛。将这种考核的平台和形式贯穿于整个学习过程,对学生的全面提升作用显著。
2 对实验环节的改进
实验教学在教学中所占的比例非常大,尤其是在学分制和开放式实验教学的改革形势下,更是培养创新性人才的重要手段。提高学生的程序实践能力是程序设计课程的目标,我们基于以在线评测为导向的教学思路,通过重新设计这门课程的实践教学内容,采用分组讨论、习题讲解、强化课程设计的方式,激发了学生的学习兴趣,改变了传统的教学模式,加强了学生的上机实践能力,拓展了学生的知识面和学习能力,提高了C++的教学质量。
引入在线评测系统重在将程序设计的实践有效进行下去,在学习过程中,培养学生兴趣,建立考试标准之外的学习动机。他们在学习过程中可以互相讨论交流,看到其他人对问题的解决方案,培养起来兴趣,由此引出自信。
基于的教学模式符合教学型本科院校培养满足社会需要、创新型、应用型人才的目标,可以培养团结协作、自主创新、开拓性思维人才,为传统计算机程序设计类课程的教学模式、实验室建设提出了改革思路。
教育期刊网 http://www.jyqkw.com
参考文献
[1]贺利坚,卢云宏.利用博客提交作业的程序设计课程实践模式[J].计算机教育,2014(15):79-83.
[2]林巧,韩建民.基于在线评测系统的C语言实践教学探讨[J].实验科学与技术,2011(06):37-39.
[3]张丽萍,刘东升,王春晖.程序设计类课程考核评价方法的改革与实践[J].计算机教育,2010(02):17-20.
[4]刘晶,吕艳琳,李尤丰.基于ACM竞赛平台的程序设计课程教学模式改革的探索[J].江苏教育学院学报:自然科学版,2010(06):73-75.
[责任编辑:刘展]