维普资讯 http://www.cqvip.com 科技信息 0高校讲台0 SCIENCE&TECHNOLOGY INFORMATION 2007年第35期 《数据结构》课程教学方法的浅谈 邓桂英 (上海理工大学计算机工程学院 中国 上海【摘200093) 要】数据结构是计算机专业及计算机相关专业的重要核心基础课程,针对它覆盖面广、内容繁多、学习难度大的特点,本文着重从教 学方法上就如何提高教学质量,如何加强学生能力的培养进行了一些讨论。 【关键词】算法;程序设计;教学方法;由浅入深 Exploration of Teaching on the Data Structure Deng Gui-Ying (College of Computer Engineering,University of Shanghai for Science and Technology,Shanghai 20093,China) 【Abstract]Data structure is a basic core course of computer speciality,according to characteristic of various and difficulty content,the paper will discuss the method of prompting the quality of teaching and developing the ability of students. 【Key words]Algorithm;Programming;Teaching method;Explain the profound things in a simple way 数据结构巾有很多经典的好算法,它们是著名的计算机科学家的 成果。我们不仅要学习算法的设计思想,还要学习算法设计的思维方 内容繁多,涉及面广,它主要研究把具有一定逻辑关系的数据如何在 im)算 计算机中存储,如何对数据进行操作的有关算法研究的一门学科,它 式,以提高学生的逻辑思维能力。以最小生成树为例,普里姆(Pr以程序设计为基础,对学生进行较复杂程序设计的训练.又为以后的 法以图中的点为主.其时间复杂度为0(n2),(n为图的顶点个数),它与 数据结构是计算机专业及计算机相关专业的重要核心基础课程, 专业课程学习打好基础,在计算机软件教学中起着承上启下的作用。 图中的边数无关,因此适用于求边稠密的图的最小生成树,但在如何 鉴于数据结构在计算机教学中的重要地位,学校将数据结构列为上海 判断加入一条边而不形成回路的问题上就遇到了困难,而克鲁斯卡尔 市重点课程建设项目,给予重点扶植,以促进教学改革工作。下面就我 fKruska1)求最小生成树算法以边为主.容易判断加人新顶点是否产生 们在教学过程中对数据结构的教学方法从三个方面进行探讨。 一、讲究方法、由浅入深 回路的问题,其时间复杂度为O(eloge)(e为图中边的个数),因此适合 求边稀疏的图的最小生成树。求同一个问题,不同的算法具备不同的 现代教学论中,人们把教学方法归为两大类:一类称程序式教学 特点,适应不同的范围,这样分析讨论,学生思路畅通,激起探研的愿 法,其特点是课堂以教师为中心,有计划有步骤地教给学生教学大纲 望。再例,数据结构中的排序算法可分类讨论,由个别到一般,由具体 上规定的知识。另一类是发现式教学法,这种教学法的基本目的不再 到抽象形成算法的设计,并进行算法的初步分析,其中有些算法的分 局限于把前人整理好的知识传授给学生,而是引导、鼓励学生尽可能 析并未得到完整的答案,例如,希尔排序的分析就是一个复杂的问题,参与探索知识的过程,其侧重点在于使学生领悟和掌握形成知识的过 因为它的时间复杂度是所取“增量”序列的函数,只是得出一些局部的 结论。虽然我们不一定引导学生去专门钻研这些难题,但是,分析和提 程和获取知识的方法 在教学过程中,我们将这两种方法相结合,在讲解数据结构理论 出这些问题至少可以提高学生的积极性和兴趣,形成研究问题的情 基础知识时主要采用程序式教学法,始终抓住什么是“数据结构”这根 景,对数据结构中的许多问题留下思考和探索的余地,从中启发出今 主线.按照数据结构的逻辑结构、存储结构、运算和运算的实现这四步 后深人研究的问题,这样有利于学生能力的培养。逐层展开讨论,上课做到思路清晰、逻辑性强,并且对于不同层次的学 生具体采用的方法也是不同的,在讲解数据结构算法的实现时,发现 一三、联系实际、开拓视野 在数据结构教学过程中,在引出课程中的一些概念、结构和算法 有些班的学生对编程普遍怀有恐惧感,针对这种情况我与学生一起按 时.我们常将课程内容与已学过的程序设计的内容加以对比。说明本 般人的逻辑思维方式考虑解决问题的方法,归纳写出解决问题的方 课程的内容是过去的知识加以深化和系统化。例如,高级语言程序设 法和步骤,方法知道_『按方法的步骤与学生一起一步一步写出程序, 计中的变量要先定义后使用,若我们现在有一批数据要处理,那么也 然后回过去重读一遍程序.并将不够理想的地方加以改进.使学生知 是要先定义的,数据结构就是对一批数据的定义,因为这里的数据是 道原来老师考虑问题的思路和自己的思路基本是一样的,这样经过由 一批而不是单一的,任何高级语言的编译系统不可能为你做好,数据 浅人深的训练后,学生消除了恐惧感,增强了信心,能力也逐步提高, 的定义、存储、操作都要自己处理的,因此数据结构还要研究数据的存 而且对编程也产生了兴趣,再经过大量的题目设计、上机调试和教师 储和数据的操作。可以说高级语言的数据类型是一种初等数据结构, 的指点逐渐掌握了编程,提高了编程能力。 而我们所学的是复杂数据结构。这样与已学课程的联系增强了学生的 数据结构中的内容很丰富,我们在教学中重点放在使用广泛的数 可接受性。 据结构上,精讲最基本的概念与方法,并在这基础上例举一些综合的 数据结构中很多算法应用极其广泛。例如,分布式数据库系统中 算法例子,通常借助于发现式教学法的思想进行教学,提供背景材料, 的事务问的死琐对应于等待图中的一个环路,而判断有向图是否存在 讲透算法思想,提出问题,鼓励学生思考、分析,举一反三,使学生自己 环路实质上就是数据结构中的拓扑排序问题,还有分布式系统中的并 设计出多种算法。例如,在讲解数据结构中的递归算法时.由于递归算 行任务的分配与接受,并行度的讨论,决策支持系统中的决策树,人工 法是数据结构中最难掌握的内容之一,学生一般难于或一下子难于接 智能中的搜索空问,管理信息系统中的数据结构的选择等等,大都涉 受,因此讲究递归算法的方法很重要,我们先从学生较易接受的数学 及到数据结构中的树,有向图,无向图等问题。此外还有一些与实际生 函数计算人手,进而引入非数值的递归算法,为了使学生了解嵌套调 活联系的例子,例如,最短路径问题、排队问题等。所有这些在教学中 用、层层返回等概念,画出递归运行的状态图和栈的变化图,告诉学生 穿插加以简单的介绍,这可开阔学生的视野,增强学习的动力,引起学 嵌套调用和返回的含义,概括出“递归进入一层,则进栈,递归退出一 生学习数据结构的兴趣,增强学习的自觉性和积极性。 层,则退栈”的方法,使学生一目了然。在掌握了基本递归算法及运行 四、总结 过程后,进一步举例稍难的递归算法,使学生从多个方面加深对递归 经过几年来的数据结构的教学实践.我们认为只有不断更新教学 算法的理解,这对数据结构后续内容树、图、查找和排序的算法设计能 模式,讲究教学方法,注重学生能力的培养,全面提高学生素质,才有 起到较好的效果。这样注重了教学方法使学生概念明确、有利于掌握 利于教学目标和教学目的的实现,从而取得培养现代化科学技术人才 教学内容。 的效果。 二、提出问题、引导思考 我们的教学任务之一,就是在知识传授中注重知识体系背后的思 维方式、揭示知识的发展过程,领悟发展者的思路和方法,通过讲解和 分析,引导学生去思考新的原理、提出新结构与算法 作者简介:邓桂英,副教授。 [责任编辑:汤静】 120