APP下载

“课内外贯穿,竞赛教学融合”的程序设计教学模式

2014-02-09韩建平刘春英胡维华

实验室研究与探索 2014年6期
关键词:评测程序设计课外

韩建平, 刘春英, 胡维华

(杭州电子科技大学 计算机学院,浙江 杭州 310018)

0 引 言

“程序设计”是高校理工科类专业的核心课程之一,其教学目标是使学生掌握程序设计的思想和方法,以及基本的程序设计过程和技巧,具备初步的分析问题和利用计算机求解问题的能力[1]。有效提升课程教学质量,可以为后续学习和工作奠定坚实的基础。

程序设计课程教学存在的主要问题是:教学模式单一、实践能力弱化。课程的教学模式一般以课堂讲授为主,实践教学未得到足够重视。作为深入接触计算机领域知识的入门课程,学生往往难以理解程序设计的思维方式,因而缺乏学习信心,影响兴趣和动力。此外,教师批改编程习题的工作量大,由此也带来反馈滞后,课内课外脱节。我们在教学实践中,以强化实践为核心对教学模式进行了有效的改革。

依托我校程序设计在线学习与评测系统 (HDOJ)的优势,构建了从课内实验、课外自主学习,到训练与竞赛的层次化、递进式的程序设计实验教学模式,有效地促进了课程教学质量的提高。

1 以课程为中心的在线评测系统建设

ACM国际大学生程序设计竞赛(ACM/ICPC)[2]是目前全球公认水平最高、影响最大的编程赛事,比赛题目大多源于实际问题, 具有一定的趣味性和挑战性,已得到国内外众多知名高校的积极响应和参与。ACM竞赛利用在线评测系统(Online Judgment)对提交的程序进行自动、实时评判,包括程序结果的正确性、运行时间、占用内存资源和输出格式的判别,其客观、公正和实时的评价方式,得到学生普遍认可。许多高校开发了基于ACM/ICPC的程序设计在线评测系统[3-6],提供程序设计竞赛与训练的开放式环境,我校在线评测系统是其中最优秀的系统之一。

典型的在线评测系统面向ACM/ICPC竞赛,有助于培养优秀学生的创新精神和团队合作能力[7-11]。但由于题目难度大、评判要求严格,使程序设计初学者入手困难。将面向竞赛的在线评测系统直接应用于程序设计课程实验教学[12-14],教学效果仍然存在较大的局限性。为了让更多学生在编程能力培养方面受益,以强化课程实验教学为目标,不断推进HDOJ系统建设,提供了以课程为中心的Exams、ACM Step、Virtual/DIY Contest等模块,适应不同阶段、不同层次的程序设计训练需求,引导学生从课内到课外,由课程学习至学科竞赛,在平台上训练提高程序设计水平。HDOJ深受受到了广大师生与程序设计爱好者的青睐,注册用户几乎涵盖国内所有重点高校,系统年提交量逐年攀升,不断超越国内外众多同类系统,2013全年提交量突破240万[15],居全球数百个同类系统首位。

2 竞赛融入课内基本训练

程序设计课内实验是课程教学的关键环节,可以帮助学生巩固课堂教学所授基本知识,掌握程序设计的基本方法和常用算法,掌握程序调试的基本技能。我们在教学实践中,将课程教学与竞赛相结合,课内实验以竞赛方式组织实施(见图1)。

考虑到完全ACM竞赛模式评判苛刻且题目难度大,容易对初学者的信心产生不利影响。课程组一方面设计了一系列由简单到综合、循序渐进的练习题。另一方面优化了评判方式,摒弃竞赛模式对输出格式的苛刻要求。使学生从第一次课开始,就可以在HDOJ平台上编写、提交程序,体验“提交成功”的喜悦,并在一次次喜悦中掌握程序设计的思想和方法。

每一次实验课,教师均在平台上布置程序设计实验任务,学生规定时间内完成程序的编写和调试后提交程序源代码,系统服务器端对提交的程序自动评判,实时反馈。成功解题的成就感非常有利于提升学生的学习热情。同时,系统按照一定规则根据完成情况对学生进行排名,激发青年学生的竞争心理,提高学生的学习兴趣。此外,自动评测能够极大减轻教师批改作业的劳动强度,同时快速了解学生学习中的问题,从而使教师可以有更多精力来加强对学生学习过程及学习效果的反馈,构成老师和学生互动的实验教学环境,降低实验组织的难度、提高实验教学的效率。

图1 竞赛融入课内基本训练

3 激励竞赛,引导课外自主训练

在大众化教育的背景下,学生的基本素质和学习能力参差不齐,这使得课外自主学习的重要性突显。只有引导学生根据自己的学习情况在课外大量编程练习,才能到达提升实践与创新能力的目的,而有效吸引学生课外自主训练,激发兴趣、营造氛围是成败的关键。课程组在将竞赛融入课内实验教学的基础上,进一步依托HDOJ构建如图2的实验教学模式。将在线训练应用到程序设计学习的各个阶段,并根据不同阶段的特点,提供适当的功能模块,供学生选择。

图2 依托HDOJ的多层次程序设计训练模式

ACM Step模块实现程序设计实验从课内延伸至课外的第一步,该模块的主要特色是引进游戏的设计思路,吸引学生从游戏走向编程。将程序设计的核心知识点分成若干关,每一关又分为若干节,完成前面的关,才能进入下一关答题,每一关都有一个主题,所有题目均和本章主题相关。ACM Step模块的训练内容与课程教学紧密相关,但其评判方式采用完全的ACM竞赛方式,题目难度也略高于课内基本训练。

为了进一步激发广大学生的程序设计兴趣,并让优秀的学生脱颖而出,课程组从平台和举措上鼓励学有余力和爱好编程的学生参加学科竞赛。HDOJ平台的DIY Contests、Virtual Contests等功能模块为竞赛提供了全方位、多层次开放的训练环境。DIY contest让教师与学生都可以创建自己的在线比赛;Virtual Contests功能使得学生可以选择任意一场已经结束的比赛作为虚拟比赛的题目来源,系统将在比赛过程重现原比赛的提交信息和排名信息,学生一如穿越时空隧道与历史人物同场竞技。

学生在课外自主训练,提升至一定的水平后,可以参加一学期四次的程序设计校内月赛,其中优秀的学生被选拔进入校集训队,进而参加ACM的预选赛和全球总决赛。依托HDOJ平台形成从课内实验到自主训练,再到学科竞赛的创新型人才培养良性循环。

4 课程考核模式改革

程序设计课程考核的根本目的是为了客观、准确地评价学生,促进学生通过参与各种形式的编程实践提高自己的应用能力和创新能力[16]。

我们利用HDOJ在线实践平台这一优势,实施“全面机试,面向过程”的考核和评价方式。学生的每一次上机作业都在线提交,实时反馈,记载成绩。学生最终取得的成绩包含平时、期中和期终,分散在整个学期内。除了平时上机以外,期中和期末考试也全部实行采用直接上机编程的“机考”考核方法,各部分的权重分别为30%、30%和40%,使得学生必须通过平时多上机,多实践,真正熟悉程序设计和调试的各个环节,才能取得好成绩。

5 结 语

我们采用循序渐进的方式将课程实验教学与ACM 竞赛相结合,形成“课内课外贯穿,竞赛教学相互融合”的教学模式,这种模式既拓展了程序设计课程实验教学的时间和空间,又大大激发了学生的学习兴趣,推进了学生创造性思维的培养。

[1] 何钦铭, 颜 晖, 苏小红,等.“程序设计基础”课程教学实施方案[J]. 中国大学教学, 2010(5): 62-65.

HE Qinming, YAN Hui, SU Xiaohong,etal. Implementing Scheme of Programming Foundation Course[J]. China University Teaching, 2010(5): 62-65.

[2] The ACM-ICPC 国际大学生程序设计竞赛主页[EB/OL]. [2013-12-31]. http://icpc.baylor.edu/.

[3] 杭州电子科技大学在线评测系统[ EB/OL].[2013-12-31] http://acm.hdu.edu.cn/.

[4] 浙江大学在线评测系统[EB/OL].[2013-12-31]. http://acm.zju. edu.cn /onlinejudge/.

[5] 谢 迪,李文新,郭 炜.“百练”:一个程序设计技能训练与水平测试平台[J]. 合肥工业大学学报(社会科学版) , 2008, 22(4): 172-175.

XIE Di, LI Wenxin, GUO Wei. “Bailian”:A Platform for Programming Skill Development and Evaluation[J]. Journal of Hefei University of Technology (Social Sciences), 2008, 22(4):172-175.

[6] 华中科技大学在线评测系统 [ EB/OL].[2013-12-31].http://acm.hust.edu.cn/.

[7] 陈叶芳, 李 纲, 陈华辉. 以竞赛培养模式推动理工科程序设计课程改革[J]. 计算机教育, 2010(13):39-42.

CHEN Ye-fang, LI Gang, CHEN Hua-hui . Promoting the Reform of Programming Course in Science and Engineering Through Contests[J]. Computer Education, 2010(13):39-42.

[8] 琚生根,廖 勇,周 刚,等. ACM竞赛与实验教学创新[J].实验技术与管理, 2009(5): 125-126.

JU Shenggen,LIAO Yong,ZHOU Gang,etal.ACM contest and the experimental teaching innovation[J]. Experimental Technology and Management, 2009(5): 125-126.

[9] 皮德常,吴庆宪.国际大学生程序设计竞赛与创新人才培养[J]. 电气电子教学学报, 2008, 30(3):44-45.

PI De-chang ,WU Qing-xian.ACM International Collegiate Programming Contest and Cultivation of Innovative Talent[J]. Joural of EEE, 2008, 30(3):44-45.

[10] 袁国武,赵 杨,赵征鹏,等. 依托程序设计竞赛,提高计算机专业学生培养质量[J] . 计算机教育, 2009(15): 104-106.

YUAN Guo-wu, ZHAO Yang, ZHAO Zheng-peng,etal. Depending on the Programming Competition and Improving the Quality of the Students Majored Computer Science and Technology[J]. Computer Education, 2009(15):104-106.

[11] 郭嵩山,王 磊,张子臻. ACM/ICPC与创新型IT人才的培养[J]. 实验室研究与探索, 2007, 26(12): 181-185.

GUO Song-shan, WANG Lei, ZHANG Zi-zhen. ACM / ICPC and Innovative IT Students cultivating[J]. Research and Exploration in Laboratory, 2007, 26(12): 181-185.

[12] 陈念年, 李郁峰, 李绘卓.基于在线评判系统的程序设计教学[J].计算机教育,2009(15):83-85.

CHEN Nian-nian, LI Yu-feng,LI Hui-zhuo. Programming Teaching Based on Judge Online System[J]. Computer Education, 2009(15):83-85.

[13] 徐红云,江捷斯,周 钒.基于竞教结合的“高级语言程序设计”实验教学改革实践[J].实验技术与管理,2012,29(10):165-168.

Xu Hongyun, Jiang Jiesi, Zhou Fan. Practice of experimental teaching reform of Advanced Programming Language course based on combination of competition and teaching[J]. Experimental Technology and Management, 2012,29(10):165-168.

[14] 陈 志,李梦泽,马 嫣,等.基于ACM 程序设计竞赛的常规教学改革[J]. 电气电子教学学报, 2011,33(6):18-20.

CHEN Zhi,LI Meng-ze,MA Yan,etal. Reform of Conventional Teaching based on ACM Programming Contest[J]. Joural of EEE, 2011,33(6):18-20.

[15] HDOJ在线评测统计图 [ EB/OL].[2013-12-31]. http://acm.hdu.edu.cn/statistic/ submit_graph.php?statistic=4.

[16] 张丽萍,刘东升,王春晖.程序设计类课程考核评价方法的改革与实践[J]. 计算机教育,2010(2):17-20.

ZHANG Liping, LIU Dongsheng. WANG Chunhui, Reform and Practice of Evaluation Method for Programming Courses[J]. Computer Education, 2010(2):17-20.

猜你喜欢

评测程序设计课外
小满课外班
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
攻坡新利器,TOKEN VENTOUS评测
Canyon Ultimate CF SLX 8.0 DI2评测
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
课外实践丰富多彩