沈涵飞
(苏州工业园区服务外包职业学院,江苏 苏州 215123)
在线评测系统在高职程序设计实践教学中的应用
沈涵飞
(苏州工业园区服务外包职业学院,江苏 苏州 215123)
为提高程序设计课程的教学质量,文章构建了一个基于在线评测系统的练习平台,并针对高职学生改进了应用方式,同时将评价的重点放在了学生运用计算机解决问题的能力上。实践表明,在线评测系统的使用有效提高了教学质量。
在线评测系统;核心笔记;程序设计教学;计算思维
程序设计类课程是高职院校计算机相关专业的核心课程,这类课程的实践性很强,实践教学在整个课程中占据了核心地位。以往教学过程中过于注重语句、语法和一些细节,基本上是以高级语言自身的体系为脉络展开的,没有把逻辑与编程解题思路放在主体地位上[1]。学生普遍反映课程枯燥难学,解决问题的能力并没有明显提高,不适应社会对软件开发人才的需求。
高质量的教学要充分考虑课程本身的特点和学生的特点来展开。2010年首届“九校联盟(C9)计算机基础教学课程研讨会”上,明确提出计算机基础教学的核心任务是计算思维能力的培养[2]。教育部高等学校计算机基础课程教学指导委员会提出了大学计算机基础教学4个方面的能力培养目标:对计算机的认知能力、应用计算机解决问题的能力、基于网络的学习能力、依托信息技术的共处能力[3]。程序设计类课程的主要目标就是培养学生应用计算机(体现为编写程序)解决问题的能力。
另一方面,高职学生和本科学生相比,在理论学习方面的能力和积极性有较大的差距。针对这一特点,在教学过程中,需要合理设计练习内容,以问题求解为中心,语言语法围绕问题逐步引入。
根据课程和学生的特点确定的新的教学方式以程序设计为主线组织教学,在问题求解过程中理解高级语言的语法,以培养学生的计算思维(问题求解能力)为核心。这种教学方式的实施离不开练习平台的支撑。实践表明,将最初用于高水平编程竞赛的在线评测系统应用到程序设计课程的实验教学是一种可行并有效的方式。
传统方式存在两大问题:(1)教师评阅纸质作业需要耗费大量的时间和精力;(2)反馈周期较长,导致学生的学习兴趣逐渐减退,不利于学生学习积极性的发挥。把在线评测系统引入程序设计课程的教学可以有效地解决这两个问题。
在线评测(Online Judge,OJ),是基于Web的服务器端判题系统。用户注册后,可以根据题目在线提交多种程序(C,C++,JAVA,Pascal,Python)源代码,系统对源代码进行编译和执行,采用黑盒测试,通过预先设置的测试数据来检验源代码的正确性。
在线评测系统最先应用于ACM-ICPC国际大学生程序设计竞赛和信息学奥林匹克竞赛的自动判题和训练中,现已逐步应用于本科院校高级语言程序设计、数据结构与算法分析等课程的实践教学中,并取得了较好的效果[4]。
在实践过程中,采用的是HUST Online JudgeSystem,这是由华中科技大学毕业生王良晶等开发并在2008年底以GPL协议进行开源的在线评测系统[5],该系统基于LAMP平台,提供了使用Ubuntu的LiveCD,用户无需安装即可使用其完整功能,并可以图形化方式完成系统安装,降低了使用门槛。基于此系统,文章搭建了C/C++/JAVA程序自动评测系统,网址为http://learn.siso.edu.cn/JudgeOnline。
4.1 在线评测系统的适应性改进
高水平程序设计竞赛和高职程序设计实践教学的目的和参与者存在很大差别,要充分发挥在线评测系统的作用还需要针对课程和学生特点进行改进。笔者采取了下列措施使之能更好地服务于课程的教学:(1)大幅度增加了基础题目的比重,让学生能够花较少的时间完成大多数练习,增强学生的信心;(2)创建套题,增强题目之间的关联性、循序渐进,给学生提供更多的台阶,鼓励学生自主学习;(3)充分利用Web的特点,在题目中尽可能配图,增强系统对于90后学生的亲和力,让学生乐于使用;(4)对于难度较大的题目,通过在题目中给出提示、线索、部分代码等方式,降低学生完成的难度,减少学生的挫败感。
4.2 核心笔记(Key Note)提高解决问题的效率
为配合在线评测系统在教学中的使用,提高学生解决问题的效率,克服学生的畏难情绪,文章精心设计了核心笔记(Key Note)。从形式上看,核心笔记仅是一张A4纸。
核心笔记的内容凝聚了程序设计课程所有的核心知识点和最常用代码,课程的次要内容只提供线索,在需要的时候,学生可以依据线索在互联网上查找,这也有助于培养学生的网络学习能力。
提交到在线评测系统的程序可以划分成类型声明、输入、数据计算和输出4部分。在核心笔记中,对常用的声明、输入、输出归纳成表格供学生参考,这样可以避免学生在这些部分出现错误,有利于学生将精力集中在问题求解的核心部分—数据计算。
核心笔记还将实验题目中最常用到的代码设计成模块,学生可以运用这些模块来解决较复杂的问题,这也有助于学生在实践中体会结构化程序设计的核心—函数和模块划分。
4.3 教学内容和顺序的调整
新的教学模式需要对传统的教学内容和顺序进行调整。在新的教学方式下,程序设计课程的上半学期以实践课为主,课程重点放在讲思路,学生只需理解和掌握核心笔记中极为有限的内容,更多的是鼓励学生运用知识解决问题,培养计算思维。
通过半个学期的学习后,学生的计算思维和问题求解能力得到了有效的提高,在此基础上,下半学期的课程实现了理论课和实验课并重,逐步引入了程序设计语言的更多语法和细节,介绍了同一问题的不同解决方式。学生的感性知识有了足够的积累,对于理论知识的接受度也就大大提高。
4.4 评价方式的转变
优秀的评价机制能够点燃学生的学习热情,激发他们的创新欲望。传统的实验教学方式很难准确评价每个学生的成绩,这也在一定程度上影响了学生的积极性。
在采用新的实验平台后,尽管学生完成实验的状况一目了然,系统可以直接生成Excel成绩单,但并没有简单地据此来确定学生的实验成绩。如果直接依据系统生成的成绩单作为实验成绩,很多学生就会抄袭其他同学的作业,并不自己独立去完成。这样的成绩既缺乏公信力,也无法促进学生自主学习。
笔者尝试了探索新的考试方式。现在采用的考试主要考查运用计算机进行问题求解的能力,运用计算机主要体现为使用编程语言,也可以借助于计算器和Excel等其他工具。考试内容包括15~20个问题,如求1~n的平方和、计算给定区间内素数的个数、韩信点兵等。每个问题给出多组输入,要求学生运用计算机填写输出结果。很多题目在较为简单的情形下,笔算或者利用计算器就能获得答案,这也有助于学生理解计算思维,为编写程序进行问题求解提供了台阶。考试采用笔试方式,提供了纸质试卷,题目类型全部是填空题,学生可以借助于不联网的计算机答题。
考试不能携带教材,但为了避免部分学生由于基础掌握不够好,出现完全无法答题的情形,允许学生携带核心笔记。学生要获得高分,就需要踏踏实实地完成尽可能多的问题。考试次数也从一次考试变为多次考试,只要学生愿意投入时间,就可以不断提升自己的成绩,有利于充分释放学生的潜力。
采用基于在线评测系统、以问题求解为核心的练习平台后,具有以下效果:(1)学生真正成了课程的主体,主动解决问题;(2)实现了教师角色的转变,从传统的向学生传授知识转变为协助学生解决问题;(3)学生提交作业后,能够获得及时反馈,有利于培养学生的兴趣;(4)学生可以实时看到班级同学的完成状况,形成了你追我赶的学习氛围;(5)有利于尽早发现学习有潜力的学生,进行有针对性的培养;(6)构建了开放、自主学习的实验环境,学生可以在课外通过网络访问,不再受时间和地点的约束。
基于在线评测系统的练习平台除了用于程序设计的教学外,也用于高职学生软件设计与开发竞赛的培训,两者实现了无缝衔接。
在采用了基于在线评测系统的练习平台后,教学质量有了大幅度的提高。
本文分析了高职程序设计课程的现状,提出了“以学生为中心、在问题求解过程中适时引入语法”的理念,并以开源的在线评测系统HustOJ为基础构建了练习平台,鼓励学生应用核心笔记来解决问题,将评价的重点放在了学生运用计算机解决问题的能力上。这些措施突出了课程的重点,降低了学习过程中的障碍,激发了学生的好胜心和学习热情,培养了学生的计算思维。在采取了新的教学方式后,教学质量有了大幅度的提高,在蓝桥杯程序设计大赛中取得了优异的成绩。
[1]吴文虎.计算机程序设计基础课程改革[J].中国大学教学,2004(2):13-14.
[2]何钦铭,陆汉权,冯博琴.计算机基础教学的核心任务是计算思维能力的培养[J].中国大学教学,2010(9):5-9.
[3]教育部高等学校计算机基础课程教学指导委员会.高等学校计算机基础教学发展战略研究报告暨计算机基础课程教学基本要求[M].北京:高等教育出版社,2009.
[4]林巧,韩建民.基于在线评测系统的C语言实践教学探讨[J].实验科学与技术,2011(9):37-39.
[5]张浩斌. 基于开放式云平台的开源在线评测系统设计与实现[J].计算机科学,2012(39):339-343.
Application of online judge system on experimental teaching of program design in polytechnic institute
Shen Hanfei
(Suzhou Industrial Park Institute of Services Outsourcing, Suzhou 215123, China)
In order to improve the teaching quality of program design course, we construct the online judge system for higher vocational college students in this paper. We focus on the evaluation of students’ability to solve problems by using the computer. Practice shows that the use of online judge system can effectively improve the quality of teaching.
online judge system; Key Notes; experimental teaching; computational thinking
项目名称:网络课程资源库《C语言程序设计》;项目编号:zyk-006。
沈涵飞(1978— ),男,江苏苏州,硕士,设计师,讲师;研究方向:信息化教学,移动互联网,云计算。