数据结构课程教学研究

时间:2022-10-30 12:50:42

数据结构课程教学研究

摘要:从数据结构课程的教学目的和教学内容出发,在分析教学难点的基础上,从实践的角度提出如何克服教学难点、提高大学生课堂教学参与度和保证教学效果的教学方法。结合实验环节的改进,数据结构课程的教学取得了更好的成效。

关键词:数据结构;课堂教学;教学方法

随着计算机科学技术的飞速发展,计算机应用深入到社会各个领域,一些复杂的实际问题需要处理大量数据,数据结构研究的重要性日趋显现。在计算机中怎样才能有效地表示(存储)这些数据及其相互联系,使之能够在相关的处理程序中有效地用来模拟和解决问题,这就是数据结构课程讨论的中心问题[1]。

1教学目的

著名的计算机科学家Niklaus.Wirth提出“算法+数据结构=程序”的公式,由此可见,算法与数据结构之于程序设计的重要性。算法是程序的逻辑抽象,是解决某类客观问题的数学过程;数据结构也称信息结构,它具有逻辑结构和物理结构两个层面上的涵义。把客观事物自身所具有的结构特点称之为逻辑结构,例如家族谱系是一个树型逻辑结构;把逻辑结构在计算机中的具体实现称之为物理结构,例如树型逻辑结构是用指针表示还是使用数组实现。

算法和数据结构是相辅相成、密不可分的。若把数据结构喻为建筑工程中的建筑设计图,那么算法就是工程中的施工流程图,它们呈相互依托的关系。因此,在数据结构的教学过程中,不仅要教会学生如何设计良好的数据结构,提高复杂程序设计的能力,还应该培养其算法分析与设计能力。

另外,数据结构是计算机学科的专业基础理论课,是计算机学科的核心课程之一。它介于数学、计算机硬件和软件三者之间,是操作系统、数据库、编译系统等计算机学科的核心课程以及相关的应用软件开发的重要基础。

2教学内容

根据教学目的和考研大纲要求,数据结构课程需要介绍几种数据结构在计算机中的存储、操作和实现,介绍部分算法(如排序、递归)的设计和实现。主要内容如下。

1) 深刻理解线性表,能够应用相关知识点解决实际问题。

2) 比较栈(FILO)和队列(FIFO)的特点,考虑栈和队列的顺序和链式存储结构,利用堆栈或队列的特性,将它们作为基础的数据结构,支持实际问题求解算法的设计。例如用栈解决递归问题,用队列解决缓冲区和调度问题等。

3) 掌握树、二叉树的各种性质、树和二叉树的不同存储结构、森林、树和二叉树之间的转换及前中后三种遍历方式、线索化二叉树、二叉树的应用(二叉排序树、平衡二叉树和Huffman树)等,还要能进行相应的递归的和非递归的算法设计。

4) 识记图以及基于图的各种定义,存储方式。熟练掌握图的深度遍历,广度遍历算法,以及基于图的其他算法(最小生成树求解,拓扑排序问题,关键路径问题,最短路径问题)。

5) 理解静态查找与动态查找的含义及比较它们的区别;掌握平均查找长度ASL的概念,B-树的概念,B+树的概念以及Hash表相关的概念。掌握顺序表、链表、二叉树上的查找方法和学会计算各种查找方法的算法复杂度。

6) 排序既是重点,又是难点。排序算法众多,

有内排序和外排序之分。记住各种不同算法的定义,特征及复杂度分析。

3教学难点

目前,“数据结构”在我国已不仅仅是计算机专业的核心基础课程,也是其他非计算机专业的主要选修课之一。然而,学生认为这门课学习起来相当困难,具体原因如下。

1) 课程高度抽象,需要数理逻辑、图论、集合论和代数系统的基础。

2) 概念多,内容广,算法编写复杂。

3) 前驱课程教学不足。数据结构的学习需要运用许多前驱课程没有涉及到的知识,缺乏这些知识使教师在解答问题时困难重重,学生自学也困难重重。

4) 课堂教学参与度下降,缺乏学习主动性。一方面,因为,学生知识积累不够或者教师教学方法不新颖,所以学生不容易听懂课堂教学内容,导致其课堂教学参与度的下降;另一方面,程序设计难度增加,使得上机难度加大,导致程序通过率低,实验效果差,学生学习主动性下降学。

4教学方法与手段

针对教学中出现难点问题,我们要改善教学方法,利用多媒体设备辅助教学手段,提高教学的趣味和学生课堂的参与度。同时,还要加强实验环节,提高学生的编程能力,提高学习的主动性。

4.1突出教学重点与分散教学难点

在教学过程中,教师对易懂的内容可以点到为止,对比较抽象的重点、难点问题可以精讲细讲,借助多媒体设备将重点难点的细节内容用动画形式演示,让这部分内容更形象、生动,让学生更容易接受。

教学重点是指数据结构中的基本概念、算法思想等。而算法正确选择的前提就在于对基本概念的把握,因此,对概念的讲解一定要清楚、准确、完全。对于比较抽象的重点概念,教师要弱化理论并结合多种教学方式和手段去讲深讲透,用学生能够接受的方式去介绍,从而起到分散难点、化难为易的效果,使学生真正理解概念的含义并掌握算法的实质。对于典型问题的分析,教师应把理论问题与实际应用问题联系起来讲解,加强课程的生动性和直观性,进而使学生更加明确结构与算法的作用,提高学生运用算法和解决实际问题的能力。

教学难点是指学生不易理解和容易出错的地方。学生和教师的理解会有些差异,所以教师要调查了解,以作业、课堂提问、电子邮件等各种形式和学生进行沟通,确定课程的难点内容。在难点确定之后,教师要分析难点究竟难在何处?是因为概念抽象不易掌握,还是因为算法思想复杂不易理解,或是容易混淆不易区别?然后研究解决问题的方法。对于抽象的东西应该形象化、直观化地进行讲解,对于复杂的内容应注意其条理性,对于易于混淆的内容宜尽量采用对比法加于区别,做到化难为易。

4.2教学方法研究

在课堂讲授中,教师起到的是提纲挈领、组织和引导的作用。教师要明确授课的目的,及解决什么问题,而通过什么途径达到这个目的是非常重要的。在教学的过程中,教师应该从实际应用出发,通过实际问题的分析,理解教学内容,激发学生学习兴趣。那么究竟采用什么教学方法,才能更好地培养和激发学生学习的兴趣呢?

采用基于“问题”的教学方法。把数据结构的知识点转化为某个问题的求解,用“问题”组织教学,使学生在解决问题中掌握知识的发生、发展过程以及知识结构和运用规律[2]。在教学过程中,采用以学生为主体、以问题为中心的模式,激发学生的学习兴趣,充分调动学生的求知欲,提高他们的积极性和主动性。在教学过程中,教师要自始至终都围绕问题而展开教学活动,引导学生不断发现问题、提出问题、分析问题并最终解决问题,培养学生探索问题和解决问题的能力,更有利于培养学生的创新能力。

4.3灵活应用多媒体设备辅助教学

多媒体设备这种现代化教学手段在教学过程中充当着越来越重要的角色,它集声音、图像、视频和文字等媒体为一体,具有形象性、多样性、新颖性、趣味性、直观性、丰富性等特点,能产生直观逼真的教学效果。如果能将传统的教学手段和现代化教学手段结合起来教学,那么,教学效果会事半功倍。例如顺序表的第i个位置插入一个新元素,首先通过多媒体设备动画演示插入元素的过程:1)判断顺序表的存储空间是否已满,若已满,则进行“溢出”处理;2)检查i值是否超出所允许的范围,若超出,则做“超出”处理;3)将顺序表的第i个元素以及它后面的所有元素均后移一个位置;4)将新的元素写入到空出的第i个元素位置上;5)顺序表的长度加1。然后在黑板上根据演示过程写出插入算法的伪代码,最后又可以在多媒体设备上显示出插入算法用高级语言实现的程序。通过这种边看动画演示边讲解插入操作来引导同学们的思路,让课堂活跃起来。

4.4提高学生课堂参与度

影响学生课堂参与的因素很多。一方面,由于受到传统文化的影响,在学生眼里,老师的答案一定是正确的,学生只是盲目接受老师的观点而不会主动思考或表达自己的观点。另一方面,学生课堂参与的动机是被动的、被给予的、被要求的或受条件驱使的[3]。

要提高学生课堂参与度,教师可以从学习兴趣、教学方法、教学技巧三个方面进行教学。提高学习兴趣是这三个方面中最重要的环节,如果学生有主动学习的动机,他们将比较容易参与课堂教学。吸引学生产生兴趣的方法多种多样,如一堂有趣的绪论课、一节生动的CAI课,甚至老师的着装、流利的普通话、幽默风趣的话语等。

要提高学生课堂参与度,教师还要有合适的教学方法,高超的教学技巧,可以采用基于“问题”的教学方法,而在教学过程中,还可以采取提问全班同学、个别提问、回答学生问题、学生间互相问答并做出评论等教学手段,将学生的注意力吸引到课堂。

4.5加强实验环节,提高算法设计和程序设计能力

数据结构课程不仅逻辑性强,而且极抽象,大部分内容无法通过理论课知识直观表现出来。因此,在授课的同时,教师还要引导学生利用上机实验来加强理论到实践的转化。只有通过实验才能发现利用数据结构解决实际应用问题的有效方法,从而提高学生分析和解决问题的能力。

在实际教学过程中,实验是学生学习数据结构课

程的一大难关。一方面,因为数据结构课程内容较多,学生没有完全理解前面所学的知识,而新的知识又接踵而至,问题堆积致使学生实验内容很难完成。另一方面,因为学生对程序设计语言掌握得不熟练,大部分学生只是掌握了程序设计语言基本知识,应用基本知识去解决问题的能力有限,所以实验课对学生来说有相当的难度。

要解决这个问题,我们可以从两个方面着手。

1) 考虑学生编程能力的差异,将实验设置成必做和选做实验。这两类实验都由授课教师结合相关知识点设计。前者比较容易,主要在于帮助学生掌握基础知识;后者有一定的难度,主要在于帮助学生提高算法设计和程序设计能力。

2) 在理论课教学完成后,教师结合实际给学生布置一些有具体应用背景的实验题目,允许学生根据个人的兴趣选做其中的实验题目,充分发挥学生的主动性。考虑到实验的难度允许学生分组合作完成。分组合作并不意味着拷贝某个能力强的学生的实验结果,而是体现同学间互相帮助,共同进步的精神,融入团队合作的软件开发模式中去,使学生分析和解决问题的能力得到进一步的提高。

5结语

数据结构课程让学生学习到面向对象程序设计的基本思想,进一步巩固和提高C++编程能力,并养成良好的程序设计习惯,对学生编程能力的发展有直接的影响。我们从实践的角度出发,探讨教学难点,就是要改善教学方法并从手段上去克服教学难点,希望学生不仅能掌握数据结构的基本知识,也具备解决实际问题的能力。

参考文献:

[1] 张乃孝,裘宗燕. 数据结构-C++与面向对象的途径[M]. 北京:高等教育出版社,2001:1-11.

[2] 季晓慧,王群. 管建和.“数据结构”课程教学初探[J]. 中国地质教育,2009(1):149-152.

[3] 章伟央. 学生课堂参与的影响因素及方法研究[J]. 湖州师范学院学报,2007,29(4):114-117.

Research on Data Structure Teaching

JIANG Li, LIANG Ronghua, HUANG Xianping

(College of Computer Science and Technology, Zhejiang University of Technology, Hangzhou 310023, China)

Abstract: This paper is an attempt to illustrate how to improve students’ participation in class activities and guarantee good teaching effects in teaching Data Structure. The paper starts from explaining teaching objectives and teaching contents of Data Structure and is based on analyzing difficult teaching points and proposes practical ways to overcome these difficulties in teaching the course. The paper proves that the suggested teaching methods are effective with the improvement of experimental stages.

Key words: Data Structure; classroom teaching; teaching method(编辑:郭小明)

上一篇:特色专业建设中的创新人才培养 下一篇:智能科学与技术专业的发展战略思考