吴志芳 袁 嵩
摘要:本文针对“数据结构”课程教学中存在的问题,从如何理清学生的知识结构、提高学生的课堂效率、激发学生的学习兴趣、培养学生的分析能力、强化学生的实践能力等方面,提出了教学上的一些改进措施。
关键词:数据结构;算法;学习兴趣;逻辑思维能力
中图分类号:G642 文献标识码:B
1引言
“数据结构”是计算机专业的一门核心课程,在计算机教学中起着承上启下的作用,一方面它以程序设计为基础,对学生进行较复杂程序设计的训练,另一方面它又是后续专业课程如操作系统、数据库等的基础,由此可见学好它的重要性。“数据结构”课程系统介绍了几种常用的数据结构,讨论其在计算机中如何存储,进而对数据操作的各种算法进行实现。通过这门课程的学习,学生的软件设计和编程水平将得到提高,使学生学会分析实际问题涉及的数据特性,以便为这些数据选择适当的逻辑结构、存储结构,并采用适当的算法处理数据,解决实际问题。
2教学现状
“数据结构”课程不仅内容繁多,而且其理论性和抽象性还很强,因此给教学带来很大的难度。学生通常上课时能听懂,能够掌握一些基本知识,会做题,但课程学完后,对自己到底学到了些什么、学了有什么用、怎么用感到很茫然。归纳一下,教学中主要存在以下问题:
学生难以建立对课程内容的整体概念,无法将各知识点联系起来;
理论课时减少,传统教学方式已经不适合当前形势;
与实际应用问题脱节,学生感到枯燥,不知学了有什么用;
学生被动理解算法,缺乏思维能力和分析问题能力的训练;
遇到实际应用问题时,学生往往束手无策,缺乏灵活运用的意识。
3教学改进措施
为了提高教学质量,笔者针对以上的教学现状,以学生为主体,教师为主导,从以下几个方面进行教学改进。
3.1理清学生的知识结构
“数据结构”课程内容丰富,要求教学思路清晰、逻辑性强,帮助学生构建对数据结构整体的理解,避免学生迷失在细枝末节中。如课程介绍时首先要让学生理解数据结构是讨论非数值计算范畴问题的课程。数据结构从逻辑关系上分为四类:线性结构、树形结构、图状结构和集合结构。整个教学就以此为主线展开,随后各章将就这四类结构进行详细讨论,如:第2章线性结构,第3章栈和队列,可看成是限定性的线性结构等;又如:第7章查找和第8章排序实际讨论的就是集合结构,查找就是判定某个数据元素是否属于查找表这个集合,而排序就是寻求集合中记录从无序调整为有序的方法。
在每一章的课堂教学中,根据教学大纲的要求,需对教学内容去粗取精,提炼出各章的框架体系,并按照数据结构的逻辑结构、存储结构、运算和运算的实现这四步逐层展开讨论。要重点突出,简洁明了而不求面面俱到。根据学生的实际情况,对那些学生感到困难的内容,进行有的放矢的讲解。
3.2提高学生的课堂效率
传统的板书教学固然重要,但若能与多媒体辅助教学手段相结合,将会取得事半功倍的效果。多媒体课件形象生动、图文并茂,非常适合“数据结构”课程的教学。教学中通过幻灯片展现知识点,具有信息量大、内容丰富生动的特点,并可节省大量的板书时间,提高教学效率。教学中通过Flash 动画演示算法的动态执行过程,可以极大地调动学生听课的积极性,有助于学生很好地理解和掌握所学内容。比如在讲解排序的时候,单纯讲解算法学生理解起来有些困难。如果在讲授的同时配以Flash动画来模拟排序的全过程,就会使得算法描述形象生动,促进了学生对算法的理解。
3.3激发学生的学习兴趣
学生在课堂上如果只是一味被动地接受知识,很容易感到枯燥无味,教学效果也不好。其实学习知识,学生最关心的是学了有什么用,因此为了激发学生的兴趣,在教学过程中要始终强调数据结构的应用性。即:在学习新知识时,先不急于讲授,而是通过一个实际问题的引入,让学生思考该怎样解决,激起学生探究的欲望。然后将问题抽象成相应的模型,并用数据结构对它进行描述,从而自然过渡到运用新知识对问题的求解。这样使学生认识到数据结构确实很有用,提高学习的主动性。例如在讲图的最小生成树时,提出一个应用背景:在n个城市之间架设通讯网,由于地理条件不同,在不同城市间架设的费用不等,怎样选择线路能使费用达到最低。解决这样的问题具有一定的挑战性,同时也会激发起学生的求知欲。俗话说,“良好的开端是成功的一半”,此时趁热打铁引入数据结构描述:这个问题就等价于构造连通网的一个最小生成树。即:n个城市表示为连通网中的顶点,各个城市之间可能架设的通讯线路用边表示,且架设每一条线路的经费用每一条边上的权值表示。所以求得的一个最小的生成树就对应了使总的工程费用最低的线路的选择。在解决这个问题的过程中,自然地调动学生参与的积极性,通过问题的不断扩展以及不同算法的讨论开阔学生的思维,从而激发学生学习数据结构的浓厚兴趣。
3.4培养学生的分析能力
算法的描述和理解是“数据结构”课程的重点和难点,教学过程中不仅要讲解算法的思路,还要教授算法设计的思维方式,以提高学生的逻辑思维能力。通常的做法是:从问题出发,先启发学生从不同的角度寻求解决问题的最佳算法,然后与学生一起一步一步写出程序,最后回过去重读一遍程序,对不够理想的地方加以改进。经过这样由浅入深的训练后,不但消除了学生的编程恐惧感,增强了信心,还教会了学生考虑问题的方法、培养了学生的分析能力。比如在讲解对链表的操作时,教师可以先与学生一起分析在链表中插入一个元素的方法,此时教师应一边讲一边在黑板上画出插入的演变过程;然后与学生一起写出程序;最后让学生加以模仿并编写出在链表中删除一个元素的算法。同时要让学生知道,当看不懂或写不出算法时,可借用画图的方法帮助理解。又如在讲授循环链表和双链表时,可分析建立单链表的算法,然后在此基础上,通过对其中几个语句的改动,实现了单循环链表、双链表、双循环链表的建立操作。采用这种方式的教学,不仅培养了学生的思维能力,学生的编程能力也逐步提高。
3.5强化学生的实践能力
“数据结构”是实践性很强的一门课程,实践的好坏直接影响教学质量。因此,在授课的同时,需要安排一定学时的上机来加强实践。在上机题目的选择上,要体现分析设计能力的培养。由于数据结构课程中各章数据结构之间相对独立,因此在每章的实践中,可以针对单一的数据结构,选择有代表性的上机题目进行训练;对于基础不好的学生,还应引导他们将教材上用类C语言描述的算法用C语言实现。如:在学习第6章树和二叉树时,上机可选择实现二叉树的基本操作,如:构造二叉树、遍历二叉树等。当课程学完后,还需要安排一周半的课程设计,设计一些难易适中的综合性题目,训练学生综合运用知识的能力。如:可让学生完成计算机和人对弈的问题,该问题是对树知识的综合运用。总之,通过一定学时的上机调试和教师的指点,将使学生掌握“数据结构”的应用和软件开发方法,提高学生的实践能力。
4结束语
经过多年的“数据结构”课程教学,笔者深深认识到以学生为中心,注重学生能力的培养的重要性。作为教师应与时俱进,一方面不断提高自身专业水平,另一方面不断探索和改进教学方法,才能不断提高课程教学质量,造就出合格的技术人才。
参考文献:
[1] 严蔚敏,吴伟民. 数据结构[M]. 北京:清华大学出版社,1996.
[2] 刘亚波,刘大有. 以实验教学深化“数据结构”理论教学[J]. 吉林大学学报:信息科学版,2005(23).
[3] 邓桂英.《数据结构》课程教学方法的浅谈[J]. 科技信息,2007(35).