摘 要:《数据结构》课程是计算机专业一门重要的专业基础课,在专业课程体系中起着承上启下的重要作用。《数据结构》课程的教改研究已经成为热点。本文首先提出了数据结构教学中出现的问题,详细分析了导致这些问题的原因;接着从知识关联、教学手段、网络课堂、课程交叉和考核方式等方面提出5项改革措施,并进行了实践;最后提出进一步改革的设想。
关键词:数据结构 教学改革 知识关联 网络课堂
中图分类号:G642.0文献标识码:A文章编号:1672-3791(2011)11(b)-0169-02
《数据结构》课程是计算机专业的一门专业基础课,教学的主要内容为数据的逻辑结构、存储结构及核心操作的算法设计与实现,是计算机程序设计的重要理论技术基础。学习数据结构就是要让学生学会分析、研究计算机加工处理的对象即数据的特性,以便能根据其特性选择恰当的逻辑结构、存储结构及实现相应功能的算法,并初步掌握对算法的时间和空间复杂度的分析[1]。
鉴于数据结构课程的重要地位,许多学校和教师都对数据结构课程进行了有益的探索和改革。但在实际教学中仍然存在一些问题,本文首先提出了数据结构教学中出现的问题,详细分析了其原因;其次有针对性地提出了5项改革措施并进行了尝试,最后提出了进一步改革的设想。
1 存在的问题及其原因
通过教学实践,发现学生一般都能认真对待本课程的学习,但教学效果并不十分理想,主要存在以下两个问题。
(1)没有从学科的高度把握数据结构课程,没有充分发掘将数据结构与各专业课程的内在关系,教学时往往局限在本课程范围内,缺乏应用实例。事实上,数据结构是大部分计算机专业课程的基础,如何做到即有丰富应用实例,又启发学生对后续课程的兴趣是值得研究的问题。
(2)学生开始学习时很积极,时间一长便没有了动力,感觉枯燥无味。许多学生认为数据结构中各种算法的学习十分枯燥,经分析有以下三点原因:一是不明白学习这些算法有何意义;二是读算法停留在表面,无法领会算法的思想;三是学习大量现成的算法,毫无成就感。
(3)学生缺乏足够的创新能力,这一方面由于教学中缺乏对学生创新思维的训练;另一方面是学生创新意识不足,缺乏创新载体。
结合实际教学经验,笔者分析了产生上述现象的5个原因。
(1)学生基础薄弱。
程序设计语言和离散数学是学习数据结构课程的基础,通过程序设计语言的学习,使学生经过必要的程序设计训练,形成一定的程序设计抽象思维能力。而离散数学使学生理解计算机的运算规则,形成计算思维。然而,部分学生尤其是非计算机专业学生的程序设计能力偏弱,也缺乏从计算机角度考虑问题的思维习惯。对于这些学生来说,知识基础薄弱,原有的知识体系不完善,数据结构的相关知识找不到生长点,导致难以理解数据结构中的概念和算法。即使领会书本知识,由于编程能力欠缺,很难应用所学知识。时间一长,学生缺乏自信,学习热情衰退,产生厌学情绪。
(2)课程本身较抽象。
数据结构课程本身是一门抽象程度较高的课程,对于缺乏实际应用经验的学生来说,理解起来具有一定难度。不少同学反映学完该课程之后不知道能用在什么地方、能够解决什么问题,即使教材上所讲内容都完全掌握,仍然无法应用到实际问题当中。很多学生除了课堂上讲的例子外,找不出该知识点的其他应用,同时遇到实际问题时,也想不出该问题的抽象数据类型。
(3)学习缺乏主动性。
不少学生满足于掌握课堂讲授的知识和完成布置的作业。然而课堂学习受课时限制,很难进行深入和扩展,这导致学生只停留在数据结构的基本概念和原理上,在学习的意义,数据结构的应用和更深层次的理解上缺乏思考,从而使得知识的应用和迁移能力较差。
(4)学习方法不当。
数据结构是培养学生的抽象思维能力、逻辑推理能力,锻炼学生分析问题、解决问题的能力的课程。建立完整的知识体系,使知识融会贯通,并能灵活应用是教学的最终目标。有部分学生死记硬背概念和性质,生搬硬套书本上的存储结构和算法,这完全背离了培养目标。另一个普遍的问题是对上机实验准备不足,在宝贵的上机时间内忙于设计程序结构,编写代码,从而失去了调试代码,发现问题解决问题,以及与指导教师进行交流的机会。
(5)教学方法有待改善。
由于数据结构课程的重要性,相应的教学改革十分受重视。各种教学方法和教学思路被提出,如情境教学[2]、构建主义[3]、研究性教学[4]、启发式教学[5]等。但仍有一些问题,如知识体系不清晰,重点不明确,只讲算法过程不讲算法原理,缺乏案例,讲授内容过于抽象等。
2 教学中采取的措施
总结出问题产生的原因后,我们有针对性地采取了以下5个措施。
(1)广泛联系,不断复习,逐步扩展。
数据结构内容较多,对于各种数据结构如果分别单独学习,很容易将各种数据结构人为地分离,学生很难做到融会贯通和综合应用。事实上,许多实际问题需要综合多种数据结构,利用各种数据结构的优点配合使用。因此每学完一个新的数据结构后,有必要结合之前学习过的数据结构,设计一些多种数据结构综合或对比的思考题。例如,如如何用两个栈实现一个队列,基于两种不同存储方式的大整数运算及性能比较,如何设计算法能够对树的顺序存储和链式存储进行转换等。
除了精心设计的题目外,在授课过程中遇到之前讲授过的知识也应及时提示学生,让学生有一个回忆和复习的过程,如链式存储的线性表的插入、删除操作与单链表十分相似,可以在单链表基础上经过简单扩展得到;森林的遍历与对应的二叉树遍历存在等价关系,可以通过验证说明两者的等价关系;树的孩子兄弟表示法和二叉树中的二叉链表存储是一致的,可以进行对比演示;森林和二叉树的相互转换是相逆的操作,可以在学习完其中一个方面的转换后,马上得到另一方向上的转换方法;二叉搜索树的存储结构实际上是集合存储结构和二叉树存储结构的组合;有序表的搜索算法是对无序表搜索算法的一种改进等等。
(2)应用现代化教学手段变乏味抽象为生动具体。
数据结构课程中的各种结构和算法十分抽象,理解起来有困难。教师可以借助现代化的教学手段使讲授内容变得生动具体,单链表结点的插入、删除中的指针修改、循环队列的使用、各种排序算法、二叉搜索树结点的删除、二叉树的遍历、递归调用等难点算法都可以用动画演示,这样理解起来更加直观生动。另外可以网上下载或者自行设计算法演示软件来演示算法。算法演示软件比单纯的动画更好一些,它可以进行参数更改、单步执行、回退,有助于深入理解算法。
(3)因材施教,重在网络课堂。
利用网络课堂辅助教学对改善教学效果十分有益。借助网络课堂的发布功能,可以把电子教案、多媒体课件、参考资料、课后习题、教学录像等各种课程资源提供给学生;另外,网络课堂的论坛和答疑系统为学生和老师提供了一个交流平台,学生可以随时向同学或老师提问,任课老师也可以与学生充分交流,及时掌握学生的学习动态,调整教学方法。
网络课堂的另外一个作用是实现个体差异化教育。传统的集中授课方式难以实现因材施教,而网络课堂的出现可以让学生根据自身情况,选择素材进行学习。对课堂讲授知识不清楚的学生可以下载课件、教案和教学录像慢慢消化;对于能力较强的学生,可以下载课外材料,学习更加深入的相关知识,对于自己解决不了的问题,可以通过答疑系统向老师请教。
(4)专业课程体系让兴趣可持续发展。
数据结构课程是操作系统、编译原理、数据库系统、计算机网络等一系列专业课的先修课程。数据结构在这些后继课程中存在大量应用。教师可以优先例举这些专业课程中的数据结构应用作为案例。如编译原理中的词法分析程序、操作系统中的中断、计算机网络中的主动队列管理、路由表的构建和维护等问题中采用的数据结构。这样做能让学生认为数据结构对后续课程的学习很重要,有必要学好这门课。另一方面,一些学生仅对计算机领域中的某一方面感兴趣,在课堂上结合后继课程中的例子讲解数据结构知识,有利于将学生对某一领域的兴趣或者某一门课程的兴趣扩展到数据结构中来。
(5)改革考核方式,培养综合能力。
我校数据结构考核是平时40%(包括课堂提问、到课情况、作业、实验报告等),期末考试60%的模式。应该说基本体现了重在平时的考核理念。但是在具体实施中仍存在一些问题,虽然加大了平时成绩比例,但是作业、实验报告并不能准确反映学生表现。笔者将平时成绩分配为随机课堂提问占10%,包括到课情况;大作业、参与项目或者竞赛情况占10%,参与项目或参加竞赛的以项目情况和竞赛成绩为参考,没有参与项目或参加竞赛的学生需要做一份大作业,3人一组,题目可选,期末进行答辩,按答辩成绩给分;实验表现占10%,指上机过程中的表现,包括实验完成情况、程序的质量(时空复杂度、风格、功能、易读性、完整性等)、实验课上与指导教师的交流情况等;平时作业和实验报告占10%。
这种考核方式更注重学生学习过程、能力表现尤其是实验动手能力。以“实时表现”替代“书面印象”。这有利于培养学生的学习习惯和综合能力,同时也有利于提高学生学习的积极性和主动性。
3 进一步改革的设想
《数据结构》课程具有逻辑性强、结构特征明显的特点。因此,以布鲁纳认知发现说和奥苏泊尔认知接受说为代表的认知主义学习理论是一种有效进行创新型能力培养的《数据结构》教学方法。作者计划研究认知主义在《数据结构》课程教学模块中的应用。主要包括:(1)分析和收集教学素材;(2)对知识模块进行改造;(3)设计发现学习的背景和引导步骤。在不断实践和探索的基础上形成各知识单元的认知主义教学方法。
4 结语
本文针对在数据结构教学过程中所发现的问题进行讨论和改革,提出了5个方面的改革措施并在实际教学中应用,实践证明这些措施取得了良好的教学效果,笔者对进一步的改革提出了一些设想,希望能够更好地提升教学效果。
参考文献
[1] 严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2007:1~10.
[2] 段明秀,陈国平.何迎生.内外兼修——数据结构课程教学新思路[J].计算机教育,2011,2(4):30~33.
[3]张立,石岩,张洪萍,等.建构主义教学理念下的“数据结构”重点课程建设[J].计算机教育,2011,3(6):69~72.
[4]布辉,刘冉.研究性学习教学模式在数据结构课程中的应用[J].电脑知识与技术,2011,7(3):583~585.
[5]杨文忠,张振宇.启发式《数据结构》教学[J].科技信息,2010,36:517.