算法设计与分析课程教学改革
2014-10-21何迎生段明秀周铁王从银
何迎生 段明秀 周铁 王从银
摘 要 算法是计算机的“灵魂”,《算法设计与分析》对软件开发有着不可替代的作用。针对该课程目前教学的实际情况和存在的问题,笔者结合多年教学经验 ,对课程的教学内容、教学方法等进行改革,并且应用项目驱动式教学方法对该课程的实践教学進行改革。
关键词 算法设计与分析 算法 教学内容 教学方法 实践教学
中图分类号:G64 文献标识码:A
算法是计算机的“灵魂”,它决定了计算机软件性能的优劣,因此,《算法设计与分析》是计算机科学与技术、软件工程等信息类相关专业重要的基础课程和核心课程。通过该课程的学习,让学生掌握算法设计的基本策略,理解和掌握算法设计的主要方法,培养学生对算法的复杂性进行正确分析的能力、独立分析和解决问题的能力,为将来从事软件设计与开发或相关领域科学研究工作奠定坚实的基础。
1算法设计与分析课程教学存在的问题
在多年的课程教学过程中,笔者发现有相当一部分学生对该课程的认识不够,学习热情不高,缺乏学习的主动性,甚至对该课程在计算机人才培养中的地位产生怀疑,由于这些问题的存在,从而导致课程教学效果不佳,课程的教学很难达到预期的目标。经过调查和分析,我们发现造成这一状况的原因主要表现为以下几点:
(1)课程对先修课程的要求高:该课程需要学生具有较好的c/c++程序设计、离散数学、计算数学、数据结构等先修课程的基础。学生必须扎实掌握这些课程的基础知识后,才能更好的进行算法的设计及实现。
(2)课程知识点多,内容抽象,难度大: 本课程涉及大量的算法设计技术和方法,例如递归技术与分治法、贪心法、动态规划法、回溯法、分支限界法等,而且都比较抽象,同时灵活性强,因此学生很难掌握。
2改革措施
为了让学生更好的掌握算法设计方法,并且灵活运用这些方法解决实际问题,结合笔者多年的教学实践经验,在教学内容的选择、教学方法的改进、实践教学内容的组织等方面进行了一些探索和改革,并取得了较好的效果。
2.1针对学生的实际情况,合理的选择教学内容
由于受生源质量和前期基础课程学习情况的影响,我校计算机专业学生离《算法设计与分析》课程对理论知识和编程能力的要求有一定的距离,因此选择合适的教学内容对提高教学效果就起着决定性的作用。我们的整体思路是“宁缺勿滥,精讲细讲,举一反三”。
2.2采用多种教学方法,提高教学质量
(1)采用案例教学法,让抽象地算法具体化,激发学生学习兴趣。
从实际的案例出发引入算法问题,通过抽象与总结,使得抽象的算法变得具体,拉近课程与现实的距离,激发学生的学习兴趣。例如在讲解时间复杂度和空间复杂度时,我们以百度之星的嘟嘟熊数列为实例进行讲解。看到这道题时,学生最容易想到的是常规的穷举法,其时间复杂度O(n)。此时可以提问学生该方法有何缺陷有学生提出当n为109时存储空间过大,于是进一步启发学生应该如何去解决。通过引导,最后发现数列只会出现2种循环节:1123581347和1459,序列的非循环字符最多20位,开辟的存储空间30个足够,算法的复杂度为0。通过此例的讲解学生对时间复杂度就有了深刻的理解,显然比纯粹的介绍概念要生动得多。
(2)利用知识的相互联系,为新知识的讲解寻找一个切入点。
在讲解知识点时,先从学生熟悉的内容出发,引入课程的知识要点,让学生既了解课程间的相互联系,又找到了知识的应用领域,通过知识的相互联系,降低学习难度,培养学习兴趣。例如在讲解大整数乘法前,可以先引入RSA加密算法,既拓宽了知识面,又让学生知道了大整数乘法的实际应用领域,从而激发了学生的学习兴趣,让学生变被动学习为主动学习,改善学习效果。
2.3实践教学的改革
实践教学环节可以强化学生对知识的理解,让学生应用所学的知识解决具体问题,培养学生的实践动手能力。通过实验学生可以更好地掌握算法理论,并灵活应用算法思想来解决实际问题。在教学中,我们借助ACM程序设计平台,把ACM竞赛题目作教学内容,充实了实验教学的内涵。ACM竞赛题目趣味性强,知识覆盖度高,非常适合作为课程实验的补充和提高。为了提高学生的综合应用能力,除完成课内实验外,学生还可以参与教师的各类研究课题,帮助教师完成科研任务,随着项目开展, 学生有机会参与项目的分析、设计和实现,在项目中发现问题,解决问题,培养了各方面的能力。
3结语
在《算法设计与分析》的教学实践中,通过将算法理论与实际应用相结合,合理组织教学内容,丰富教学方法和手段,采用项目驱动方式对实践教学环节进行改革,增强了教学效果。
基金项目:
吉首大学教改项目 (2013JSUJGB15);
吉首大学重点实验教改项目(2013SYJG015)。
参考文献
[1] 王晓东.计算机算法设计与分析(第4版) [M].北京:电子工业出版社,2013.
[2] 刘振章.《算法设计与分析》课程教学探讨[J].电脑知识与技术,2014,10(9):1995-1996.
[3] 林 劼,戴 波.项目驱动型算法设计与分析课程教学方法[J].计算机教育,2014,9:69-71.
[4] 张海藩.软件工程导论(第5版)[M].北京: 清华大学出版社,2013.