“数据结构”课程教学改革之我见
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“数据结构”课程教学改革之我见
摘要:本文结合笔者在数据结构课程教学的一些体会,从教材选择、课堂教学、实验教学、作业指导等方面对数据结构课程教学改革提出了一些意见和建议,希望得到专家与同行的指导。
关键词:数据结构;教学改革;教学手段
1引言
数据结构是计算机专业课程体系中一门重要的专业基础课程,ACM/IEEE CC-2004将它列为核心课程之首。数据结构前承高级语言程序设计和离散数学,后接操作系统、编译原理、数据库原理等专业课程,为研制开发各种系统和应用软件奠定理论和实践基础。因此数据结构教学与计算机专业人才培养计划的成败有着非常大的关系。然而在该课程的教学过程中,学生普遍反映学习起来非常困难,教师也感觉教学效果不尽如人意。如何教好这门课程是摆在我们面前的一个研究课题。
笔者作为该课程的主讲教师,深感责任之重大,所以一直密切关注该课程教改理念与经验,以期借鉴过来最大限度提高教学效果。目前关于该课程教改方面文章很多,包含了教学各部分:有关于教材的,有关于课堂教学的,有关于实验教学的,有关于课程辅导的,有关于教学效果评价的等等。特别是课堂教学方面,提出了很多新的教学方法和教学手段。下面笔者结合自己在数据结构教学中的一些体会,谈谈自己对目前教改的认识。
2教材选择
教材选择是实施该课程教学的第一步。目前《数据结构》教材有采用C语言描述的,也有采用C++或Java描述的。选择什么语言描述,主要看学生都学过哪些编程语言。在很多院校里学生学习《数据结构》之前只学习过C语言,如果非要赶潮流,选择面向对象语言,无疑会加大学习的难度。有些学校使用自己编写的教材,这是好事。但各学校师资水平参差不齐,并不适合推广。编制的教材质量到底怎么样,应组织同行专家进行科学论证,如果草率拿学生做试验,是不负责任的行为。目前国内《数据结构》教材数不胜数,但鲜有出清华严蔚敏、北大许卓群之在者。大多教材只是对内容的顺序作一些调整,删去一些不讲的内容,再增加一些数据结构新技术。笔者认为,数据结构重在培养学生坚实的基础理论知识、良好的抽象思维能力和良好的编程风格,没有必要非得接触最前沿的技术,即使需要,只要基础知识扎实,自学这些新技术也不是什么困难的事。教师应注重通过基本理论的教学,教会学生学习的方法,而不应企图把所有内容全部教给学生,这就是“授人以渔”的道理。将数据结构和程序设计两门课进行融合,也是一条值得研究的思路。
3课堂教学
3.1充分利用第一次课
第一次课至关重要,教师应通过第一节课对学生的程序设计基础有个大致了解,在培养学习兴趣的同时,还要给学生留下良好的第一印象,因为学生对教师的喜恶往往也影响着学生对该课程的喜恶。第一节课要尽量向学生解释清楚为什么学习程序设计语言后还要学习数据结构,数据结构的重要性,数据结构主要研究内容是什么;告诉学生一开始学习数据结构感觉有些困难是正常的,鼓励他们努力克服困难;公开教师的联系方式,告诉学生老师喜欢而不是讨厌他们提问题。接下来通过几个例子,带学生简要回顾一下C程序设计中的一些重要概念,如数组、结构体、指针、函数和递归。这些内容是数据结构的重要基础,但往往正是学生的薄弱之处。如果发现学生以上知识比较薄弱,以后在讲解数据的存储结构和访问方式时就要尽可能地详细一点。最后要求学生利用课余时间重点复习这些内容。
3.2课前准备
在这门课程中,有一些概念比较抽象,而算法正确选择的前提在于对基本概念的把握,因此概念的讲解一定要清楚、准确。这就要求教师必须认真备课,查阅大量的参考资料。教师只有先对每个概念、原理进行深刻理解,然后才有可能用学生易于接受的方式、简洁明了的语言去讲解,并有目的地分散难点、化难为易。除了查阅资料,我还下载了好几个大学的教学视频,通过观看这些视频,学习他们教学中的长处,感觉颇有收获。
3.3教学方法
教改先驱们提出了很多好的教学方法,具有重要的借鉴价值,如发现型教学法、启发式教学法、任务驱动型教学法、讨论式教学法、案例教学法等等。但有些文章片面强调某一种教学方法,还有些文章认为传统的教学方法就是满堂灌、填鸭式,给人感觉教改前就没有数据结构讲得好的教师,这都是有失偏颇的。比如案例教学法虽然效果好但比较费时,由于数据结构课时有限,因此并不适合经常使用。美国的数据结构教学也是以教师讲授为主,而不是以课堂讨论为主。“教学有法,教无定法”,每种方法只适合应用于某些特定的情形,教师应该根据教学内容和教学对象的不同,灵活采取适当的教学方法。
3.4教学手段
许多老师利用多媒体课件等现代化教学手段极大提高了课程的教学效果。但我发现,有的老师过于依赖这些手段,一说起黑板加粉笔的传统教学手段就觉得必定呆板、沉闷、被动,并加以排斥。尽管多媒体教学具有知识信息量大、内容丰富生动的特点,但不利于教师的即兴发挥,而这恰是黑板加粉笔的长处。此外数据结构中绝大部分算法长度都超过一个页面,在教学中需要反复切换,影响了知识的联结。因此我们在教学过程中应该把现代化教学手段和传统教学手段有机
地结合起来。例如在讲二叉树递归遍历算法时,为了消除学生对递归算法的神秘感,可以先结合一个简单的例子,将递归算法在黑板上层层展开,然后再使用计算机演示递归过程,这比直接演示更易于理解,因为很多学生即使看着递归的执行流程也难以理解为什么会这样执行。还有些老师在教学中过于追求形象化,我认为没有必要。对于本身并不复杂的算法,如果非要形象化,反而不利于培养学生的抽象思维能力,进而沦落为著名计算学科专家Dijkstra所批评的幼稚化。教师在制作CAI课件时应谨记它只是起辅助作用,不应该也不可能完全替代传统教学手段。冯搏琴教授在文献中详细说明了运用多媒体课件授课的六元素和四大忌,具有极大的指导意义。
4实验教学
实验教学是课堂教学的一种延伸,通过实验教学,学生不仅对所学知识加深了理解,更重要的是培养了学生分析问题、解决问题的能力。实验题目应精心选择,对于必做题,难度不能太大,要让绝大多数学生通过自己的努力,或在指导教师稍许指点下就可以完成,如果难度太大,学生上机实践的兴趣必然急剧下降。对于编程能力较好的学生,可以鼓励他们去尝试难度稍大的选做题。数据结构中用类C语言来描述算法,并且只描述出其主体部分,其它部分则不做重要介绍,甚至忽略掉,这对于刚刚接触这门课的学生来说,总有一种不知所措的感觉,所以我在前几个算法讲解中,尽量将其以程序形式给出,然后再与算法进行对比,这样上机时就不会有学生将算法照抄一遍,然后委屈地问为什么不能运行了。前几次主要是验证型实验,等学生适应数据结构编程后,再做一些设计型实验。实验教学课时较少,应要求学生在课下做好准备,上机时主要让教师验收程序或问一些自己解决不好的问题,这一点大部分学生都可以做到。由于高校扩招,每批上机学生数较多,还是有些学生的问题不能得到及时解决,可通过电子邮件等方式给他们提供帮助。
5作业及讲解
很多学生反映上课能听懂,但一旦让他们自己设计算法时就不知所措了。经过了解,我觉得他们大多心里知道如何去解决问题,但就是不知道如何用类C 语言表达出来。我一开始布置的作业题一般都是对课本算法的变形,这个难度要小一些。比如在学完“将两个非递减的有序表合并成一个非递减的有序表”后,我就让他们设法修改课本算法,实现将两个非递减有序表合并成一个非递增的有序表(顺序实现和链式实现)。对于难度大一些的习题,适当给一些提示。讲解作业时,应尽量采取“现场编写算法”的形式,将自己的思想表达成类C语言的每一个过程展现给学生,并让学生参与其中。
6结束语
数据结构教学是一项复杂的系统工程。对该课程的教学改革是一项长期而艰巨的任务,不仅要从理论上进行探讨,还要从教材选择、教学方法、教学手段、实验教学等多方面进行研究,只有科学综合考虑多种因素,才能使该课程教改走向成功之路。