基于ACM模式的算法教学的探索
2009-09-30何立群,廖慧芬
何立群,廖慧芬
摘要:目前高校计算机专业算法课程教学模式陈旧、效率低。本文给出了基于ACM模式的算法设计教学改革措施和实效。通过参加ACM活动可以对计算机专业学生的算法设计教学起到极大的促进作用。
关键词:ACM/ICP;计算机算法;教学改革;算法设计;实践教学
中图分类号:G642文献标识码:A文章编号:1009-3044(2009)34-9765-02
Exploration of Arithmetic Designing Teaching Based on ACM Mode
HE Li-qun, LIAO Hui-fen
(Jiujiang University, Jiujiang 332000, China)
Abstract: At present, the model of teaching algorithm is obsolete and inefficient in college.Some methods and its experimental results of arithmetic designing teaching based on ACM mode are presented. It will contribute more to the reform of teaching "Arithmetic Designing".
Key words: ACM/ICP; arithmetic of coumpe; teaching reform; arithmetic designing; experiment teaching
高校计算机专业的算法设计课程教学过程中存在着基础教学与实践运用不衔接的矛盾,这个矛盾使得学生学习走向两个极端。本文从ACM国际大学生程序设计竞赛的模式谈起,探讨这种基于竞赛模式的算法设计课程教学改革。
1 ACM竞赛简介
ACM 国际大学生程序设计竞赛ACM/ICPC(ACM International Collegiate Programming Contest)是由国际计算机界历史悠久、颇具权威性的组织ACM学会(Association for Computing Machinery)主办,是世界上公认的规模最大、水平最高的国际大学生程序设竞赛,其目的旨在使大学生运用计算机程序设计理论(包括数学素养、程序设汁语言、数据结构、算法分析等)来充分展示学生分析问题和解决问题的能力。ACM/ICPC被看作在校大学生的一场奥林匹克竞赛,成为参赛选手展示计算机才华的舞台,是著名大学计算机教育成果的直接体现。该项竞赛从1970年举办至今已历31届,本项赛事荟萃了世界知名大学的计算机精英,自1998年以来一直受到IBM公司赞助,并且为包括Microsoft和Google在内的世界各著名计算机公司的高度关注,成为世界各国大学生最具影响力的国际级计算机类的赛事。
中国高校从1996年开始举办ACM竞赛已历时七届,得到国内众多知名高校的积极响应和热心参与,目前更是呈现迅速发展的趋势。由于该竞赛设定一套合理的竞赛排名、挑战规则,提供了一个学习和使用程序设计语言和算法的完整实践模式,让学生以精通编程为荣,形成一个积极向上的自主学习氛围,一些高校已将ACM模式运用到软件基础课程的教学过程中并取得显著效果。
2 基于ACM竞赛的算法设计课程教学模式
算法设计课程是计算机专业核心课程之一,ACM竞赛的核心也是算法设计,通过一些学生赛后总结和参赛学生感受,发现他们处理问题和分析问题的理论水平还有欠缺,这就急需要大力加强《算法设计与分析》课程的传授,将算法设计与分析的课程与ACM竞赛相结合。希望能够通过算法设计与分析课程的传授加强学生的竞赛能力,也希望通过竞赛模式加强此课程的教学。
2.1 算法设计与分析课程教学面临的问题
目前,计算机专业教学有许多众所周之的问题,其主要表现有一下几个方面:
1)教学模式陈旧,理论教学与实践教学学时分配不合理。
传统的“填鸭式”教学已是旧的教学模式,老师传授什么学生就接受什么,这样培养的人才缺乏创新能力和竞争力。而目前很多计算机专业课程属于实践操作性课程,强调学生的实际动手能力,为了加深对理论知识的理解,我们要在教学中强调实践教学过程,理论教学和实验教学的学时分配要作调整,让学生在良好实践训练的基础上,对理论知识的理解更透彻。
2)课内实验过于模式化,难于培养学生的创造性思维。
首先是实验教学内容陈旧,验证性、描述性实验多,创造性、设计性、综合性实验少。其次,实验内容大多脱离实际软件工程过程,更谈不上对实际问题的解决,导致实验效果不好,起不到对学生创新能力的培养。另外,在实验教学指导方法上,教师包得过多,通常是由教师准备好实验环境,编写好详细的实验指导书,设计好实验报告框架,学生只要按照已有的设计和统一的方法完成实验。
3)学生缺乏团队意识。
如今软件的开发往往需要几人、几十人、甚至成百上千人协作完成,任何一个软件人员都不可能掌握所有的专业知识,团队成员如何合理的分工,按照成员各自的特点协作学习,力求发挥团队的最大力量是至关重要的。在我们的教学过程中,这样的团队协作方式学习环节非常少,虽然有部分课程的课程设计环节也采用了分组进行的模式,但在具体的操作过程中由于学生水平的参差不齐,往往有部分学生在团队中只是简单的挂了个名,并没有真正的参与,也就谈不上团队意识和协作学习了。
4)课程考核模式陈旧。
学生的成绩考核,还采用传统的考核模式,考试内容局限于教材中的基本理论和基本知识,缺乏对学生知识、能力与素质的综合考察,考试题型也不尽合理,客观题比重大,综合思考题、案例分析题少,不利于学生综合应用能力的培养和创新精神的形成。另外就是考试形式单一化,在教学过程中理论教学和实践教学是相辅相成的,但在课程考试中往往只有“笔试”而无“机试”,在课程总评成绩的计算中实践部分所占的比重很小,有些甚至没有把它算入考试成绩。这样的考试模式制约了学生实践能力的培养。
2.2 基于ACM竞赛的教学模式
1)任务驱动式教学,创造自主学习模式。
教师把课程内容融化在ACM竞赛题目中,在ACM竞赛的准备过程中,学什么、怎么学都由学生自己决定。他们自己设定学习目标,分析学习内容,制定学习计划,获取学习资源,管理学习过程。为了能够得心应手地攻克大赛题目,队员需要掌握大量的基础知识。虽然有些知识很枯燥,但是结合到攻克的题目中,又是那么的学以致用,队员们常常乐此不疲,直到把每一个知识点都理解透彻。为了攻克这些知识点,队员们采取多样学习方式,可旁听高年级的相关课程,可利用网络寻求直接的经验总结,可钻研参考书目获得理论知识。经历了自主学习过程,选手们常说那些枯燥的离散数学、图论、数值分析等课程,一旦与竞赛内容结合,学习起来就很有动力,也很轻松。当自学变得如此得心应手的时候,很多选手会在一个学期,将三四个学期的课程学习完毕。竞赛的准备过程是学生对计算机科学的基本思想和内涵以及方法的真正体会,是真正的“授之以渔”,而不是“授之以鱼”。
2)在网络上教学。
我们开发基于ACM竞赛的网络教学平台,它是一个提供全面的教学内容和师生交流合作的网络平台,提供大量的竞赛题目,任何人都可以注册ID,在平台上学习算法设计与分析的课程内容,任何人都可以进入此平台进行交流,任何都可以在此平台上进行模拟ACM竞赛。这些平台能够激发学生的学习热情,从而也带动提高本校计算机算法设计与分析及相关课程教学水平,北京师范大学的数据结构课程就借助了这样的平台进行教学。在这个网络平台上,合作学习变得更加广泛,不同学校、班级的大学生,都可以通过论坛交流经验,结交全国各地的高手。当然平台上的交流多限于对算法的理解,最终的代码很少公开。在此平台上确实能够学到课堂上难以学到的知识与经验,在编程和算法上,融汇了很多高校的资源。
3)改革实验教学模式,提高实验教学质量。
我们可以借助ACM 竞赛平台改变传统的由任课教师大包大揽的实验方式,任课教师可以把课程实验任务发布到竞赛平台中,对实验任务的选择可以更具梯度,更贴近工程应用。传统的实验教学模式下学生的实验过程是难于为教师掌握的,实验的结果也无从考证,老师只能从学生提交的实验报告中了解到有限的一点信息,而部分学生可能并没有真正的认真实验,只是简单的抄袭别人的实验报告,因此实验效果也就无法保证。而借助竞赛平台后情况就完全不同了,学生提交的不再是简单的实验报告,而是具体任务的程序实现代码,学生对相应知识点是否真正掌握从他的提交结果一眼就可以看出,通过分析他们提交的代码,教师可以发现问题的关键,及时掌握学生对课堂知识的理解和掌握情况。同时学生也能相互查看各自实验的完成情况,无形中在他们间形成一种互相竞争的状态,激起继续努力的劲头,形成良好的学习氛围。
4)改革考试模式。
考试作为课程教学的一个重要环节,对学生的学习具有明显的导向作用。针对传统考试模式存在的弊端,我们可以借助ACM竞赛平台对部分专业课程考核进改革,提高实验考核成绩在课程总评成绩中的比重,以此来引导学生认真对待实验,切实提高学生的实践动手能力。以往的考试中之所以没有更多的考虑实验成绩,主要是缺乏一个科学可靠的考试平台,特别是对于那些需要应用算法和程序设计的课程,如“高级语言程序设计”、“数据结构”、“算法设计与分析”、“面向对象程序设计”、“编译原理”等课程,根本不具备可操作性,而现在有了ACM竞赛平台就正好填补了这个空白,它使得这些课程的实验考核变得简单可行,考核结果客观可信,对规范我们的考核过程将起到巨大的推动作用。
3 教学改革的意义
1)基于ACM竞赛模式进行算法设计与分析课程教学可以通过网络直接进行,不受时间和空问的限制。
2)在算法设计与分析课程学习中,学生的困难点是不易用算法表达求解问题的思路,不易掌握几大算法的精髓,缺乏系统解决问题的方法,而这些恰恰是ACM竞赛必备素养。将ACM模式应用于算法设计与分析的教学中,强化学生的计算机理论修养和实践能力,学以致用,通过实践来真正掌握各种算法的意义和精髓。
3)增强师生之间的学术交流氛围,通过举办竞赛,鼓励校园形成竞争、交流的学习氛围,让学生在课余时间有自主进行本学科知识钻研的机会和环境。
4)培养学生之间的合作精神,通过组队竞赛,让学生体验团队协作的各个方面,为软件项目团队化的合作要求做好准备。
4 结束语
基于ACM模式的算法设计与分析课程的教学,将理论知识教学和实际应用有机结合,注重编程能力的提高和解题思维能力的训练,引入竞争交流机制,为学生提供了因材施教的途径,激发了学生自主研究性学习的兴趣。通过算法设计与分析课程教学的改革,取得了明显的效果,提高了教学质量和教学水平,对软件开发类课程的教学改革有一定的示范作用。
参考文献:
[1] 何莉辉,梁沧.基于ACM国际大学生程序设计竞赛的学习模式[J].经济与文化,2008(6):95-96.
[2] 周荣辉,郝晓枫,赵宏宇.学生程序设计能力培养的思考[J].吉林大学学报(信息科学版),2005(23):123-126.
[3] 刘汝佳.ACM2ICPC比赛随想[J].计算机教育,2006(3):72-72.
[4] 王磊.ACM2ICPC竞赛中的团队合作[J].计算机教育,2006(3):73-73.
[5] 孙宣东,路璐,明俊峰.从ACM/ICPC看计算机算法设计教学改革[J].广东工业大学学报(社会科学版),2005,(增刊):226-227.