算法设计与分析课程教学方法探讨 下载本文

内容发布更新时间 : 2024/9/23 7:34:05星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

算法设计与分析课程教学方法探讨

作者:封富君 李新社 姚俊萍 来源:《大学教育》2014年第18期

[摘 要]算法设计与分析是计算机专业的一门核心课程,具有较强的理论性和实践性。结合该课程的教学经验,对教学内容设置进行探讨,同时提出几种适合于该课程的教学方法,使课程教学达到了较好的教学效果。 [关键词]算法 教学方法 教学实践

[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2014)18-0149-02

算法设计与分析课程是计算机专业为本科生开设的一门必修专业课,主要通过对一些有代表性的算法进行系统学习,使学生掌握算法的设计思想,培养算法设计与分析的能力,提高学生算法编程的实践能力、知识综合运用能力和解决实际问题的创新能力。

算法设计与分析课程是理论与实践并重的课程,但是在教学过程中笔者发现,大部分学生将其视为理论课,对算法思想虽然理解了,但是不能灵活运用,在编程实践过程中,缺乏解决实际问题的能力。因此,如何提高教学效果,不仅让学生增加理论知识,同时培养学生的实践能力,是本课程教学中需要探索的问题,同时也对授课老师提出了挑战。本文结合算法设计与分析课程的讲授经验,对教学内容设置和教学方法进行探索。 一、目前课程教学中存在的问题 1.算法思想死记硬背,不能举一反三

在教学过程中,发现学生不能真正理解算法的设计思想,而是死记硬背,不能实现举一反三的教学效果。出现这种情况的原因,一方面是没有激发学生的学习兴趣以及自主学习的积极性,另一方面是采用的教学方法不灵活,达不到让学生理解知识的教学目的。因此,该课程教学方法的运用应该考虑如何提高学生学习的兴趣,既要有教学方法的多样性,又要适合该课程的教学。

龙源期刊网 http://www.qikan.com.cn

2.重理论轻实践

算法设计与分析课程往往以理论教授为主,实践环节比较薄弱,因此学生有重理论轻实践的倾向。很多学生虽然理解了算法的设计思想,但是在编程实现算法的过程中总是不能达到满意的结果,究其原因,是由于动手编程的机会太少,实践能力较弱。

课程中所涉及的经典算法都是与实际应用联系紧密的,如果在教学过程中让学生了解相关算法的实际应用,增强学生提高实践能力的意识,培养学生的实际编程能力,对学生以后进行计算机科学研究具有重要的作用。在教学过程中应该多增加一些上机实践课,使学生在实践的过程中加深对算法思想的理解,增强解决实际问题的能力。 二、课程内容设置

算法设计与分析课程在教学内容的选择上应该结合学生的知识背景和接受能力,以典型算法的设计思想为主线,既要掌握算法设计的理论知识,又要提高解决问题的实践能力,同时激发学生自主学习的积极性,使所学内容不局限于书本,而是与实际应用相联系。因此在课程内容设置上应该注意以下几个方面:

1.以算法的基本思想作为主线,并紧紧围绕这条主线,通过具体实例让学生真正理解算法的思想及其分析问题的方法,在解决问题的过程中加深对知识的理解和应用,并培养学生解决问题的综合实践能力。每个典型算法的讲解过程是类似的,以讲解贪心算法为例,采用问题驱动式方法启发学员思考并回答以下问题:

(1)贪心算法的起源是怎样的?为什么会提出这种算法?用于解决哪些问题? (2)贪心算法的基本思想是什么?需要满足的两个要素(贪心选择性质和最优子结构性质)如何理解?

(3)以最小生成树问题为例,该问题是否适合用贪心算法解决,如何进行分析? (4)Prim算法和Kruskal算法的基本思想是什么?二者有何区别,分别适合于解决哪类无向连通带权图?

(5)Prim算法和Kruskal算法的时间复杂度如何分析?请进行比较。 (6)分组编程实现Prim算法和Kruskal算法,并研讨交流。

如果学生可以把以上所有问题都能够正确的回答出来,说明对该算法的讲解达到了教学目的。由于课程学时的限制,不可能把所有的实例都讲到,因此,在教学过程中,选择典型例题进行讲解,并让学生自学一部分内容,往往可以达到举一反三的效果。

龙源期刊网 http://www.qikan.com.cn

2.介绍一些经典问题的算法研究新进展,让学生了解该领域的前沿,为以后的科学研究方向奠定基础。例如,最短路径问题的Dijkstra算法目前出现很多的改进,让学生通过查找文献资料了解相关的研究进展,并编程实现感兴趣的改进算法,培养学生解决问题的科学探索精神。

3.在讲解算法的过程中注重与实际的具体应用相联系,让学生认识到学习算法的目的就是为了解决实际的问题,达到理论与实际相联系的目的。例如,在讲解最小生成树和最短路径时,让学生知道该算法的设计可以解决城市交通问题或计算机网络路由问题;回溯法可以应用在电路板排列和图的着色问题中等。 三、课堂教学方法

1.引入趣味问题,提高学习兴趣

通过一些大家比较感兴趣的谜题、故事或生活中的常见问题等,引导学生进入课堂的教学内容,同时提高学生的学习兴趣。例如,汉诺塔问题可以用递归算法解决;棋盘覆盖问题可以用分治法解决;背包问题可以用贪心法解决;0 / 1背包问题可以用动态规划法解决;n后问题可以用回溯法解决等等。这些趣味问题,提高了学生学习算法的热情以及分析问题和解决问题的能力。

2.采用比较教学,加强算法理解

课程中涉及一些基本的算法,包括分治法、动态规划法、贪心法、回溯法、分支界限法和随机化法。不同算法的设计思想不同,解决问题的类型不同,算法设计时需要考虑的代码细节也不同,学生在刚开始学习不同算法时往往容易混淆,如果在教学过程中进行不断的比较学习就可以加深学生对不同算法的理解,如表1所示。 3.制作动画演示,提高教学效果

在课程教学中,通过制作动画演示,把抽象和难以理解的内容直观形象的展现给学生,这样可以在有限的学时内,既将算法执行的步骤一步步的展现给学生,也加深了学生对算法的理解,同时提高了教学效果。

在算法设计与分析课程中,易于用动画演示的算法有:汉诺塔问题的递归算法、二分搜索算法、快速排序算法、合并排序算法、单源最短路径Dijkstra算法、最小生成树Prim算法和Kruskal算法、n后问题和0 / 1背包问题的回溯算法。通过以上实例和算法的动画演示,在教学过程中,取得了很好的教学效果。 4.加强上机实验,培养动手能力 上机实验教学应该考虑以下几个问题: