首页 理论教育 电子技术学院数据结构教学改革案例

电子技术学院数据结构教学改革案例

时间:2023-11-28 理论教育 版权反馈
【摘要】:只有熟知了“数据结构”课程的基本特性,才可能全面、客观、理性地了解这门课程,进而制定有针对性的教学目标和教学方法。由此可见,“数据结构”课程教学改革势在必行。要进行“数据结构”课程教学改革,首要任务是在了解课程特点的基础上,摒弃诸多误区,树立有针对性、有预见性、有可操作性的教学目标。“数据结构”课程教学要求学员掌握分析问题的能力,培养科学的思考习惯。

电子技术学院数据结构教学改革案例

数据结构课程教学改革思考

毛秀青

(信息工程大学电子技术学院四系,河南郑州450004)

摘 要 本文针对“数据结构”课程的特点,分析当前“数据结构”课程教学中存在的问题,引出了“数据结构”课程教学改革的必要性,提出了改革的目标以及应采取的方法,此方法在实际教学中取得了较好的实践效果。

关键词 数据结构;教学改革;教学方法

一、“数据结构”课程的特点

“数据结构”课程是一门计算机相关专业的专业基础课程,是计算机学科体系的核心课程,具有以下四个方面的特点。

(一)“数据结构”课程具有较深的理论性

“数据结构”课程所强调的理论分析是其理论特性的主要表现形式。从前趋课程“离散数学”的理论铺垫,到课程本身研究的各种离散结构,如表、树、图、集合等逻辑结构,以及它们在计算机内部的存储结构和实现各种数据结构的相关操作算法的理论分析,计算机处理数据的方式的分析研究,算法的时间与空间复杂性分析理论,都是理论知识的提炼与升华。

(二)“数据结构”课程具有较强的实践性

“数据结构”课程注重动手实践。理论和实践的辩证统一关系指出,理论的学习必须付之于实践之后,才能解决实际问题。比如,解决任意网络的选举问题,适当运用树型数据结构,就能起到事半功倍的效果。同时,编程实现反过来又能很好地促进对理论知识的吸收。比如,讲到链表的“断链”现象时,难以理解,如果上机实践,对比两种截然不同的结果,则豁然开朗,这说明,实践的成功对抽象概念的理解大有裨益。

(三)“数据结构”课程具有较高的抽象性

“数据结构”课程是从抽象角度描述各种数据结构的。通俗地讲,就是把现实世界中的各种相似问题,抽象成一类相同的数据结构,从而便于讲解这些抽象的数据结构的含义、存储方法及各种算法。通过对“数据结构”课程本质属性的剖析,笔者发现抽象性是与“数据结构”这门课程相伴而生的。然而它的抽象属性,也正是本门课程教学的难点。如何用通俗易懂的语言使“生硬”的抽象概念变得“生动”起来?答案就是授课教员必须练就较强的理解能力以及对问题深入浅出的阐释能力。

(四)“数据结构”课程具有承前启后的作用

“数据结构”必要前驱课程包括“程序设计语言”、“计算机组成原理”等,程序设计语言作为辅助工具,用来实现各种算法,计算机组成原理有助于进一步理解算法的实现过程。同时,掌握各种数据结构之后,对后续课程,诸如“操作系统”、“编译原理”、“计算机网络”及“数据库原理”的学习也起到过渡的作用,因为这些课程中用到了大量的数据结构类型。可见,“数据结构”作为一门专业基础课程,不仅是构筑计算机体系结构的核心课程之一,而且对整个计算机学科课程教学起到承前启后的作用[1]

“数据结构”课程作为本文的研究对象,对其属性的分析与界定显得尤为重要。只有熟知了“数据结构”课程的基本特性,才可能全面、客观、理性地了解这门课程,进而制定有针对性的教学目标和教学方法。

二、“数据结构”课程教学改革目标

虽然“数据结构”是计算机学科中的基础课程,但是正因其理论性强、抽象概念多、实践不容易上手和学习前必须有扎实的计算机基础等要求,就注定了这门课是一门教员难教、学员难学的课程[2,3]。这样的课程就对教员提出了更高的要求,它要求教员必须具备丰富的教学经验,掌握驾轻就熟的技巧,但是通过对目前高校“数据结构”教学现状的分析[4],发现在这门课程的教学中存在许多问题,比如:教学目的性不明,致使学员丧失学习积极性;教学内容不合理配置,致使理论和实践脱节;教学方式的陈旧,致使师生之间缺乏交流和沟通等。由此可见,“数据结构”课程教学改革势在必行。要进行“数据结构”课程教学改革,首要任务是在了解课程特点的基础上,摒弃诸多误区,树立有针对性、有预见性、有可操作性的教学目标。

(一)全面领会教学目标,真正做到教书育人

目前“数据结构”课程的教学,注重对知识目标的讲解,往往忽视能力目标和思想目标的培养。这样的教学误区往往是致命的,所以本文认为“多层次目标”的确立,是全方位、多层面提高学员能力素质的必然要求。

(1)知识目标。根据课程标准的要求,“数据结构”这门课程,要求学员理解并掌握各种抽象数据类型、存储结构以及算法的知识,掌握这些知识目标是教学过程最基本的要求。比如,什么是数据、什么是数据结构,什么是抽象数据类型;从抽象数据类型角度,正确理解线性表(栈、队列、串、数组与广义表)、树、图的相关知识;熟练掌握操作系统和编译程序中涉及的动态存储管理基本技术;从时间上定性、定量分析比较各种数据结构的性能,包括查找与排序等。这些基本知识目标的实现,是实现能力目标和思想目标的基础和保障。

(2)能力目标。“数据结构”课程的最终目的是为了培养学员解决实际问题的能力[5]。通过上机实验,完成各种数据结构算法的设计,熟悉针对作为存储结构的线性表、树和图的查找、插入和删除等基本操作的实现方法,提高学员分析问题与解决问题的能力,尤其是通过对线性表的存储结构和线性表操作的具体分析,理解采用线性存储结构的优势,体会选择合适数据结构编写高效运行算法,解决实际问题的优点。

(3)思想目标。“数据结构”课程教学要求学员掌握分析问题的能力,培养科学的思考习惯。比如如何针对顺序表的特点,对其进行改进,从而引出链表的思想;由于上机实现对理解链表非常重要,要让学员充分重视上机操作,通过分析、设计、完成上机任务,培养学员勤于动脑、大胆实践、勇于探索的学习习惯,以及通过对出现问题的解决,培养学员严谨的思维习惯。

(二)深刻理解教学内容,教学过程由表及里

对于“数据结构”课程教学内容的深刻理解,有助于教员的“教”和学员的“学”。“教”和“学”是两个截然不同的概念,把教学内容看明白了,未必能教好,“教”涉及的范围更广、要求更高。

如果对知识的把握是“点”式的,而没有把诸多的点串成线或进一步连成面,则教学过程很可能流于表面。这是因为,学习过程是“由点及面”的,而教学过程是“由面及点”的。比如,对线性表部分的数组与广义表的讲解,不同教员有不同的安排,但“万变不离其宗”,都要保证认知、教学的连贯性和科学性。(www.xing528.com)

(三)积极学习教学方法,提高课堂掌控能力

如果教学方法单调,很难在教学上取得良好的效果,所以教学方法是学员乐于学习的“催化剂”。如何使教员更加有效地掌握好的教学方法呢?一方面学校鼓励教员加大锻炼力度,经常参加各种教学比赛和公开活动,以便增加教员之间的相互沟通学习机会;另一方面要求教员以撰写教学论文的形式,定时、分阶段、分学科总结教学经验,强化教学改革观念,在相关教学刊物上公开发表,促进全国高校相同学科间的学习和交流。

三、“数据结构”课程教学改革方法

(一)认清教学对象,做到“知己知彼”

对于教学对象的准备,是教学前非常重要的一点。正所谓“知己知彼,百战不殆”,只有认清了教学对象,才能有的放矢,心中有数。

比如,在传统教学计划中,“数据结构”课程是学员在具有计算机程序设计基础后接触的第一门与程序设计密切相关的课程。在教学初期,教员最容易忽视两个问题:问题一,由于程序设计基础课程课时较少,任课教员往往注重程序设计基本语法和程序结构的讲解,在讲到程序设计精华——结构体和指针时,课时大多已剩不多,教员对这部分内容容易忽略,这就导致学员对结构体和指针的知识掌握少,上机实践时间短,理解不透彻。然而数据结构中存储结构以及相关算法的描述,离不开结构体和指针的知识,这就造成了一大串相关知识成为“理解盲区”。问题二,数据结构中的很多算法涉及的函数调用在教材中根本未描述或者只是在前面章节中概述过,一般不能直接在计算机上运行,需要学员自己进行转换,重新编程后才能运行,给学员学习和理解数据结构造成了很大的困难[3]

这时,需要教员摸透教学对象接受知识时可能存在哪些盲区,在第一次讲解算法时,适当讲解一下结构体和指针的基本知识,为后续算法的讲解扫清障碍。另外,教员对以上提到问题二的解决需要在第一次上机实验时,跟学员讲解如何把教材中的代码转换为学员熟悉的C或C++代码,让学员有路可寻。

(二)优化教学内容,做到“对症下药”

不同专业、不同授课对象有不同的教学目标与要求,这就要求老师能够针对具体问题具体分析,优化教学内容。比如对于“数据结构”与“操作系统”同时开课的学员,可以讲解动态存储管理基本技术;对于“数据结构”这门课课时设置较多的专业,可以讲解外部排序和常用的文件结构内容;针对学员的掌握情况,可以合理安排数组和广义表的讲授时间,放在串之后讲还是放到讲完树或图之后讲,可以灵活掌握。

(三)运用科学方法,做到“事半功倍”

在很多参考文献中都谈到了各种先进的教学方法,比如参考文献[2]通过将CDIO教学模式运用于“数据结构”课程,倡导“做中学”和“基于项目的教育和学习”;参考文献[3]中,将Authorware和Java中多线程思想运用到“数据结构”课程中,等等。诸如此类的教学方法,我们都可以有选择地吸收。在学习同专业先进教学方法的同时,笔者还非常根据自身教学实践情况,不断积累和改进行之有效的教学方法,笔者总结为“一问、二活、三法、四带、五讨论”11字口诀,在这里简要分享一下。

(1)一“问”。根据教学的实际情况,把每节课的最后5分钟,留给学员提问。学员提问一方面有利于营造浓厚的学习氛围,另一方面也有利于答疑解惑,要坚持疑难问题“零保留”原则,本节知识本节课内最大化吸收。另外,在课堂引入时,也采用提问的方式,引导学员回忆上节课内容,较快进入本次课程的学习。

(2)二“活”。由于“数据结构”课程的理论性与抽象性,学员难免觉得枯燥,这时就要学会搞“活”课堂。一方面通过改变课堂授课方式,分组研讨,倾听学员对问题的分析,并通过学员问卷调查收集有针对性的教学信息反馈,教员及时给予正确引导与纠正。另一方面,在讲解基本概念、算法过程中,穿插适当的课外知识,比如讲单链表的存储结构之后,很多学员很茫然、一头雾水,适时穿插讲一下“疯狂程序员”的典故,激发起学员的兴趣,把学员的注意力集中到PPT或黑板上来,然后把握住学员注意力“黄金时段”,及时切入链表算法操作的讲解。当大家注意力最集中的时候,讲重点的内容,使更多人记住重点。

(3)三“法”。修改PPT内容,PPT上尽量不出现课本上大段的文字内容,主要运用动画、图片、流程图方式,讲解链表基本概念、操作算法步骤、应用方式方法等。另外,通过学员上黑板前实际操作链表,解决问题,使课堂活跃,使师生互动。至于实验内容,上机前,给学员讲实验内容与要求,要求自己构思实验方法、步骤,对于实在无法完成的学员,从分析代码功能入手,因人施教,殊途同归。

(4)四“带”。针对高校课堂上经常出现的成绩好的学员前排集中,成绩差的学员后排集中,甚至部分学员睡觉情况,教员可要求学员自觉打乱座位,这样从“形式”上就形成了“实力”分散。另外,通过课堂教学情况了解,可采用部分学员担任教学辅导角色的方法。比如对于参加过建模比赛,自学过数据结构的学员,让其讲一下编程中灵活运用数据结构的实例,使学员更加感同身受;对于准备考研的学员,让其整理课后习题答案,讲解习题中容易犯错的情况等,通过树立“先进”,带动整体成绩提升的方法,可视为一个行之有效的改革。

(5)五“讨论”。比如讲到链式结构特点时候,教员去对比归纳远没有学员自己讨论,对学员的启发更加深刻。讨论的作用是,启发学员从多角度去发现问题,分析问题,解决问题,加强自主学习与自主创新。学员讨论与教员引导相结合,有效贯彻教学相长的理念。

四、总结

“数据结构”课程因其自身的特殊性,教员在教学过程中会遇到很多困难,这种课程的教学改革,更需要教员具有挑战精神。墨守成规不是教学的出路,逃避问题更不符合教学改革要求,只有勤于学习、善于发现、乐于创新的教员,才能担此重任,所以教员应结合课程特点,认真分析教学对象的认知过程,多渠道获取有效的教学信息反馈,研究教学内容分配体系,善用具有可操作精神的教学方法,这样才能制定适合“数据结构”这门课程的教学计划,只有这样才能形成自己独特的教学风格,达到高标准的教学目标,教出符合时代要求的人才,真正把“数据结构”这门课程做成精品课程。

参考文献

[1]耿国华.数据结构——C语言描述.北京:高等教育出版社,2006.

[2]和薇.CDIO模式在“数据结构”课程中的运用.计算机教育,2009(20).

[3]孙歧峰.“数据结构”课程教学反思与改革.计算机教育,2009(22).

[4]葛云生.《数据结构》课程教学改革与探索.高教论坛,2010(1).

[5]严蔚敏,吴伟民.数据结构(C语言版).北京:清华大学出版社,1997.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈