《数据结构》课程教学改革与实践

2013-08-15 00:54
山东工业技术 2013年10期
关键词:数据结构算法课程

于 丽

(新疆警察学院 信息安全工程系,新疆 乌鲁木齐830011)

0 引言

《数据结构》课程是计算机程序设计的重要基础课程,它不仅是计算机专业的核心课程,而且已成为许多高校信息类相关专业的重要课程,是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础,研究数据结构的目的是为了编写更高效的程序。同时它也是计算机专业研究生考试、大专学生专升本的首选考试课程[1-2]。学生虽然认识到该课程的重要性,但学生在学习这门课程时,在课程中涉及到大量的概念、数据的存储结构以及各种各样的算法,这些对于刚学过一门编程语言的新生来说,是非常抽象的。在教学过程中学生普遍反映学习起来非常困难,教师也反映教学效果不尽如人意。因此,如何学好、怎样教好《数据结构》成为学生和教师普遍关注的一个问题。

1 《数据结构》课程教学中存在的问题

1.1 学生的学习兴趣不足

在教学中,学生刚接触到《数据结构》课程时,总认为《数据结构》是一门理论课,感到枯燥、乏味,学习兴趣不浓,甚至有学生认为不学数据结构照样能编出程序。数据结构是门理论性与实践性并重的课程,注重培养学生利用理论知识解决具体问题的能力的培养。如果仅仅满足于讲解清楚,而不注意教学的生动性,学生的学习行为只能是种被动行为,为了考试而学习。最后导致学生死记硬背课堂讲解的知识点,把一门实践性很强的课程变成了一门内容枯燥、乏味,需要大量记忆知识点,与实践完全脱钩的课程。

1.2 对前导课程掌握不够扎实,程序设计能力不足

学生在学习《数据结构》课程时,由于其前导课程掌握不好或没能熟练掌握(高级程序设计语言或面向对象程序设计),导致学习《数据结构》课程时感觉很困难。数据结构中的算法多数由类C/C++ 实现,在学数据结构之前,已经系统的学习过C 语言的相关知识,但由于学生刚刚开始接触程序设计语言,对其中的很多知识的掌握只停留在纸面上,没有能够融会贯通,导致用计算机解决问题不可能得心应手。同时对C 语言描述的高度抽象的算法理解困难,算法思路有,但编制程序又无从下手,特别是C 语言中的指针和结构体部分,在数据结构用得较多,在设计算法以及上机调试时有困难,学生对程序语言的掌握程度直接影响算法设计的质量。

1.3 教学模式陈旧,教学手段单一

在《数据结构》课程的教学过程中,长期以来,我们遵循以教师为主体,学生被动学习的传统教学模式,仅局限教师 “满堂灌”、“填鸭式”。对于数据结构这样一门概念、算法繁多,需要较强逻辑思维能力的课程仍采取传统教学模式,就很难取得良好的教学效果和达到预期的教学目的[3]。数据结构中有些算法的演示利用传统的粉笔加黑板的教学方式,缺乏直观性效果,难以充分展示算法的动态变化过程,学生难以想象数据之间的复杂关系。近年来,数据结构的教学已经大量采用多媒体教学,但是采用简单的PPT,仍然不能很好的解决这样的问题,且存在多媒体授课信息量大,学生听课时强度大,理解困难,严重影响了教学效果。

1.4 理论教学与实际应用脱节

《数据结构》课程本是一门实用性很强的课程,但内容抽象、琐碎、庞杂,涉及很多概念和技术。所有这此内容均自成体系,相互之间的衔接线索很少,总体感觉内容零散,没有个整体的知识框架体系。这些内容在实际应用中又都很重要,而现行的教学计划实践课时普遍不足,实验课安排的实验项目很难含盖课程的所有知识点。同时实验内容的设置上,往往都是大量的验证性实验内容,缺乏对实际问题的解决,学生在实验之后仍然不知道学习数据结构在解决实际问题的。因而在具体应用上并没有教会学生解决问题的思路、算法思想和数据结构的使用,在实验中只能停留在完成课本内容,而对实际问题则是无从下手,这些都是教学脱离实际的最现实写照。

1.5 《数据结构》课程中的结构比较抽象

《数据结构》课程本身是一门抽象程度较高的课程,对于缺乏实际应用经验的学生来说,理解起来具有一定的难度。我们通常所说的数据结构,指的是数据间的逻辑结构,如线性表、二叉树和图结构[4]。尽管很多教材为了使理论更加直观和易于理解,在编写时配了很多图示,但在实现这些结构的操作时,学生还是感到不知如何下手。不少同学反映学完该课程之后不知道能用在什么地方、 能够解决什么问题,即使教材上所讲内容都完全掌握,仍然无法应用到实际问题当中,除了课堂上讲的例子外,找不出该知识点的其他应用,同时遇到实际问题时,也想不出该问题的抽象数据类型。

2 《数据结构》课程教学改革措施

2.1 注重培养学生的学习兴趣

俗话说,“兴趣是最好的老师”,如果要学生学得好,首先就要让学生对该门课程产生兴趣。教好《数据结构》这门课,一定要从培养学生的学习兴趣开始,因此在进行数据结构课的第一次授课中,并不急于介绍理论,而是强调应用,通过介绍数据结构在实践中的应用来激发学生的学习兴趣。如多岔路口交通灯管理问题;1997 年轰动一时的国际象棋“人机”大战,由国际象棋大师与IBM 公司的计算机进行国际象棋比赛,为什么最终计算机能够取得胜利问题;图书馆的书目检索系统,如何组织图书的登录号、书名、分类号等数据才能快速实现查找、插入、删除操作;旅游路线设计问题,如想去上海、南京、杭州、苏州等地旅游,怎么样安排线路以求花费最少等等。以上应用都是贴近生活,学生比较熟悉,通过实际问题的分析,明确数据结构课程的重要性与实用性,激发学生学习学习兴趣。此外,如果教师在讲授该门课程过程中,同时,能够引入一些生活中的实例,引导学生巧妙处理生活中的日常问题,让学生感受到《数据结构》这门课程与现实生活中的关系,就更加能够提高学生的学习兴趣。

2.2 教学中补充前导课程的教学内容,加强编程训练

《数据结构》课程是在学生有一定的程序设计基础的前提开设的,C 语言程序设计是数据结构的前导课程之一,学生对它的熟悉掌握程度,直接关系到数据结构课程的教学效果。C 语言本身的灵活性,对于刚刚学完C 语言程序设计的学生而言,运用不一定很自如。另外,C 语言难点就是指针、函数、数组作为函数参数以及结构体类型等,而数据结构课程教学过程中主要运用这些知识点来分析、解决问题的。对于大部分学生来说,C 语言运用能力不是很强,如果上课时直接切入主题,他们就会有“云山雾罩”的感觉。如何来解决这个问题呢?我们可以利用一、两次课的时间(2-4 学时)来复习C 语言的相关知识,即数组、指针、函数和结构体等。可以将这些学时纳入到教学进度表中,教师在复习并不是面面俱到,而是将与本课相关的内容做以归纳总结,这样既可以复习以前的知识,加深印象,强化理解,又可以为数据结构课程的教学做铺垫。

基于C 语言的数据结构,一个算法对应一个函数,这样做的目的是为了摆脱源程序的繁琐,以便将精力集中在算法思想上。所以在大部分教材中,几乎看不到一个完整的程序,也正是这个原因,给初学者带来了很大的不便。对刚进入本课程学习的前几个算法给出完整的程序,并加以详细讲解,使学生理解算法和源程序之间的关系。

当然,进行一定的编程训练也是必不可少的。可以通过课堂练习、实验和大作业训练,可以让学生对C 语言各方面知识作一个整体掌握,对比较重要的内容更要加强练习。同时,还可以将所学的“数据结构”的知识具体化,与实际问题相结合,提高综合解决实际问题的能力。

2.3 搭建整体知识框架

“数据结构”内容繁复,高度抽象,广泛涉及软、硬件的各种知识,应给学生理出清晰的几条主线,在他们头脑中搭建课程的整体框架。在教学过程中,首先,要分析教材各个章节的关系,从课程要求的大局出发,由浅入深把握主线,采用纵横对比的方法,详细介绍《数据结构》课程体系。《数据结构》是研究非数值计算的程序设计问题中所出现的计算机操作对象(数据)、数据之间的关系(数据的逻辑结构)、对数据的操作(各种不同算法)、算法复杂性分析等内容的一门学科。每一种数据结构,都要搞清其逻辑结构、存储结构、常用操作、算法性能分析、实际应用五个方面。其次,要吃透教材、突出重点[5]。对于数据结构课程,其基础的且为重点的内容应该是“表、树、图”三大数据结构和“查找、排序”两大类算法。还有很重要的是讲好课程介绍即第一堂课,使得学生能够理解该课程在整个计算机专业体系中所处的位置和该课程的重要性,为学好课程打好基础。

2.4 采用多种教学手段

在教学过程中要始终贯彻以学生为主体,教师为主导的教学模式。教学方式要力求多样化,对不同章节的不同内容可采用不同教学方法。

采用问题驱动教学法。问题驱动是指学生在教师创设的情景下,应用已学知识提出相关问题,继而解决问题的过程。在《数据结构》课程的教学过程中,教学除了讲解基本的理论知识外,还要注意引导学生去分析问题、抓住本质、组织数据、设计算法、解决问题,并且要求学生能举一反三,触类旁通,从而培养学生的综合能力。

实例教学法。《数据结构》课程理论性和逻辑性较强,学生理解起来有一定难度,在讲授的时候,结合生活中常见的实例进行讲解并与学生互动,会有利于学生的理解。在教授过程中可以提出一些模拟现实的课题,分组来组织学生对课题展开讨论,在讨论的过程中发现问题,提出问题,老师参与学生的讨论,并针对问题讲述解决问题所需要的数据结构的知识。这样既增强了师生之间的交流,也让学生由被动的“听课”变主动地学习课程,可充分调动学生学习的主观能动性;同时,学生的分析问题、解决问题的能力也可得到很大提高。

为了让学生在有限的时间内更好的掌握知识,可以采用融合了多媒体技术的计算机辅助教学(CAI)。还可以采用现有的DSDEMO 数据结构课件演示系统,进行演示,这样可以使教学内容变得更直观、形象、生动和有趣,从而取得良好的教学效果。

同时利用计算机网络构建教学支持平台。充分发挥校园网的作用,利用计算机网络辅助教学,将《数据结构》课程的教学大纲、电子教案、电子课件、程序案例以及相应的教学资料,进行汇集整理,逐步积累,最终集成一个资料丰富的网站,放在校园网上师生共享,形成一种全新的教学模式,因材施教,以便充分发挥学生的学习积极性和主观能动性。另外也可以设立辅导答疑时间,利用网络进行答疑,解决同学们在课余时间遇到的问题。

2.5 加强实践环节,培养学生实践能力

《数据结构》课程有很强的实践性,应注重培养学生利用理论知识解决具体问题的能力培养。为使学生真正学好“数据结构”,除了在课堂上要采用行之有效的教学方法外,还要让学生勤动手,多实践。上机实践是对学生综合素质进行训练的一种最基本方法,是与课堂听课、课余自学和练习相辅相成的、必不可少的一个教学环节。在实践中遇到的问题往往比平时的习题要复杂得多,也更接近于实际。在安排实训项目时,从简单程序起步,逐步加大难度,使学生的编程能力得到锻炼。在授课过程中重点从以下几个方面进行了探索实践:第一,合理设置实训内容,力争与理论课的重点、难点及实用知识联系起来,选择有具体应用背景的实训题目,充分发挥学生的主动性;第二,注重实践过程,注重学生综合能力的培养;第三,为了培养学生的创新意识和团队协作精神,促进学生之间的交流和协作,使不同水平的学生都能在大型实验项目中担负起相应的工作,特别设计了一套针对综合型实验和探索创新型实验考核方法。

根据不同的实验项目采取不同的考核方式,基础型和设计型实验项目安排在平时每周的上机实验课进行,根据学生提交的实验报告进行考核。综合型和创新型实验项目较大,需要学生分工合作,共同完成,一般对学生进行分组,每组完成一个实验项目,在课程设计环节完成,一般有两周时间,教师根据每个学生在组内的表现给出一个考核成绩,项目完成后,再根据各组提交的项目报告和项目的质量给出合理考核成绩。这样既激发了学生的创新能力,又提高了学生的团队合作精神。

3 结束语

数据结构是计算机专业及相关专业的核心课程,是计算机程序设计的重要理论基础。对该课程的教学改革是一项长期而艰巨的任务,既要重视基础理论知识的学习,又要重视实践教学环节。针对在数据结构教学过程中所发现的问题进行讨论和改革,实践证明该措施取得了良好的教学效果,对进一步的改革提出了一些建议,希望能够更好地提高教学效果。

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

[2]彭波.数据结构[M].北京:清华大学出版社,2006.

[3]孙岐峰.“数据结构”课程教学反思与改革[J].计算机教育,2009(11):66-68.

[4]张敬芝.数据结构课程教学改革研究[J].长春师范学院学报:自然科学版,2005,2:147-148.

[5]杜作阳.数据结构教学改革的研究[J].高教论坛,2007(6):46-48.

猜你喜欢
数据结构算法课程
当活动走向课程 少年已走向未来
哪种算法简便
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
软件设计与开发实践课程探索与实践
为什么会有“数据结构”?
为什么要学习HAA课程?
Travellng thg World Full—time for Rree
进位加法的两种算法
根据问题 确定算法