如何改进数据结构课程的教学效果
2010-02-17刘文强顾泽元杨蒙召房春英
刘文强 顾泽元 杨蒙召 房春英
黑龙江科技学院计算机与信息工程学院 哈尔滨 150027
如何改进数据结构课程的教学效果
刘文强 顾泽元 杨蒙召 房春英
黑龙江科技学院计算机与信息工程学院 哈尔滨 150027
数据结构课程是计算机专业最重要的课程之一。如何改进数据结构课程的教学效果,使得学生能够更好地掌握数据结构的相关知识,是所有任课教师所面临的一个重要问题。从4个方面讨论改进数据结构课程教学效果的重要措施,不仅可以切实提高教师的教学水平,而且能够提高学生的实践能力。通过这些措施,使学生从根本上学好本课程。
数据结构;教学效果;教学水平
10.3969/j.issn.1671-489X.2010.27.057
作者:刘文强,硕士研究生,讲师,主要从事算法与数据结构、蚁群算法的理论与应用研究。
Author’s addressComputer and Information Engineering College, Heilongjiang Institute of Science and Technology, Harbin, China 150027
1 引言
数据结构课程是计算机及相关专业的一门重要的专业基础课程,是计算机专业教学计划中的核心课程之一,在整个专业教学体系中占有重要地位,是计算机科学的算法理论基础和软件设计基础。
数据结构课程的研究不仅涉及计算机硬件,而且和计算机软件的研究有着密切的联系,无论是编译程序还是操作系统都涉及数据元素在存储器上的分配问题。因此,学好数据结构课程是学生学习相关后续课程如编译原理、操作系统和数据库系统等课程的重要保证,同时也对培养学生分析问题和解决问题的能力和程序设计与开发能力起着至关重要的作用。
由于数据结构课程知识体系复杂,涉及的内容多,一些概念较抽象,理论性强实践性更强,使得大部分学生在学习本课程时感觉到困难重重,对于一些复杂的算法设计题更是无从下手。这同样给任课教师提出一个问题,那就是如何改进数据结构课程的教学效果,使得学生能够更好地掌握数据结构的相关知识呢?笔者在近几年来的教学过程中发现,改进数据结构课程的教学效果可以从很多方面入手,下面就来介绍一下笔者在这方面的一些心得体会。
2 改进数据结构课程教学效果的几项措施
2.1 针对不同层次的学生采用不同的教学方法
学生是教学中的主体,目前,随着各大学的不断扩招,部分学习能力差的学生也能够被录取到大学,那么如何既不减少教学内容,降低教学要求,又能保证教学质量,让水平不同的学生都能够掌握数据结构这门课程是当前的一个重要问题,这就需要对不同层次的学生进行因材施教,以得到最佳的教学效果。
针对不同层次的学生,数据结构课程应该使用不同的教学大纲或教材,制定不同的教学内容,采取不同的学时分配和不同的侧重点。比如,不同层次的学生包含一本、二本、三本的学生,还包括同一层次不同专业的学生。无论是不同层次还是不同专业,都应该应用不同的教学大纲。对于一本的学生,理解能力、自学能力都比较强,学生基础好,学习主动性强,师资力量也相对较强,那么在授课内容上应该相对难一些,不应局限在表面内容上,应主要侧重于理论的深化和实际的应用上,应该多讲解有难度的算法,如动态规划法等;在课堂教学和实验教学过程中,把主要的知识点讲全,给学生留下大量思考的余地,充分发挥学生的能动性,引导学生对数据结构中的一些算法进行独立的思考和验证,并引导学生在学习的过程中能够应用数据结构的知识解决实际问题。对二本的学生就需要对数据结构中的知识点和所有算法的思路进行详细的讲解和剖析,课堂教学和实验教学过程中应注重理论的讲解和验证。对三本的学生的要求相对要低一些,学生本身对程序设计掌握得不是很好,因此在上课过程中,为了使学生更好地掌握数据结构中的基本原理和基本概念,教学内容应该相对简单,而且有所舍取,分清主次,掌握重点,上课更要注重难点的选择。
2.2 通过良好的语言艺术和生动的例子激发学生的学习兴趣
作为一名大学教师,良好的语言艺术是教师教学艺术的一个重要体现,运用得当将会大大激发学生的学习热情,从而改进教学效果。课堂上,举出生动的例子来说明问题,同样可以激发学生的学习兴趣,改进教学效果。
实际上,讲课可以看成是一门艺术,它也讲究“说、学、逗、唱”。
所谓说,指的是课程内容的讲述、语言的组织、声音的感染性等。
所谓学,一是除了组织和备好自己的课以外,还应多听别人的课,取长补短,将别人之长取来用之,通过别人之短发现自己之短以改之;二是加强相关课程学习,因为往往一门课不是独立的,几门课应作为一个课程群(如C语言、C++、数据结构、算法设计与分析等),只有广泛的学习才能更好理解课程之间的关系,知识点才能展开,才能不是就课讲课。
所谓逗,指的是课堂要活跃。只有具备了“逗”的艺术,才能使课讲活,才能提高学生听课质量。但是逗绝对不能跑题,当学生听得沉闷时,可以给学生讲一些有趣的编程问题,一些相关的有趣的前几届教学过程中发生的事情等。例如当讲到关键路径问题时,一个学生趴下了,笔者会过去把他叫醒,并问:“你的最早睡觉时间和最迟睡觉时间是多少?”可能还会说:“你一天当中除了睡觉还有哪些是关键活动啊?”这样将课程知识与简单的生活常识联系在一起,可以使学生感觉有趣,也可以加深学生的理解。
所谓唱,如果能将所要讲授的知识重点编成歌让学生唱的话,那就是高手。笔者在讲红黑树时就引用北大张铭老师在讲红黑树时放的“红黑树之歌”,还打出歌词,的确起到活跃课堂气氛的作用,至少有一部分精力不集中的学生马上集中精力了。但这对学习课程本身没有多大帮助,占课堂一两分钟足矣。
由于数据结构课程理论性很强,直接从定义出发讲解相关概念学生不易接受,在教学过程中结合日常生活中的事例可大大激发学生的兴趣,而调动学生的求知欲。通过引用实例既形象又直观,进而使学生更加明确结构与算法的作用,提高学生运用算法解决实际问题的能力。
例如,在讲授线性表的链式存储结构时,可以直接以女生脖子上带的项链为例进行讲解。项链解开是一个带有头结点的单链表,戴上后是一个循环链表。还可以尝试找几个学生来演示线性表的链式存储。让所有学生占成一列,每个学生看成是链表中的一个数据元素即链表中的一个结点,他的两只手臂可以看成是他所对应的结点的两个指针域,左手是指向其前驱的指针域,即prior域;右手是指向其后继的指针域,即next域。如果让所有相邻的学生都将他的右手放在他后面同学的肩膀上,这样就形成一个单链表;如果同时把左手放在前一个同学的肩膀上,就形成双向链表结构。在给出这样一个链表的例子之后,学生将大大加深对链表基本操作的理解。例如让指定的学生从队伍中离开,即链表删除操作;向队伍里加入一个学生,即在链表中插入新结点。原本链表的插入与删除操作是学生很容易出错的地方,他们记不清结点链接和断开的语句顺序。但是,面对学生组成的链表,他们很容易理解新结点的插入过程和指定结点的删除过程,这样的教学形式既生动,又记忆深刻,比直接给出操作语句要好得多。
再比如在讲解栈和队列这一章时,可以分别举出日常生活中的事例。如栈的例子,在洗盘子时,依次把每个洗净的盘子摞到洗好的盘子上面,就相当于进栈操作;取用盘子时,又从上面一个接一个地向下拿,相当于出栈操作。队列的例子,以学生在食堂打饭为例,所排的队就是一个队列,刚来打饭的学生站在队列的尾部(即进队),站在队首的人打完饭后离开(即出队),当最后一人离队后,则整个队列为空。
2.3 理论与实践相结合,提高学生的编程能力
数据结构是一门理论与实践结合非常紧密的课程,理论教学与实践教学并不是完全孤立的两个教学环节,而是融会贯通的一个一体化的教学过程,理论教学固然重要,但通过实践让学生巩固这些理论知识更为重要,这样才能使学生真正学会相关知识。但现在大多数高校普遍存在的问题是在理论课堂上学生基本都能听懂,也能做一些习题,应付期末考试绝对没问题,但一到上机实验就会不知所措,不知从何入手,那些编程语言没学好的学生和对编程不感兴趣的学生很容易失去信心,放弃学习,最后只能到处寻求帮助,甚至抄袭别人的实验。这些问题在教学中经常遇到。
实际上,理论与实践结合的关键是理论教学内容和实践教学内容的衔接、糅合问题。首先,可以在讲完一种数据结构后给出一个或几个与该数据结构相关的问题,然后引导学生独立思考,立即自己动手实践,应用所学的知识在现有算法的基础上来解决新问题,使学生现学现卖,学了马上就用,一方面使学生能够加深对所学知识的理解,另一方面也使学生学会灵活运用知识。同时,学生自己通过变换算法解决了新问题,也会有一种成就感,这可以大大激发学生的学习兴趣。其次,在理论课程的教学过程中,还可以把实验的内容分解,作为每节课的课后作业,让学生提前准备,然后再上机操作实现,回答相关的问题,会节约不少的时间,效果也要好很多。最后是课程设计,循序渐进,难度不断加大。这样从课堂的小试牛刀到课程设计的大展拳脚,学生会在实践中逐渐加深对理论的理解。
大学本科的学习实际上就是一个理论与实践相结合的过程,首先是学生对基础知识和基本理论的掌握,接下来学生要在上机实践中去验证这些基础理论,然后在上机实践的基础上加深对理论知识的理解,最后再将理论应用到生产实践中。如此就完成一个教学周期,这同样也就是应用型人才培养的模式。
2.4 采用启发式教学,提高学生的自学能力
目前大多数高校的计算机专业的培养方案中都在逐渐增加一些课程,让学生有多种选择,以培养知识面广、适应能力强的人才。这固然重要,但同时肯定会适当压缩一些课程的计划学时,数据结构课程也不例外。如何有效地利用有限的学时,又不影响教学效果呢?一个重要的方面,就是转变教学组织方法,而启发式教学特别适合于数据结构这门课程的特点,因为本课程除了给学生讲述一些基本的结构及其表示与实现以外,更重要的是提高学生分析问题的能力和学会应用数据结构来解决问题的能力。
启发式教学,是教师不直接告诉学生新知识,而是为学生学习新知识提供事实、例证等,引导学生探索、发现、迁移、自悟,让学生自己获得新知识。启发式教学可以调动学生的学习主动性,启发学生独立思考,发展学生的逻辑思维能力,培养学生独立解决问题的能力。
启发式教学在数据结构的教学中对学生逻辑思维的培养非常重要,教师可将许多知识点和算法与启发式教学相结合,由浅到深地进行引导和讲授,并根据学生的反应不断调整,吸引学生的注意力,激发学生的学习兴趣。启发式教学在应用时一定要灵活,不能限定死。启发式教学运用得当可以增加学生对本门课程的兴趣,但启发不适当的话,有可能使学生产生畏难情绪,从而影响到本门课程的学习。只有教师对所授内容非常熟练,与学生之间能良好互动,效果才更好。因此,教师应该在课下准备适当的案例,针对不同的学生进行有效的引导,使学生在案例分析和解决的过程中完成对知识点的掌握。
3 结束语
数据结构课程在学科专业中的核心地位要求必须注重该课程的教学。文章从4个方面讨论改进数据结构课程教学效果的措施,在课程的教学过程中,只有不断地发现问题、解决问题,才能切实提高教师的教学水平,进而提高学生的实践能力,使学生从根本上学好本课程。
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,1997:3-4
[2]刘文强,顾泽元.在数据结构课程教学中的若干问题及其对策分析[J].中国现代教育装备,2009(3):89-91
[3]郭方玲,吉海珍.启发式教学[M].青岛:青岛出版社,2006:16-17
How to Improve Teaching Effect of Data Structure Course
Liu Wenqiang, Gu Zeyuan, Yang Mengzhao,Fang Chunying
Data structure course is one of the most important courses in specialized subject of computer. How to improve the teaching effect of the course, and enable students to grasp the related knowledge of the data structure is a major problem, which all teachers are facing up to.This paper discusses important measures of enhancing teaching effect in data structure course from four aspects. Not only can effectively improve the teaching level of teachers, but also can improve the practical ability of students. Only through these ways can students grasp this course well.
data structure; teaching effect; teaching level
G642
B
1671-489X(2010)27-0057-03