赛教结合的程序设计课程改革与实践

2017-09-14 02:47范江波张学辉
教育教学论坛 2017年39期
关键词:程序设计

范江波+张学辉

摘要:针对程序设计类课程实践教学模式单一、教学手法单一、考核模式纸上谈兵等教学实际,分析问题存在的原因,通过程序设计在线评测平台支撑,引入了赛教结合的教学模式,学生学习积极性得到极大提高,学习效果显著,能力明显提升。

关键词:赛教结合;程序设计;在线评测

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2017)39-0126-02

程序设计课程是国内高校理工科学生必修的课程。程序设计是一门实践性很强的课程,无论采用哪种教学语言,课程的主要目的是培养学生的程序设计、实现、测试用例编写及程序调试能力。通过课程的学习,使学生学会用计算机处理问题的思维方法,增强解决问题的编程实践能力,为将来解决工程问题、科学技术问题或者从事软件开发及后继课程的学习奠定基础。为贯彻落实《国家中长期教育改革和发展规划纲要(2010—2020年)》,提高学生自主创新意识和工程实践能力,促进高校就业指导工作,需要加快高等院校计算机类课程的教学创新与改革。赛教结合的教学模式有利于提高学生学习的兴趣和积极性,提高学生运用基础知识来解决实际问题的能力。

一、程序设计课程现状及问题分析

1.学生对课程的学习目的和意义不明确。受课时及教学培养方案所限,授课时急于追赶进度,按照教材的章节顺序将各个知识点逐一教授给学生。学生对于一些知识点似懂非懂,一知半解,甚至许多学生并不明白学习该课程的目的和意义。这样就造成了学生只是机械地学习,而不是自主学习,因而难以将整个知识体系融会贯通,导致应用计算机解决实际问题的能力较弱,大多只停留在应付课程考试或者国家计算机等级考试阶段。

2.实践教学模式单一。现在的教学模式一般都采取先进行理论教学,后进行上机实践。学生对于理论知识消化程度不同,就容易造成学生在理论课中感到语法枯燥乏味,而算法抽象、内容难度大,同样对课程学习难以产生兴趣。引入了Funcode趣味游戏实践教学,虽然在一定程度上提高了学生兴趣,但还需要继续研究,提高学生的应用能力和创新能力。

3.教学方法单一。知识点讲解前后衔接不够,旧知识与新知识衔接不够,学生对于新概念的理解比较困难,讲解例题过于注重算法方面的讲解。课程与学生专业背景结合不紧密,学生学习兴趣不高,学习积极性差。给学生训练的题目缺乏背景描述,公式一目了然,导致遇到实际问题时不知道如何分析。

4.考核模式纸上谈兵。程序设计课程的考核以笔试为主,早期考察语法的选择、填空还占据较大比重。近年来虽然转向了程序阅读(程序填空和程序改错)和程序设计类型,但是仍然是学生纸上写代码。只能根据解题思路对代码进行评判,90%代码都无法上机直接运行。

二、赛教结合的课程改革

目前与程序设计相关的竞赛种类较多,比如美国计算机学会举办的世界上公认的水平最高的ACM国际大学生程序设计竞赛、谷歌的Codejam、微软的编程之美、百度的百度之星、腾讯的编程马拉松等。但是不是所有的学生都能参加上述竞赛,竞赛成为少数人的精英游戏。但是竞赛模式的训练,可以让学生实现在压力情况下编写程序、分析和解决问题能力。

1.赛教结合的引入。传统的程序设计课程,在上机实践环节,大多都是学生自行完成课后练习。在高校扩招之后,每个课堂人数倍增,单纯由老师来逐个检测的方式已经无法满足教学的基本要求。学生编写的程序无法得到即时反馈,学习效果将大打折扣。而现在的程序设计类竞赛,所有的程序代码评判都是机器实时进行的。学生编写完程序后,直接提交到评测机器上,就可以反馈回程序是否正确。反馈回的结果一般有如下几种。①Accepted(AC):代码正确,能够通过全部的测试用例。②Wrong Answer(WA):代码错误,代码不能通过全部的测试用例,部分代码有错误。③RunTime Error(RTE):程序运行出错,意外终止,一般遇到除数为0等情况。④Time Limit Exceeded(TLE):超时,程序没在规定时间内出答案,一般是算法效率比较低,需要进行优化和改进。⑤Presentation Error(PE):输出格式错,程序没按规定的格式输出答案。⑥Memory Limit Exceeded(MLE):超内存,程序没在规定空间内出答案。⑦Compile Error(CE):编译错,程序存在语法错误,编译不过。学生即时查看提交程序的反馈结果,如果错误,可以针对提示有针对性查找,或者寻求老师帮助。而老师,有了在线评测之后,只需要将精力集中到题目和测试用例设计上,不需要对程序代码进行批改。这样工作量可以减少很多,也可以集中查找学生容易出错的地方,并对出错较多的知识点进行讲解。

2.赛教结合的实施。在上机实践课程中,首先利用程序设计在线评测系统(Online Judge,OJ)设置一个比赛,时间可以根据题目数自行设定。题目难度排列随机,学生可以在规定时间内对自己有把握的题目进行编程求解,提交,并且即时得到反馈结果。比赛过程中也可以查看自己的排名。排名会按照正确解答出的题目数目进行排名。正确解题数越多排名越靠前;如果多人解题数量相同,则根据总用时加上罚时进行排名。总用时和罚时由每道题目成功解答的用时加上罚时组成。每道试题用时将从考试开始到试题解答被判定为正确为止,其间每一次错误的运行将被加罚20分钟时间,未正确解答的试题不罚时。比赛结束后,辅导老师可根据学生对问题的解答情况进行有针对性讲解,并对出错的地方进行点评。为了提高学生的积极性,也可以让每个题目第一个解决出的同学对解题思路进行分享,并考虑适当的平时成绩奖励。

三、赛教结合的程序设计课程效果分析

1.学生学习态度的改变。程序设计课程引入赛教结合模式之后,学生课余刷题积极性极大提高。教育不是灌输,而是点燃火焰。只要学生对程序设计感兴趣,有了积极性,经过有针对性的训练,是可以学好程序设计的。上机实践环节的竞赛模式,学生可以实时看到自己的排名。排名靠前的有成就感,排名靠后的有追赶的目标。大家你超我赶,在比拼过程中实现内容的学习和巩固。OJ平台满足了学生“刷题升级”的需求,课程结束之后很多学生因学科竞赛、课程设计、创新实践和毕业设计等“重返”了课程网站。

2.学生的学习效果。将竞赛模式引入日常教学后,程序设计类课程不再纸上谈兵的试卷写代码,采用上机实战模式考核。利用OJ实现了考试过程可视化、竞技化,考试公平、公正、公开得到了学生的认可,考试题目不考死记硬背,题目内容趣味化、石油化得到校内专家的好评。以中国石油大学(华东)2015年秋季学期考试结果来看,总共有2992人参加了考试,最终在2个小时内成功解出6题及以上的占了70%。卷面及格率达到90.5%,及格率相比笔试大大提高。学生解题能力大大提高,十个考试题目最快的1分46秒被解出,8分05秒时十个题目全部被解出。

3.学生能力明显提升。据统计,中国石油大学(北京)计算机系80%的学生课外上机平均12小时/周,每个学生平均累计编程行数达到3000行,达到国内一流大学水平,考试不及格率也下降了67%。因为训练量饱满,学生利用程序设计解决实际问题的能力明显提升。以2015年为例,我校ACM程序设计大赛中的特、一、二等奖获得者9名,全部是按照ACM模式训练的计算机及计算机双学位班的本科生,其中甚至出现了2名2015级的新生。无独有偶,在第四届计算机技能大赛(C程序设计)的一等奖获得者10名同学中,除一名研究生获得了第7名之外,其余9名同学均是按照ACM模式训练的本科生。学生参加“蓝桥杯”全国软件和信息技术专业人才大赛获奖数量和获奖等级明显提高,近几年累计获得省部级奖励300多项。

四、结语

随着计算机技术的发展,程序代码自动评测系统已经成为程序设计课程实践教学的有效辅助。有了程序设计自动评测平台的支撑,赛教结合的教学模式是程序设计课程的有益尝试。这种模式提高了学生学习的主动性、积极性,课后学生投入时间明显增多。程序自动评测极大减轻了教师的工作量,能够让教师们有更多的精力和时间投入到教学研究中去。

参考文献:

[1]茅海军,叶海荣.在线评测在C程序设计实验教学中的研究与评价[J].中国校外教育,2012,(12):162-163.

[2]周健,郑诚.立体化程序设计能力培养方法[J].計算机教育,2014,(4):56-59.endprint

猜你喜欢
程序设计
基于SolidWorks和VBA的电机阶梯轴建模程序设计
高职Java程序设计课程体系建设思考
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
基于LabVIEW的车载充电机控制程序设计
浅谈基于C语言的计算机软件程序设计
高职高专院校C语言程序设计教学改革探索
OBE理念下基于Greenfoot的Java程序设计课程教学改革
模块化程序设计在一体化检定平台中的应用
PLC梯形图程序设计技巧及应用