黄海芳 方丽 余宇华
摘要:该文分析当前高职院校程序设计类课程教学中存在的问题,提出基于竞赛的教学改革:将竞赛的元素融入课程的理论和实践教学中,为学生提供编程实践的评判平台和多元化的考核方式,以此激发学生的兴趣,培养学生的自主学习能力,取得了较好的教学效果。
关键词:竞赛;程序设计;教学方法;
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2015)06-0115-02
程序设计类课程是计算机应用、软件技术等专业的核心课程,也是专业人才培养的重点。高职学生程序设计能力的构建不是一门课程就能够解决的问题,因此,在制定专业教学计划时,各高校往往会根据程序设计能力培养的不同阶段设计一系列程序设计类的课程,如C语言、C++、C#,Asp.net、java等课程,贯穿高职学生在校学习的全过程。程序设计类课程体系也是一个不断发展,调整完善的过程。如果程序设计类课程体系没有跟上信息时代的发展,会直接影响到专业人才的培养,导致走出校门的学生不能适应社会的需求。
1 程序设计类课程教学存在的问题。
程序设计类课程的首要学习目标是培养学生利用计算机这个工具来分析和解决问题,对现实问题进行建模并编程解决实现的能力。传统的程序设计类课程大多是在理论上以程序设计语言自身的体系来展开,教师在讲解知识点过程中,主要以讲解理论或演示程序为主,学生总是被动地听,很少动手操作练习。学生学会的只是基础理论、程序设计的基本概念和基本结构,学过后又不能用来解决实际问题。因此学生虽然学了一定的程序设计课程,但综合应用能力和实践能力较差,部分学生在遇到实际问题依旧无从下手。其次高职学生的基础差,自主学习意识薄弱,在学习程序设计语言课程时过分重视语法、句法和细节等缺点会觉得枯燥难学,会失去兴趣,最终选择课堂上玩游戏、逃课。
程序设计类课程的上机实践主要是帮助学生理解和消化课堂讲授的知识,但传统的实践基本以个人任务为主,很少团队协作,实践的题目往往偏重于编写功能单一的“小”练习,局限于一个或两个知识点,。这些练习题缺少对应的应用场景,单调,难度较低,无综合性,无法发挥学生创造力,严重影响了学生的学习兴趣[1]。
2 競赛推进程序设计类课程的教学改革
程序设计类竞赛是面向大学生的科技创新活动,旨在激发大学生的计算机程序设计兴趣,提高学生综合运用基础知识进行算法设计、分析和编程实现的能力,提高大学生计算机软硬件系统的开发水平,培养大学生的创新能力和团队合作精神,推动大学计算机基础和专业课程的教学改革,加强高校大学生之间的相互交流和学习,重点体现对了软件从业人员的核心技能(问题分析能力、系统设计能力、功能编码能力及缺陷修改能力等)的考核,反映当前软件行业技术发展趋势。当前高职程序设计类的竞赛主要有高职技能大赛、大学生计算机程序设计大赛、由工业和信息化部人才交流中心主办的蓝桥杯程序设计大赛等多种。本文将竞赛融入到程序设计类课程的教学中,营造以赛促教、以赛促学的氛围。
1)在课堂内容增加竞赛元素
在教学内容上,教师将竞赛的题目作为典型案例融入到知识点讲解和课程实践中,竞赛题目的生活化和趣味化可以调动学生的学习兴趣。为了不同层次学生的学习需求,把课程实践内容分成知识型、应用型和综合型。如在C++程序设计课程的教学中,由于该门课程的教学对象为入学新生,而高职院校学生的生源主要来自于普通高中和职业中专,来自职业中专的新生已学过C程序设计,来自普通高中的新生从未接触过程序设计思想,因此在接受C++程序设计的能力上有所差异。对有编程基础的学生来说,简单的课后习题无法满足,他们需要挑战性的题目来训练自己,这时设置有实际应用背景的竞赛题目更能激发他们的学习兴趣。对不同级别题型设置不同的权重,每一级别中又包含若干个题目,学生可以根据自身的情况选择不同级别的题型和题目。
2)实践教学借助评判平台
传统的实践模式下,学生完成实践练习后,一般以教师通过有限次的运行程序来判定程序是否正确,此种测试远远不够,一种输入正确,不等于所有的输入正确,没有一定数量的数据测试,测试不严格。我院开发了一个类似竞赛评判平台,由教师输入实践题目,并给出每个题目的一组输入测试数据和输出测试数据。借助此评判平台后,学生编好程序后,提交源代码后,由机器使用大量的测试数据来评判,然后把相应的评判信息反馈给学生,包括错误。学生可以根据错误提示对程序进行修改再次提交,直到评判成功为止[2]。教师可以在在线排名查看到学生的做题量、提交情况以及出错信息。在分析常见错误案例的过程中,教师讲解程序设计的基本方法、程序测试方法以及程序调试和排错方法,帮助学生理解错误发生的原因和实质,掌握纠错的方法和解决的对策。评判平台功能包括用户管理、题库,在线提交,在线排名,在线讨论等。
教师在网上为学生发布一些经典、实用、有一定挑战性的题目,鼓励学生课外多训练。
突破传统实践课每个学生单独实验的限制,可以按照大赛模式将学生分组,3个人一组,共用1台计算机,考虑组内成员能力的差异,可以根据好、中、差的学生合理搭配,3人配合发挥各自的特点共同完成实践,使每个不同程度的学生都能提高编程能力。
每个学生都有一个登录账号,学生也可在课外登录系统进行选题、提交、评测和讨论等自主学习环境,将课堂延续到课外。
3)考核多元化
《国家中长期教育改革和发展规划纲要2010-2020》中指出培养目标和人才理念,要建立科学、多样的评价标准。由于程序设计类课程具有理论性、专业性和实践性较强的特点,只测试学生对理论知识的掌握程度不够,很难体现学生职业能力、团队合作、交流等能力,因此本课程考核采取多元化评价。在手段上由过去只采用单一书面答卷考核拓展到多种手段的综合运用,例如现场问答、实际操作、结果检测。学生课程总成绩由学生自评、小组互评、教师评价和在线评判系统评价共同构成。学生自评可由学生根据完成情况进行自身评价,对自己的学习态度等进行自我评价,反思自己学到了什么,还有哪些不足。小组互评由同组成员评价,包括组内贡献、团队合作精神、学习态度等。教师从出勤记录、学习态度、任务完成结果、能力素养、技能评价、团队协作和小组答辩等多方面评价。在线评判系统从做题量、正确率等多方面评价。
4)组织参赛
为使程序设计比赛取得优异成绩从而吸引更多学生的关注,我院每年组织开展多个级别的程序开发和算法设计比赛(如校级、省级、国家级等)。在每一次校内竞赛前先公布竞赛大纲,结合具体情况制定竞赛活动方案,做好竞赛的宣传、组织、选拔、培训、参赛、奖励等环节[3-4]。校内竞赛后将成绩突出的同学再进行组织重点培训,参加省级及以上的比赛。
3 结束语
总结:基于竞赛的教学方法在我院计算机软件专业的程序设计类部分课程中的实施,收到了较好的教学效果,增强了学生的学习主动性和学生应用相关知识解决实际问题的能力。2014年我院计算机软件专业的学生在多个程序设计类竞赛等奖,尤其在工业和信息化部人才交流中心主办的第5届蓝桥杯比赛上获得多个国家一等奖。今后我们将继续完善评判平台,将此教学方法推广到更多的程序设计类课程中。
参考文献:
[1] 费雄伟.采用ACM竞赛模式改革计算机程序类课程教学探索[J].中国电力教育, 2014(6): 98-99.
[2] 李晔, 卢冰.ACM竞赛平台在C语言程序设计教学中的应用研究[J].中国校外教育, 2013(8): 164.
[3] 姚琳, 汪红兵.程序设计比赛对程序设计语言教学的启发[J].计算机教育, 2015(2): 103-106.
[4]项炜, 陈建国, 苏炳均.以ACM竞赛驱动程序设计类专业课教学改革[J].计算机光盘软件与应用, 2012(19): 253-254.