您现在正在浏览:首页 > 职教文章 > 职教论文 > 《数据结构》教学改革初探

《数据结构》教学改革初探

日期: 2009-10-19 8:44:02 浏览: 5 来源: 学海网收集整理 作者: 佚名

内容提要:《数据结构》的特点是实用性强、课时少,为了提高教学质量,笔者从激发学生兴趣,优化教学过程,指引学习方法,加强实践技能等方面进行初步的探索,本文从五个方面介绍了《数据结构》课程教学过程中取得的经验。
   关键字:数据结构;教学;初探
   《数据结构》作为计算机专业的一门核心课程,计算机科学各个领域的软件都要用到它,可以说,数据结构是开发高质量软件的充要条件。作为一个程序员,只有具备了《数据结构》的知识才能编制出符合要求的程序。该课程实用性强,但教学枯燥,学时少,并且需要一定的程序设计能力及相应的实践经验。因此,本课程如果仍然沿用原来“满堂灌”、“填鸭式”的教学方式,则教学效果会很不尽人意,故急需对本课程教学进行改革,其改革将会对计算机专业的其他课程起到积极的推动作用。为此,笔者在《数据结构》教学改革方面进行了初步探索和实践。现将自己的体会总结如下:
   一、联系实际,激发兴趣
   《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。《数据结构》虽然包含了较多的理论内容,但实际上它具有一个很显著的特点——实践应用性。然而,在教学时,学生刚一接触到此课程时,并不能体会到这一点,总认为是一门理论课,感到枯燥、乏味,学习时兴趣不浓,甚至有人认为不学《数据结构》照样能编出程序……但等到开发软件、编制程序时却不知如何下手,不知如何应用这些知识……。俗话说:“良好的开端是成功的一半”,“兴趣是最好的老师”,因此,在刚接触本课程时,不要急于介绍理论,而是强调应用,通过介绍数据结构在一些典型软件中的应用来激发学生的学习兴趣,如:语言编译要使用栈;操作系统中要用队列;数据库系统则使用线性表,链表等进行数据管理;而在人工智能领域,依据问题的差异将涉及到诸如广义表、树、各种有向图等。而以上实际应用所涉及的软件学生都比较熟悉,从而使得学生一下子就产生了兴趣,不少人发出感叹:“没想到数据结构用处这样多”,同时也为教学开了一个良好的头。
   二、认真备课,优化教学
   由于目前中专生普遍存在基础知识不够扎实,自我学习能力差和学习方法不得当等,所以,如果照课本讲授,则学生很难理解,由此很可能导致学习兴趣不浓,显然这不是我们所预期的教学效果,同时这样的效果也会使得教师讲课的情绪低落。所以,在备课中要查阅大量的参考资料,对每个概念、原理做到深刻理解,然后用学生能够接受的方式给学生简明扼要的去介绍,从而起到分散难点、化难为易的效果,使学生在学习时也是理解的去记忆,而不是死记硬背。如:对于算法的描述方式有很多种,包括自然语言、计算机语言、伪码、流程图等,如何理解这些表示方式的特点,它们又各自适用于何种场合,程序与算法又有什么区别和联系,所有这些问题都有必要弄懂弄通,这样讲起来才能诱发学生的求知欲,调动起他们的积极性,从而使得课堂气氛较活跃,学生的学习热情高涨。
   当然,认真备课的好处还有不少,如可用精辟的语言表达最丰富的内容,使得教学 既生动,又能浅显易懂地阐明深奥的机理。例如:在讲授数据结构的各要素之间的关系时,巧妙引用N.Wirth的思想“数据结构+算法=程序”,从而使繁杂的关系显得简明形象。这样,学生便很轻松地理解了相应的概念,记住了其相互联系,学习兴趣也相应高涨。
   三、对比归类,引导思路
   《数据结构》中的有内容非常类似,所以在讲授时,可以进行对比归类,进行多向联系,引导学生正确理解类似问题,从而起到了举一反三的效果,减轻了学生的压力。如栈和队列作为特殊的线性表,在介绍它们时,首先联系日常生活中叠放盘子来引入栈的操作特性(FILO或LIFO),联系排队买东西来引入队列的操作特性(FIFO或LILO),然后再举几个典型例子加强对其特性的理解(特别是栈)。最后有意留一些问题让学生去练习、去思考。
   再如介绍各种排序时,首先重点讲解其中的一种排序,包括其算法思想,程序实现及其分析等,其余的则引导学生自己去思考、去实现,这样讲解可起到事半功倍的作用。使学生学习时一下子就切中要害,理顺思路,从而大大提高了学生学习的积极性和主动性,培养了学生独立思考的良好习惯。
   四、适时总结,注重理解
   在教学过程中,适当的总结会起到意想不到的效果。如在教材中涉及到的约瑟夫问题(Jossephus)、译密码、环形队列等一系列问题,都可利用C语言中的求余运算符“%”来简捷实现。为此,将这些问题分别提出来,首先使学生明确求余运算符的自动回归特性,如将1~15分别除以3求余然后将其实现算法分别简要分析讲解,从而使学生通过理解,得出“环形问题均可用%来实现”这样一个令人激动的结论。
   再如在讲二叉树的遍历时,由于树本身的层次性和递归特性,使学生对树的三种遍历一时难以掌握,此时,可利用学生比较熟悉的求n!和汉诺塔等典型递归算法来引导学生去理解、去思考,而不要简单重复,更不能就概念讲概念。这样通过教师适时的总结,循循善诱地使学生理解那些分散而又有内在联系的知识点,从而充分调动了学生的积极性,提高了教学效率。
   五、强化实践,提高技能
   《数据结构》是实践性很强的一门课。培养学生的实践能力是教学的首要目的。《数据结构》理论知识的传授是为应用服务的。因此,在授课的同时,如何引导学生利用上机来加强实践也是教学中的一个重要问题。由于《数据结构》所涉及的算法大多采用数组和指针来描述,而后者则相对较难。所以,上机初期,应该要求学生重点回顾C语言的基础知识,特别是数组和指针的有关操作,然后可根据学生的特点因材施教,使其在掌握基本理论的基础上,理论联系实际,进行一些创新工作。例如,可根据学校环境,同时结合学生的实际情况,在授课的同时,给学生布置一些较大的设计课题,使学生分组共同完成。当然,在难易程度方面要求做到量力而行,对学习好的学生可要求高些,对学习差的学生可以要求低些,对不肯活动的学生要尽量让他们多活动。这样一方面锻炼了学生的自己动手能力,也加强了他们交流与团结协作的精神;另一方面确实能将理论与实践相结合,从而大大激发了学生的学习热情。为其今后的学习和工作打下良好的基础。
   另外,也可吸收一些有兴趣的学生组成课外活动小组,让他们参与一些小型实用软件的开发工作,开发的题目比较广泛。如“指法练习软件(类似TT)”、“公用机房硬盘安全保护软件”、“仿真计算器的通用C程序”等,因为这些题目的开发,要求学生必须吃透教材,充分理解数据结构的基本理论,才能设计出质量较好的软件。不过,引导学生进行这样的活动必然要花费远远多于正常课堂教学所需的时间和精力,但却能收到非常良好的教学效果。
   以上所谈仅是笔者个人对《数据结构》教学的一些粗浅认识。总之,在教学时探讨教学方法,摸索规律是时势所趋,相信, 只要我们积极大胆地去改革教法,去努力实践,勇于探索,就一定能得到更好的教学方法,从而使我们的教学效果得到进一步的提高。

返回顶部