数据结构课程教学方法探讨
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程教学方法探讨
摘要:阐述了数据结构课程教学中存在的问题,根据该门课程的特点,提出了以激发学生的学习热情为出发点,充分利用有效案例的教学方法。
实施中,将案例分类为课程导入案例和重点解析经典案例两大类,并按数据结构类型给出了重点案例的具体应用。
实践表明,这一教学改革方法效果较好。
关键词:数据结构;教学改革;案例教学
0 引言
数据结构是电子、计算机类专业重要的基础课程,是一门理论与实践并重的课程。
这门课程内容抽象复杂,隐含的技术和方法多,教学中不仅要求学生理解透各种数据结构的算法,而且要用高级语言编程以解决实际应用问题。
因此,学生刚接触时就感觉这门课程抽象难懂,在编程时更是困难重重,造成学生的学习兴趣和主动性普遍不足,
教学目标往往难以实现。
我校信息工程学院早在2004年就将《数据结构》列为全院专业基础重点课程,共安排教学72学时。
结合前两年数据结构课程的教学经验,探索了该门课程有益的教学方法,即以激发学生的学习热情为出发点,重视案例教学法在教学中的应用,取得了较好的教学效果。
1 数据结构课程的特点
数据结构课程包含的具体数据结构达6种之多,每种结构都包含
数据类型的抽象定义、表示和实现3部分,而实现中涉及到的多是一些经典算法。
除此之外,还有像查找、排序等计算机程序设计中频繁使用的操作,也是数据结构很重要的教学内容。
学生首先要掌握这些基本内容,并且要理解透彻经典算法,在此基础上用C语言编程解决实际应用问题。
本课程的内容较难讲授,很多学生本来对数据结构及算法的理解就模棱两可,在实践环节要求用C语言编程时,大多数同学有明显的畏难情绪。
经过与同学的互动交流及平时对教学的观
察思考,我们认为导致教学效果不佳的主要原因如下:
(1)学生缺乏学习的兴趣和动力。
我们在学习中一般都有体会,对感兴趣的东西,学起来有劲头,学习效率也高。
数据结构本身是一门理论性极强的课程,教学大都按部就班地从具体数据结构开始教学,由于首先涉及到数据类型的抽象定义,这部分内容只能是忠于规则、语法的讲解,不容易讲生动,这样课程一开始就提不起学生的兴趣。
接下来一般是举例讲解,后续的实践环节要求学生用C语言编写代码运用具体数据结构解决某一问题,本来对前面的理论没吃透,再加上对C语言并不精通,学生在实验时感觉无从下手。
理论学习
和实验环节的诸多障碍,会使学生产生明显的畏难和抵触情绪。
(2)教学方法的影响。
相比其它应用型课程,数据结构理论较多,对学生的要求高,教材中每种数据结构都用类C语言抽象数据类型来描述,这给课程的讲授带来了一定的困难。
因为教学内容枯燥,不容易长久吸引学生的注意力,加之采用满堂灌的教学方法缺乏和学生的互动,久而久之,学生会强烈排斥学习数据结构,只是迫于考试
的压力勉强应付。
这样的恶性循环最终结果是学生觉得课程难、收获小,教师也感觉费神费力,且效果不佳。
我校该课程一直使用由清华大学严蔚敏教授主编的国家优秀教材《数据结构》,该教材严谨、清晰,内容全面,但明显比其它同类教材难度大,学生在看书过程中产
生很大的逃避情绪。
(3)实践环节的障碍。
数据结构同时又是一门实践性很强的课程,要求学生最终能用C 语言运用所学的数据结构和算法解决实际应用问题,实践环节占了很大的比例。
例如,我们在课程中共安排8个实验,占18个学时。
但由于学生的C语言基础较薄弱,加上对数据结构和算法没有理解透,看懂例程都有问题,更何况自己编程实现。
虽然学生之前已经学习过C语言了,但由于刚刚接触,只能停留在比较简单、低级的水平,尤其是指针、结构体等C 语言的难点,在数据结构中频频出现,学生在编程时往往感觉很吃力,实验课上遇到了拦路虎,有部分学生因为C语言基础不扎实,在实验中处处碰壁后会有挫败感,并逐渐丧失了学习数据结构的学习信心。
2 数据结构教学方法的探索和实践
我们针对数据结构教学中存在的主要问题,结合前两年的课程开展了教学方法的探索,收到了很好的教学效果。
主要以激发学生的学习热情为出发点,调整讲课策略,将案例有效地运用到教学中。
除了教材中的案例,我们还搜集了许多应用案例,并对所有案例进行筛选
归类,分为导入案例和重点解析经典案例两大类。
2.1 趣味导入课程案例,激发学习热情
根据经验,学生喜欢学习他们认为有用的课程,例如DSP、嵌入式等,对于数据结构,总有该门课程偏理论、没用的错误认识,这是数据结构教学效果不佳的很重要原因。
但实际上数据结构属于非常基础和重要的课程,在许多工程实践中能直接用到典型的数据存储结构和算法。
要抓住这一特点,以激发学生的学习热情作为教授课程的切入点,调整以往的讲课策略,不从抽象数据类型的定义入手,而是从案例入手,让学生在深入课程前体会到课程的重要性。
课程导入案例可以选一个或几个,必须是贴近生活的、有趣的,并且刚好能用某种数据结构来描述。
在授课中引入每章知识点之前,先举导入案例,吸引学生的眼球,这样在讲解数据结构的定义之前,学生就已经对这种结构有了感性、具体的认识,况且实例能激发起学生探究如何解决这些问题的好奇心以及学习相应知识的愿望,能很好地提高其学习兴趣。
兴趣是最好的老师,如果能激发学生的学习热情和兴趣,就能在
很大程度上提高该门课程的教学效果。
各章节使用的导入案例整理如下:①线性表,用学生成绩管理系统、航空客运订票系统导入;②栈和队列,用食堂排队打饭、迷宫旅行游戏、八皇后问题、停车场的停车管理导入;③串,用电子英文字典中查单词导入;④数组和广义表,用兑奖算法导入;⑤树和二叉树,用家族谱管理,哈夫曼图像压缩编码导入;⑥图,用市区交通图,专业课程教学计划编排导入;⑦查找,用电话号码查询,高考录取分数线查询等导入;⑧排序,用火车车次排序导入。
这些案例或者是贴近
学生日常生活的,或者是很有趣的。
在导入案例时,一定要注意充分挖掘案例的趣味性、启发性,最好做到恰到好处地从案例过渡到具体的数据结构。
具体以树为例,我们在课堂上首先跟同学互动,问大家有没有见过自己家的家族谱,明显看到同学们疑问的眼神,想老师为什么会问家族谱,跟数据结构又有什么关系,带着这样的问题,注意力自然集中了。
班里有几位同学回答见过,先请这些同学简要描述自己的家族谱的特征,同学们在描述中基本给出了分支、树的概念。
这时肯定同学的描述,并且指出所有的家族谱具备共同的特征,可以用数据结构中的“树”来描述,这样水到渠成地引入树的概念,同学很容易接受,并且由于师生互动对树产生的印象比较深刻,接下来再给出树的三元组定义、二叉树等。
因为带着兴趣,学生的学习积极性就很高,注意力也集中,为后续内
容的教授奠定了良好的基础。
2.2 重点解析经典案例,建立系统概念
课程导入案例是为了激发学生的学习热情,唤起其学习兴趣,这些案例的引入为抽象概念的讲解做了必要的铺垫,能化抽象为具体。
但对具体数据结构的深入理解和运用,还需要系统地深入讲解和实践。
每次讲完数据结构的定义、存储结构、相应的算法后,要想使学生能更好地理解和运用该数据结构,结合实例的编程讲解和实践是非常重要的环节。
对重点解析的经典案例,一定要选取能充分体现这一数据结构特征、涵盖主要算法的,而且用程序实现难易适中的案例。
太复杂的,学生的编程能力有限,如果经常做不出实验会产生强烈的
挫败感,对以后的实验望而生畏。
通过对经典案例的重点解析研究,再到后面实验中代码的具体调试,可以协助和指导学生主动建构同一类知识,目的就是通过该经典案例使学生对理论知识能做到举一反三。