◆吕雅丽
(河南中医药大学)
“数据结构”课程实验教学的研究与探索
◆吕雅丽
(河南中医药大学)
“数据结构”课程是高等院校理工科专业的一门必修课程,其实验教学环节不仅帮助学生理解数据结构的基本概念和基础算法,而且培养学生良好的算法编写技能,锻炼学生通过编程解决实际问题的能力。本文针对“数据结构”课程实验教学环节中存在的问题,将整个实验教学分成基础篇、提高篇、专项篇等三个阶段,设计和实现了与实例紧密结合的分层次的实验教学模式。这一教学模式由易到难、由单一到综合,逐步培养学生的算法编写能力,在教学过程中也取得了良好的效果。
数据结构 实验教学 实例
“数据结构”课程是高等院校理工科专业的一门必修课程,是计算机科学领域中的一门重要基础课。该课程主要介绍如何利用算法实现各种数据在计算机中的存储和处理,其重点学习内容包括:顺序表、链表、栈和队列、数组、树与森林、图、查找、排序等。通过本课程的学习,使学生深透地理解数据结构的基本概念和基础算法,培养学生良好的程序设计技能,锻炼学生通过编程解决实际问题的能力。为后续相关专业课程的学习打下坚实的基础,为从事计算机科学领域的研究和开发打下理论和实验的基础。
“数据结构”的课程实验不仅帮助学生理解数据结构的基本概念和基础算法,而且培养学生良好的算法技能,锻炼学生通过编程解决实际问题的能力。
在大多数院校,按照教学大纲和实验大纲安排,“数据结构”课程一般在大学期间的第三学期或者第四学期开设,并且前期已开设一门程序设计基础课程。其总教学学时72学时,其中理论教学54学时,实验教学18学时。目前,在实验教学的整个过程中存在以下几个问题。
1.学生对实验教学重视程度不够。“数据结构”课程的理论知识多是用伪代码写的,学生往往侧重于算法的理解,忽略了算法的实现。教材中的算法往往是伪代码或者是程序段,学生要想将算法实现,就需要把伪代码或者程序段放到带有数据的实例中,用正确的、可执行的程序实现,然后调试运行,查看算法结果。而这一过程,一方面,比较复杂;另一方面,不是“数据结构”课程的重点,所以往往会被老师和学生忽略。但是这一过程恰恰是帮助学生透彻理解算法,帮助学生把算法与实际应用结合。
2.实验项目设置关联性。每一个实验项目对应一定的理论知识,实验项目之间不相关,学生做完做不完都不会影响下次实验,导致很多学生对一些实验不够重视,主动性不高。有一些学生在个别实验项目没有做完的情况下,没有主动的在课下完成,在下次实验课上也没有主动积极的补做,时间久了,越积越多,最终导致这门课程学得不好,也必然影响后续课程的学习。
3.实验项目内容设置缺乏与实例的结合。实验不仅仅是理论知识巩固,更是知识总结和能力的提高。实验内容的设置不能仅仅考虑理论知识体现,更应考虑如何让学生在理解理论的同时和实际应用相结合,培养学生把理论应用于实际的主动性。目前,大多数学生学习态度是被动的,不愿意去多想,不愿意去扩展。教师在设计实验项目时要引导他们去联系实际,去扩展内容。这样持续下去,学生才会在掌握理论知识的同时,和实际应用相结合,掌握算法的精髓。
针对以上存在的问题,在“数据结构”实验教学中我们设计了与实例紧密结合的分层次的实验教学模式。这一教学模式由易到难、由单一到综合,逐步培养学生的算法编写能力。我们将整个实验教学分成基础篇、提高篇、专项篇等三个阶段,每个阶段完成一定的知识目标和理论目标。
多数高校的教学计划中,“数据结构”课程的实验教学是18学时,我们将18学时分为9个实验项目,分别为:顺序表的操作、单链表的操作、栈的操作、队列的操作、数组的操作、二叉树的操作、图的操作、查找操作、排序操作。不同实验项目结合不同的实例,划分到不同的层次,具体实施如下。
1.基础篇。“数据结构”实验教学的初级阶段属于基础篇的内容,是对教材的理论知识点的简单实现。实验项目中顺序表的操作、单链表的操作、栈的操作、队列的操作等属于基础篇的实验,这一阶段的实验实例相对简单,重点在于让学生掌握基本的数据结构类型。这一阶段的顺序表实验和单链表实验用的实例是学生成绩管理系统,这里对学生的信息只存储学号和姓名,成绩信息可以存储一门到三门课程的成绩。这样数据比较简单,着重让学生掌握线性表的顺序存储和链式存储。对于栈的操作采用的是火车车厢重排问题的案例,这里要求学生也要通过顺序和链式两种存储方式实现。对于队列操作的实验采用的实例是银行排队叫号系统。在银行排队叫号系统这一实例中要求学生不能仅仅使用一个队列,一次简单的先进先出操作实现,需要学生考虑到一个排号队列,多个叫号队列的情况,让学生有所思考,从而实现对队列操作的深入理解。
2.提高篇。通过基础篇实验的学习,学生对线性表、栈、队列等基本数据结构有了深刻的认识,对顺序存储结构和链式存储结构的使用有了一定的基础。接下来要学习的是较为复杂的数据结构:数组、树和图。数组的操作、二叉树的操作、图的操作等实验就是提高篇要完成的实验内容。这一阶段接触的是复杂的数据结构,但核心还是运用基础篇学习的基本数据结构,实例的选择也会较为复杂。数组操作的实验选择的实例是超市物品购买数据存储系统。这个实例中要处理的数据不是简单的数组,其需要的数组较大,但存储的数据较少,这就是典型的系数矩阵。在现实生活中这类数据经常遇到,对这类数据的存储和操作就要通过数组操作的实验进行学习和掌握。树操作通过二叉树实现的,所以树这一章节的实验设置的是二叉树的操作,结合的实例是磁盘文件的记录系统,着重是运用线索二叉树的知识。图操作的实验用的实例是高速公路交通网这一经典案例。这一实例不仅运用了图的遍历操作,还用了最短路径等经典算法。通过这些提高篇的实验项目学生对复杂的数据结构有所掌握,也对数据结构的复杂应用有所了解。
3.专项篇。对于大多数数据的处理都会用到两种典型的操作:查找和排序。数据结构课程的后期都会讲到这两项内容,同样也会有两项专门的实验来对应。查找操作和排序操作采用的实例分别是奥运会奖牌的排行榜的查询和排名,着重让学生掌握不同的查找方法和排序方法。需要学生熟记一些经典的查找算法和排序算法,会对不同的算法比较优劣,同时也对时间复杂度和空间复杂度有所了解。
基础篇、提高篇、专项篇这三个实验阶段,由易到难,相辅相承,让学生逐步掌握不同数据结构的定义和使用,进而培养学生的算法编写能力。具体在实施过程中根据学生的实际接受情况和掌握情况对具体实验内容进行增减。
我们在2012级学生的“数据结构”课程教学中开始探索这一实验教学模式,在2013级学生的“数据结构”课程教学中进一步完善,效果很好。学生学习的积极性明显提高,学习效果也有了明显的提高。
经过一系列的实验教学实践,我们针对“数据结构”课程,探索出了由基础篇、提高篇、专项篇这个三个阶段组成的与实例紧密结合的实验教学模式。这一教学模式由易到难,逐步培养学生的算法编写能力。今后,我们将继续结合教学实际进一步完善实验教学文件、丰富“数据结构”课程实验内容和课程设计的内容,从而提升“数据结构”课程的教学效果。
[1]黄贤英.计算机专业实验教学体系建设思考[J].实验技术与管理,2009,(10):94-100.
[2]马彬.三维一体化的计算机实验教学建设体系[J].实验室研究与探索,2013,(10):163-165.
[3]孙爱东,杨秋妹,肖媚燕.多层次的“数据结构”实验教学模式探讨[J].教学改革与研究,2009.