科研、竞赛与工程实践相融合的算法设计与分析教学方法探讨
2015-11-14李子茂程林辉
李子茂 程林辉
摘要:探讨了目前算法设计与分析课堂存在的问题,提出了科研、竞赛与工程实践相融合的教学方法,并应用于课堂教学、实践教学和成绩考评各环节,旨在通过因材施教,使不同类型的学生根据自己的兴趣和思维方式选择科研、竞赛或工程实践为导向的学习方式,力求让每个学生在兴趣中学习和进步。
关键词:科研教学;工程实践;竞赛融合;因材施教
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)22-0085-02
伟大的算法和程序设计技术的先驱者、计算机科学家Danold E. Knuth指出 “计算机科学即是算法的研究”,算法设计与分析设计不仅是国内外大学中计算机类和信息工程类专业本科生的核心课程,也是计算机学科研究生的学位课程,该课程在本科和研究生阶段的的整个课程体系中都发挥着重要的作用。在科学技术和社会经济水平飞速发展的今天,传统的课堂上讲好经典算法+实践课上做验证性实验的教学方式已无法满足教学效果需要了。在高度信息化的现代大学中,学生的思维和理想被最大程度的激发,一门课程和一个老师要想满足大多数学生的知识需求是很难的。为了能够从容面对学生求知若渴的眼神,为了让这门课在他们当前培养体系和未来的职业生涯中发挥其应有的作用,算法课程的教师们不断的尝试着各种各样的教学改革。文献[1]和[2]提出了基于ACM-ICPC模式的算法分析与设计课程实践教学改革,文献[3]和[4]提出了将翻转教学用于算法课程中,文献[5]提出了面向不同层次学生的算法课程教学改革,还有一些教师将先进的教学辅助手段用到了算法教学的课堂中,例如文献[6]提出了算法可视化的教学辅助平台,文献[7]介绍了蚁群算法的教学辅助平台和教学效果,这些改革措施都在实际教学中取得了很好的效果。但是,单一的改革方式只能优化算法教学的冰山一角,最好的改革应该是立足于学生,因材施教。每个走进大学校园的学生都是寒窗苦读之后飞进象牙塔的天之骄子,没有差生,有的只是不同的兴趣,不同的思维方式。他们有的思维活跃善于创新,有的思维缜密善于逻辑推理,有的思维沉静善于钻研。基于此,针对课堂教学环节、实践课环节和成绩考核环节,本文提出了科研、竞赛与工程实践相融合的三位一体的算法分析与设计课程教学方法。
1 课堂教学环节
由于学时限制,传统的算法分析与设计课堂一般会主讲或只讲一些经典算法,例如:基于蛮力、分治、减治、动态规划、贪心等设计技术的算法,很难抽出时间去讲解新的算法设计技术,例如回溯、分支限界法、随机算法和启发式算法等。若算法课程只关注经典算法和对经典算法的验证,就会令学生成为井底之蛙、固步自封。在现今,算法的使用已经渗透到日常生活中的各种控制系统中,如果脱离具体应用,让学生学习纯算法,就令学生陷入了读死书的困局。因此,针对学生情况的不同,笔者将课堂教学的一些改革措施用到了实际教学中,并取得了较好的效果。
天生“学生”之才必有用,结合学生的不同特点,将学生分为科研型、竞赛型和工程实践性三类。教师不对学生盲目归类,在教学的过程中潜移默化的传授他们科研、竞赛和工程实践的精神,令学生自主选择。为了能够在课堂教学中科研、竞赛和工程实践并重,教师在课堂授课时需要做到如下几点:
1)教师选择经典中之经典的几个算法进行详细讲解,讲清楚算法原理和编程思路之后,着重分析其时间复杂度。
2)为学生讲解最新期刊上发表的(1)中的几个算法的论文,介绍其改进方案,以及在时间复杂度或其它方面的改进,带领学生将该算法学懂学精。
3)选择ACM竞赛中与(1)中几个算法相关的赛题,在课堂上与学生一起分析。
4)用(1)中几个算法实现现实生活中的实际问题,将所学算法第一时间用于工程实践。
5)讲完几个经典之经典算法之后将回溯、分支限界法、随机算法、启发式算法搬入课堂,带领学生在科研、竞赛和工程实践三方面同时强化这些算法。
做到了上述五点,就可以兼顾三种类型学生的需求,令每个学生了解什么是科研,什么是竞赛,什么是工程实践,明白自己适合向哪个方面发展。之后,在实践课阶段选择自己适合的方向进行实验和拓展。那些被排除在经典之经典算法之外的经典算法,可以让学生用翻转教学的方式学习,教师用较短的时间进行答疑。
在科研、竞赛和工程实践并重的课堂教学环境下,每个同学都对算法设计技术有了全面而深刻的认识,虽然比传统课堂中学的算法类型少,但是学的精,教师真正做到了“授之以渔”。
2 实践教学环节
教学环节的全面撒网,是为了每个学生都能找到自己的优势并进行收获。所以实践教学环节应该充分发挥学生的自主性。教师可以将每个实验内容编为三选一的题目。比如一道算法改进题,一道ACM竞赛题,一道路由资源的算法分配题,令学生根据自己的情况自主选择。为了不打击学生的自信心,算法的题目不能出的太难,应该每次实验兼顾各种难度的题型。令学生在攻克一道道算法问题的时候充满信心,逐步引导他们走进算法的海洋。要做到这些,教师需要做如下准备和工作:
1) 精心研读各种算法的算法改进方案,给出学生合理的引导,令他们不要误入科研的死胡同。
2) 收集ACM竞赛试题,并且按算法分类,每次实验都能拿出合适的题目来训练学生。
3) 涉及工程实践的算法源程序通常很长,让学生从读程序开始学起,读懂了之后去改变程序,实现其它的功能。
每个实验完成之后,教师需要认真批改学生的实验,选出优秀的作品,组织学生进行讨论,让同学们在讨论中认可自己,同时学习其它同学的算法思维方式,改进自己的算法设计能力。
3 成绩考核环节
课堂教学环节负责全面撒网,实践环节负责重点收获,成绩考核环节则需要检验学生学习知识的广度和精度,让学生认识自己学习的程度,然后进步。在实际教学中笔者将成绩考核环节分为平时成绩(作业和点到)、实验成绩和期中、期末成绩。实验考察学生的编程能力,期末考察经典算法学习情况,期中考察新算法、竞赛能力和工程实践开发情况。
实验成绩根据实验情况、实验记录和学生口头阐述为依据,要求科研型的学生做完美的推理、缜密的阐述,要求竞赛型的学生快而准,要求工程实践型的学生细心周到克服实际开发中的各种麻烦。期中考试要求学生上交小论文或科学报告来描述自己的设计或创新,期末考试为闭卷考试,现在很多课程都喜欢设置为开卷考试,但是算法设计与分析课程作为一门重要的核心课程,对于计算机和信息专业的学生而言,就像我们小时候背的乘法律,有些内容牢记了,对于日后的学习是可以起到事半功倍的作用的。
成绩评定方式是一种督促的手段,这种手段用好了可以检验学生的能力,提高他们的积极性,用的不好,会打击学生的信心。因为在实验课和期中测试中,都采用学生自主选择方式,因此,要根据学生类型制定评分标准:
1)对于科研型的学生,要根据他们读科学文献的数目、对文献的理解程度和自己改进方案的合理性和实现情况综合评定;
2)对于竞赛型的学生,要根据他们的解题速度和解题方法的灵活性来进行成绩评定,仿照ACM比赛规则,若答错一题则倒扣分;
3)对于工程实践型的学生,需要让他们将一个大问题划分为几个模块,将几个小模块实现之后再整合成一个完整的系统,综合考评他们面对一个具体问题时的分析和解决能力。
学生根据教师提出的评分标准,自然会以考试和考评为督促手段,在科研、竞赛或工程实践中养成好的习惯,提高自己算法设计的综合能力。
4结论
本文提出了科研、竞赛与工程实践三位一体的算法设计与分析课程教学方法,并应用于实际教学中。通过科研、竞赛和工程实践并重,经典算法为导向的课堂教学,令学生可以具备三方面的基本能力和选择能力,并且在后面的实践环节和考核环节中自主选择适合自己的学习方式和知识拓展方式,最终在兴趣中学习算法课程,为学生未来的职业生涯打下坚实的基础。
参考文献:
[1]刘晓璐.基于ACM-ICPC模式的算法分析与设计课程的建设与实践[J].中国教育信息化:基础教育,2015(5):65-67.
[2]李华,赵建平.基于ACM—ICPC的算法设计与分析课程改革[J].计算机教育,2013(7):88-91.
[3]高丽萍,刘亚,彭敦陆等.翻转教学在算法设计与分析中的应用研究[J].计算机时代,2014(11):59-61.
[4]张铭.立足北大,放眼未来——“数据结构与算法”MOOC课程教学实践与思考[J].工业和信息化教育,2014(9):65-73.
[5]陈翔.面向不同层次学生的算法设计与分析课程教学改革探索[J].计算机教育,2014(18):19-22.
[6]周忠,强津培,戴松.算法可视化的计算机辅助教学平台设计与实践[J].计算机教育,2014(16):81-84.
[7]吕小峰,李静,俞素凯.基于蚁群算法的教学辅助系统设计与实现[J].实验室研究与探索,2009(5):49-52.