宋 晖 华南师范大学物理与电信工程学院,广州 510006
浅谈《算法与数据结构》中的主线和模块教学
宋 晖 华南师范大学物理与电信工程学院,广州 510006
本文针对算法与数据结构课程逻辑性强、抽象的特点,提出了整体认知——局部探究——整体掌握的教学思路,即把握主线,各模块击破的教学方法。教学实践表明,通过主线和模块化的教学方法,学生建立了系统化的知识结构,对于数据结构中抽象的知识也更容易理解和掌握,教学效果得到了明显的提高。
主线,模块教学,数据结构
《算法与数据结构》是作为一门专业必修课程,是一门理论性和实践性均很强的课程,不仅要学习基本理论知识,还要注重上机实践,通过上机实践验证算法的正确性,掌握和巩固所学理论知识。同时,本课程又是软件开发与设计等课程的基础。由于数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程,它涉及到高等数学、离散数学、概率统计、计算机原理、程序设计等各方面知识,又由于数据结构课程具有多——概念多、内容多、方法多;杂——数据结构复杂、算法复杂;实践性强——要求学生学会分析数据对象的特性,并选择适当的数据结构和存储结构来完成较为复杂的程序设计等特点,所以学习起来难度较大。根据课程的上述特点,就要求老师采用高效的教学方法去培养学生的逻辑思维能力,提高学生对问题的分析能力和实践应用能力。因此,合理清晰的教学思路是老师教好这门课,学生学好这门课的前提和重要保障。
整体认知——局部探究——整体掌握的教学思路是本人在进行《数据结构》教学中采用的方法,为了实践这一教学思路,要求教师在教学前必须非常熟悉教材,吃透教材,并参阅大量相关资料和书籍,在此基础上将教学内容综合分析思考,从中提炼共性的、规律性的知识体系,使知识系统化。
首先从教材的整体来看,逻辑结构这条主线贯穿始终,将各章节内容从总体上直接串联起来,这点从教材的目录中有所体现——从线性表到树再到图。教材先从线性表入手,再到非线性结构(树、图)的逻辑结构展开的。这种安排为教师的教和学生的学提供了一条非常有条理的线索,也符合由浅入深、从简单到复杂的逻辑。
我们通过逻辑结构这条主线将各个章节内容从总体上直接串联起来,为学生搭建数据结构课程的整体框架。因此,在具体教学过程中这部分内容讲授起来层次分明、条理清楚,并且可以联系生活中的一些实例,通过举例来形象直观地说明数据元素之间的相互关系,使得学生较容易掌握。如线性结构中的队列、二叉树、图中的最小生成树等都特别形象、直观地显示数据元素之间的相互关系。
接下来我们细化到数据结构的每个章节,发现每一章的逻辑结构、存储结构、算法这三部分内容贯穿于数据结构始终,形成了结构完整、层次分明、条理清楚的清晰思路。存储结构是逻辑结构在计算机中的具体实现。存储结构是抽象的、具体的。在教材的安排中,每一章都要将某一确定的逻辑结构映射到存储结构,从而实现数据在计算机中的存储表示。并且,对于不同的逻辑结构来说,它们的存储结构都是相通的,只是根据不同逻辑结构的特点选用不同的存储结构。算法即为求解问题的一系列步骤。《数据结构》课程在算法这一部分中,从空间与时间复杂度两方面对算法进行比较评价,其目的是通过对算法的学习让学生在具体编程序时选择最佳的算法,从而使编出的程序尽可能占用最少的存储空间和花费最少的时间。教材的最后两个章节——排序、查找讲述的就是不同的算法。
在具体的教学过程中我们对课程内容进行模块划分:数据结构的研究内容及基本概念为一模块,按照数据逻辑结构的不同,将线性表、栈、队列和数组作为一个模块,树及图各自为一模块,而专门讲解算法的排序、查找合为一模块,这样使得课程内容清晰,模块内容完整;其次,对于线性表、树、图各模块,以从数据的逻辑结构,可采用何种存储方式,到不同存储方式下一些基本运算的实现为主线索进行教学,这样有利于学生多方向思维,提高学习的主动性。
《数据结构》课程授课一般是依教材的内容和次序进行组织,一模块一模块内容、一堂课一堂课讲解,因此,学生积累的是点,最多也就是面的知识。而《数据结构》课程中有很多内容是层层递进,前后联系的。例如链接存储结构,在第二章线性表中有单链表、双链表和循环链表三种,而后面的章节如栈和队列的链表表示、树的链表表示、图的邻接表以及链接法解决散列表冲突都是链表这部分内容的应用。因此我们在授课时应注意将这几部分内容联系起来进行归纳提炼并使其系统化,使学生能较好地理解各个知识点间的联系, 做到举一反三,从而“削减”课程的复杂度。也就是要把学生掌握的面的知识变成立体的知识并形成系统,这样所学知识才能活起来、才能有用。
因此,我们在课程结束前,对数据结构内容进行总结和综合,包括将每一章节模块的逻辑结构、存储结构和算法联系在一起、理解不同逻辑结构到存储结构的映射,从而实现数据在计算机中的存储表示。逻辑结构、存储结构和算法三部分内容相互穿插、联系最后形成系统,使学生数据结构课程知识系统化。
数据结构的逻辑复杂,同其它计算机专业课程的知识联系较多。把握这门课必须注意章节之间的联系,以及与其它专业课程之间的联系,通过反复的抽象、分类,理出从数据结构的概念到具体的数据结构之间的关联,这种关联是逻辑结构、存储结构之间多对多的联系。重视线性表及各种派生数据结构基本运算的算法设计思想及时间效率和空间效率的度量是学习数据结构的关键。
[1] 徐孝凯.数据结构实用教程(第二版)[M]. 北京:清华大学出版社.2006.9
[2] 吴立锋.提高《数据结构》教学效果的探索[J]. 现代计算机.2010.6:80-82[3] 曲爽,姚艳秋.《数据结构》课程教学方法研究与实践[J].吉林广播电视大学学报. 2010,12:1-2
A Discussion on the Teaching of Thread and Module in "Algorithms and Data Structures"
Song Hui The School of Physics & Telecommunication Engineering, South China Normal University, Guangzhou, China, 510006
To the characteristics of data structure course,which are strong logic and Abstract, a teaching method of thread and module is been proposed in this article. Through this method, Systematization knowledge of data structure is understood for students and it can enhance teaching effects.
thread;modular teaching;data structure
G424
A
宋晖,女,1980年生,江西新余人,汉族,博士,讲师。目前主要从事计算机技术、人工智能技术等方向的教学和科研工作。
10.3969/j.issn.1001-8972.2011.08.174