“数据结构与算法”的教学改革和实验创新

时间:2022-05-21 16:28:01 来源:网友投稿

传统教学模式中的教学方法可以简单概括为“先说(课堂理论教学)后做(验证性实验)”和“光说不做”。但是,在大众化高等教育的背景下,课堂教学效果普遍出现滑坡,客观上淡化了“验证性”实验的基础,因而严重影响了课程的教学质量。

近年来,我们在多门计算机课程的教学实践中,摸索出一套“把实验实践环节与理论教学相融合,抓实验实践教学促进学科理论知识学习”的教学方法,有效地提高了学生的学习兴趣,以此来提高大众化高等教育背景下计算机专业课程的教学效果和教学质量。这个教学方法可以简单地概括为“先做后说”。这里的“先做”,就是教师依据相关课程的知识体系和教学要求精心设计前导实验,学生在实验设计的指导下,通过实验方法来了解和实践课程知识;这里的“后说”,就是在学生具备了一定的感性认识的基础上,在课堂教学环节中答疑解惑,系统地提高学科知识的理论水平。本文中,我们结合“数据结构与算法”(以下简称“数据结构”) 课程来探讨新的教育形势下计算机课程教学方法的改革。

1“数据结构”的教学现状

任何实际问题只有建立了数学模型才可以被计算机计算,而数据结构就是实际问题中元素的数学抽象,算法则是建立和解决数学模型的方法。

“数据结构”这个术语在整个计算机科学与技术领域得到广泛使用,它被用来反映一个数据的内部构成,即一个数据由哪些成分数据构成,以什么方式构成,呈什么样的结构等。数据结构是数据存在的形式,也是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。

“数据结构”是计算机以及相关专业的一门核心课程,具有承上启下的地位和作用,“程序设计语言”(例如C或C++) 和“离散数学”是它的先导课程,“操作系统”、“数据库原理”、“软件工程”等则是它的后续课程。“数据结构”课程既有相当的理论抽象性,又有鲜明的应用特色,是专业基础课程中的一门有一定教与学难度的课程。

“数据结构”课程一向都有上机实验的要求,但主体通常还是课堂教学,无论是实验设计还是实验强度都远远不够,带有强烈的“验证性”色彩。但是鉴于以下原因:(1) 由于低年级程序设计语言教与学所存在的问题,学生普遍不能顺利地运用程序设计语言工具;(2)对于应用型院校以及许多专业的学生来说,学习数据结构与算法的主要目的应该是在理解的基础之上更好地从事计算机软件的设计与运用。因此,“数据结构”课程的教师必须决定其课程是集中于问题和理论,还是为学生提供一个能够对其进行充分实验的环境,让学生在实践的环节中增加感性认识,产生对相关理论知识的需求。

2教学内容的分层次设计

从1999年开始,经过几年的大规模扩张,人们对大面积扩招后形成的新的高等教育态势进行了重新认识,并把普通高等学校一般地分为研究型大学、教学科研型大学、教学型本科院校、高等专科院校和高等职业院校等几种办学类型。随着高等教育大众化、普及化时期的到来,初步形成了各类大学相对稳定的分层次办学的格局。

根据教育部计算机科学与技术专业教学指导分委员会发布的“中国计算机本科专业发展战略研究报告”,我们至少可以认为:所在院校的办学类型不同、培养目标不同、所在地及其周边地区社会需求的不同,这些计算机专业的教学内容应该有所不同。作为一门重要的计算机的专业基础课程,针对不同院校不同的教学目的,“数据结构”应该有不同的,分层次的教学设计。

我们认为:对于大多数计算机专业以及IT相关专业的学生,尤其是非研究性院校的学生,应该把数据结构的学习定位在理解、熟悉和能够灵活运用的基础上,而把那些“考研”所需要的更深层次理论性内容放在选修或者考研复习阶段来解决。从长远看,应该对各层次院校的计算机专业所开设的“数据结构”课程的教学内容进行研究,对其教学方法进行积极的探索。

数据结构与算法的应用面广,涉及技术领域宽泛,也被人们赋予了很高的期望值,对于计算机及其相关专业的一般学生和读者来说,肯定是需要掌握的重要专业基础知识之一。另一方面,虽然全部计算机应用技术都有实践性的要求,但数据结构与算法对于应用基础理论来指导开发实践却有着特别的需求,单凭课堂教学和一般作业,要真正领会数据结构与算法课程所介绍的概念、原理、方法和技巧等,是很困难的。因此,要让学生真正理解数据结构与算法的基本知识,具备将数据结构知识应用于社会实践的能力,积极加强数据结构课程的实验环节是至关重要的。

3教学改革、实验创新与成果

根据以上思考,我们在教学内容的安排、实验项目的选择、实验步骤的设计和实验文档的组织等诸方面都做了精心的考虑和安排,尝试为“数据结构与算法”课程编写了主要用于实验也可用于课堂教学的教材《数据结构与算法实验教程》。该教材依据课程教学大纲,充分理解课程的大多数主教材,遵循课程教学的规律和节奏,体现了实验的可操作性,帮助学生切实把握本课程的知识内涵和理论与实践的水平。

《数据结构与算法实验教程》采用C语言作为描述语言,通过一系列与课程单元知识密切相关的实验练习,把数据结构的概念、理论知识与技术融入到实际应用中,从而加深对本课程的认识和理解,逐步熟悉和掌握结构化程序设计方法,提高编程能力和综合分析能力,并为今后学习面向对象程序设计作一些铺垫。实验练习覆盖了“数据结构”课程教学的各个方面,内容涉及数据结构和算法分析基础、线性表、栈和队列、串、树和二叉树、图,以及查找与内部排序等,全书共16个实验练习、1个实验总结和1个附录实验,如表一所示。

实验1:数据结构和算法分析基础。包括数据结构和算法的计算环境、抽象数据类型的表示和实现、算法和算法分析等实验。通过实验来理解抽象数据类型的特点、定义方法和在C语言环境下实现的方法;掌握算法的主要特征和描述方法;尝试通过具体的算法结构,计算算法的时间复杂度和空间复杂度,并对算法进行定性或定量评价。

实验2:线性表。包括线性表的顺序表示和实现、线性表的链式表示和实现等实验。通过实验,掌握顺序表和链表的存储结构定义;实现基本操作算法的描述和分析;进一步理解实现复杂操作的C语言程序的结构,从而更深入理解结构化程序设计的方法;与此同时,加深理解C语言中函数和结构体的结构、语法和使用方法。

实验3:栈和队列。包括栈、队列和递归算法等实验。通过实验,掌握顺序栈和链式栈、顺序队列和链式队列的存储结构定义;掌握栈和队列基本操作的过程及实现的方法;理解递归算法的思路、使用条件以及设计方法,并且了解由递归算法到非递归算法的转换过程中栈的作用;通过实例,进一步加深对栈和队列特点的理解,并区别这两种结构在解决实际问题时的区别,从而更合理地选择适当的数据结构解决实际运用。

实验4:串。包括串的3种常见的存储结构定义、在具体的定义下串的基本操作和实现。通过这个实验,加深理解串这种常见的数据结构的特点和存储结构定义方法;掌握串的基本操作算法的描述,并根据算法的结构评价算法;理解串操作的实现方法,理解一个合理的存储结构定义对具体操作实现的重要性,并注重提高算法的健壮性,从而能更好理会一个好算法所需要的各种综合因素。

实验5:树和二叉树。包括二叉树及其基本操作、哈夫曼树和哈夫曼编码等实验。通过实验,掌握二叉树的不同存储结构定义,并理会在具体的应用中采用合理的存储结构的思路;理解二叉树的先序、中序及后序三种遍历的递归与非递归算法实现过程,加深理解递归算法的设计思路,体会栈在递归算法中的作用,以及在非递归算法中栈和队列的作用;理解哈夫曼树的特点和存储结构的定义思路、哈夫曼树建立的算法和实现,并在此基础上体验哈夫曼编码的特点和设计过程,弄清实现哈夫曼编码程序的结构,从而加深对C语言中字符串和指针的理解和灵活运用。

实验6:图。包括图的表示和实现、图的应用、贪心算法等实验。通过实验,掌握图的各种存储结构的定义方法,从而更进一步理解如何根据实际问题设计合理的数据结构;掌握图的两种遍历方法,即图的深度优先搜索和广度优先搜索,并根据这两种操作的实现过程确定算法中所需要采用的辅助数据结构;能根据实际问题选择图的类型,并采用合理的存储结构,理解解决最小生成树、拓扑排序、关键路径和最短路径等实际应用的算法描述,并能根据算法写出相应的程序代码。根据贪心算法的核心思想理解贪心算法的特点,并学会设计简单的贪心算法。

实验7:查找与内部排序。包括查找、内部排序等实验。通过实验,掌握查找表的特点,并能根据具体的查找方法定义合理的查找表的存储结构;掌握各种查找表的实现思路,能根据查找思路写出算法的描述,并对算法进行评价;掌握哈希查找的特点和影响哈希查找的因素,从而构造合理的哈希函数、采用适当的解决冲突的方法,加深理解C语言中指向函数的指针的具体应用。通过实验,熟悉各种排序方法的特点,并能根据具体的实现方法定义合理的待排序数据的存储结构;掌握各种排序方法的实现思路,能根据排序思路写出算法的描述,并对相应算法进行时间复杂度和空间复杂度计算;体会各种排序算法在最好情况下和最坏情况下的算法评价,并能根据待排序数据的实际分布,制订相应的排序方法。

实验8:数据结构与算法实验总结。全部实验完成后,要求学生回顾所有实验内容,进行一次系统的概括、评价和总结,以巩固通过实验所了解和掌握的数据结构与算法相关知识和技术。

附录:算法描述绘图工具Visio实验。学会在Visio环境下制作算法的程序流程图和N-S图等。

各个实验练习的难易程度不同,实验练习之间的难度不断增加,循序渐进,学生在实验中遇到困难,还可以搜索更早的实验来帮助解决问题。每个实验完成后,要求学生根据个人感受完成实验总结;师生通过“实验总结”和“教师评价”部分,交流对学科知识、实验内容的理解与体会。

4认识与提高

分析表明,学生在“数据结构”等课程中产生的学习困难,首先来自于他们对所学知识缺乏必要的感性认识,而我们在教学中采用“先做后说”的方法,把根据学科理论知识精心设计的实验实践环节与学科理论教学相融合,抓实验实践教学促进学科理论知识学习,较好地解决了学生的认知困难,符合特定的学生对象,取得了很好的教学效果。“通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。”

我们在“数据结构”课程上所做的教改工作,尤其是针对实验教学所做的工作,已经先后体现在如操作系统原理、软件工程、多媒体技术、汇编语言程序设计、网页设计与网站建设,甚至是信息资源管理、电子商务概论、数字艺术设计概论、人机界面设计等课程中,积累了不少成功经验,所编写的系列实验实践教程也得到了全国各地教师的积极评价。

推荐访问:数据结构 教学改革 算法 实验 创新

版权所有:天海范文网 2010-2024 未经授权禁止复制或建立镜像[天海范文网]所有资源完全免费共享

Powered by 天海范文网 © All Rights Reserved.。鲁ICP备10209932号