高校学生ACM竞赛能力培养与教学方式改革
2013-04-29刘迪
刘迪
摘 要:经过长时间的实践证明,我校整体ACM竞赛水平得到了显著提高,学生在比赛中取得了良好的成绩。新的教学方式和方法打破传统的程序设计和算法设计课程教学模式和考核方式,将理论教学和实践教学充分结合,注重培养学生的分析问题、解决问题、编程能力,引入竞争、讨论、团队机制,激发了学生自主研究性学习的兴趣。
关键词:ACM竞赛;教学方式改革
1 ACM比赛简介
ACM国际大学生程序设计竞赛(International Collegiate Programming Contest,ACM ICPC)是大学级别最高的脑力竞赛,被称为“程序设计的奥林匹克”。根据比赛层次的不同,比赛题目数量为6-10道,可选择编程的语言为C、C++、或Java。在5个小时的比赛期间内,参赛队员须完成对程序的编写和调试。程序完成之后提交裁判运行,运行的结果会及时通知参赛队。比赛对参赛学生的逻辑分析能力、策略制定和脑力方面具有极大的挑战性。大赛提倡在压力较大的情况下,培养学生的创造力、团队合作精神以解决竞赛的问题,从而挑选和发掘世界上最优秀的程序设计人才。
2 教学现状
目前,学校的大部分程序设计类课程分为理论教学和实验教学,理论教学的课时要远远超过实验课程课时。实验课程内容单一,通常是理论课程中的程序案例,缺乏对学生程序设计能力的培养。并且对于算法研究方面的教学比较薄弱,学生只会根据现有程序进行验证或者简单编程,对于规模较大或者涉及算法难度较高的问题,学生就无法解决,缺乏综合设计能力以及独立思考的能力。
现有实验课程的考核往往是采取较为单一的方式,例如考查学生是否完成验证性程序,或者布置考核题目,让学生在规定时间内完成。这种考核方式在一定成都上限制了学生的思维,不利于创新能力的培养。并且考核方式通常以个人为单位,缺乏团队合作精神,不利于培养团队合作性和学生的相互学习和沟通。
由于ACM比赛中涉及大量算法知识,而传统教学中合适的算法教材匮乏。实际学习过程中,多数的算法设计与分析课程配套的教材普遍偏难,公式多,并且详细讲解少,内容枯燥。书中的代码基本为伪代码,对于没有编程基础的学生很难实现,在一定程度上影响学生的积极性。
3 竞赛培养方式改革
为进一步培养大学生程序设计兴趣,提高学生的思考、解决问题的能力。我校开展了以比赛推动、积分选拔、集训培养的基本方式,提高学生ACM竞赛整体水平。
从2012年10月开始,校级ACM大赛设置季赛和集中选拔赛,为喜爱程序设计的学生设置季赛和集中选拔赛,为学生提供一个广泛的学习和交流平台,采用更系统、更规范的方式对参赛学生进行训练、培养。通过系列积分赛选拔出优秀的学生和学生团队,代表学校参加省级ACM竞赛和国家ACM大赛。
校级比赛以季赛和集中选拔赛积分制的形式进行。其中季赛积分以个人积分为主;选拔赛积分以队伍积分为主。学校每年举办三次季赛,时间为每学年第一学期的9、12月份和第二学期的3月份,季赛结束后,根据参赛队员的个人积分进行初步选拔,组成省赛备选队。进入备选队的成员将进行集训培养并参加省赛的选拔赛,集训时间为每年的4、5月份。
在培养过程中,建立兴趣小组,提升学习兴趣。爱因斯坦说过:“兴趣是最好的老师”。没有兴趣必然无法学习好课程。成立ACM兴趣小组,鼓励和组织学生参加,培养创新精神和能力,在实践环节中培养和发现优秀人才。通过周末论坛、赛前讲座、月赛、季赛以及集训等活动,学生不仅得到锻炼,也为参加相关竞赛打下了良好的基础。
强化课堂讨论教学环节引入参与式教学。模仿ACM竞赛模式,将3名学生分成一个小组,让他们自己选择教师指定的题目,给他们充分的时间进行精心准备,让他们就此在课堂上为其他同学进行讲解。在学生分组时,将基础好的学生和基础差的学生编在一组,利用基础好的学生带动基础差的学生学习,增强了差生的自信心。通过课堂讨论锻炼了学生的自学能力,同时也培养了学生的团队合作意识。在实际教学过程中,学生在诸多方面提出了创造性想法,充分展现了自身的思维活力。
长期开展以比赛为依托的教学模式,能够使学生充分了解和适应比赛模式,在比赛中学习和提高自己的能力,扩展知识领域。在比赛过程中,學生可以随时看到自己做了几题,排名如何。这样学生在一个竞赛的环境中上机实验,有一定的紧张感,会充分发挥各自的潜力。通过做题,学生普遍反应计算机动手能力有了很大的提高。曾经枯燥的离散数学、图论、数值分析等课程,一旦与ACM竞赛内容结合,学习起来就很有动力,也很轻松。在考试的方式方面也进行了改革。传统的程序设计课程的考核基本上分为平时成绩和期末考试。这样的考核方式偏重学生的记忆能力,忽视平时的学习过程,很难锻炼学生实践能力。课程的考核应注重算法设计策略的灵活应用及效率分析,而不是死记硬背。课程的考核方式改革如下:课程考核分为三部分,分别为课堂讨论考核、上机比赛模式实践考核和期末闭卷笔试。
课堂讨论考核主要考核学生的学习积极性,包括对提问的回答、学生提问及讨论,给出相应的分数。比赛考核采用开放式方式,学生可以翻书查阅相关资料,考核学生实际编程能力、程序调试和解决问题能力。加大比赛考核的比重,有利于促进动手能力的提升。期末闭卷考试主要考核学生的算法时间和空间的效率分析,侧重工科学生的分析问题能力。
[参考文献]
[1]刘波.算法设计与分析教学探讨[J].高等理科教育,2004(4):78-80.
[2]林小茶.“C语言程序设计”教学方法思考[J].计算机教育,2009(12):24-25.
[3]徐本柱,王浩,胡学钢.ACM/ICPC的教学与实践[J].合肥工业大学学报:社会科学版,2008(6):133-137.