APP下载

“数据结构”实践教学探讨与实践

2009-06-18王淮亭

计算机教育 2009年12期
关键词:数据结构实践教学方法

摘要:本论文根据“数据结构”课程的特点和我校技术应用型本科教育的理念,分析了目前在课程教学中存在的不足之处,提出加强“数据结构”实践教学,并给出了实践教学的九个案例,通过这些案例应用中的一些问题实践,让学生既知其然,又知其所以然。本文对“数据结构”实践教学中的研究,旨在为计算机程序设计教学提供可借鉴的经验和建议,促进计算机教学的发展,丰富教学方法。

关键词:数据结构;实践;教学方法

中图分类号:G642文献标识码:B

1引言

社会经济成分、组织形式、就业方式、利益关系、分配方式的多样化,对人才素质提出了更高的要求,社会也需求大批应用型技术和技能人才。高等学校教育也为适应社会需求培养面向基层、面向生产、面向服务和管理第一线需要的技术应用型人才。

我校致力于技术本科教育理念,深化教学改革是一条提高教学质量的有效途径,在教学改革中扬弃传统的“以教为中心”的教学结构,逐步建立“学教并重”和“学致以用”的教学结构。考虑到目前我校教育的现状,我们在“数据结构”实践教学中做了有益的探讨,让学生知道学习完成后能够实际应用,激发学生的学习主动性,培养富有技术应用性的人才,对我校技术应用性本科教育都具有深远的意义。

2 “数据结构”教学的现状

“数据结构”课程主要研究非数值性、结构性数据,具体涉及数据的逻辑结构、存储结构、算法和算法复杂性分析等内容。它不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统等系统程序和大型应用程序的重要基础。学习“数据结构”课程的目的是为了了解计算机处理对象的特性,将实际问题中所涉及的处理对象在计算机中表示出来并对它们进行处理。同时,通过算法训练来提高学生的思维能力,通过程序设计的技能训练来促进学生的综合应用能力和专业素质的提高。

目前大多数高校越来越重视在实际教学中,在“数据结构”教学中进行许多新的教学模式进行教学,根据目前所拥有的资料来看,国内外有影响的现代教学模式主要有:讲授模式、互动模式、任务驱动模式、范例模式等。这些教学模式体现教师为中心、学生为主体的教学关系,通过教师提问、学生发问、课堂讨论等多种教学方法让学

生参与互动,充分调动学生学习的积极性和主动性,对于提高教学质量和教学效果都能起到一定的积极作用。由于种种原因,学生掌握的情况并不十分理想。这其中一个非常重要的原因,是实践环节的不足。学生在学完理论后,不能及时通过实践来检验和巩固所学知识,导致越学越糊涂,也越加深了对这门课程的畏难心理。

下面是目前“数据结构”教学中存在一些不足的原因:

(1) 概念多

“数据结构”课程内容的特点是概念多、逻辑性强、综合性强、技巧性强。在教学过程中发现,对于学生来说,刚接触这门课程时,不知怎么去学,等这门课程结束时,也不知道自己学了些什么,对学过的也不知道如何应用。

(2) 基础差

目前数据结构算法是通过计算机语言来实现,很多学生在对这门课程前导课程序设计语言掌握不好,目前大部分数据结构教材算法是用C语言(也有C++语言和JAVA语言)来实现,大部分学生对C语言指针知识掌握不牢,用起来生疏,很多使学生对算法的思路是清晰的,但也难以用C语言(C++语言和JAVA语言)将算法描述出来。

(3) 实践效果不显著

人们已经普遍认识到计算机程序设计课程是实践性、技术性非常强的课程,需要大力加强实践性教学环节,因此实践课课时的比例也越来越大。当前实践课内容、形式虽然能在一定程度上提高了学生的动手实践能力,但并不一定能提升学生解决实际问题的能力。其一,实验内容大多是课堂教学内容的验证性实验,学生往往是照着葫芦画个瓢,知其然不知其所以然,实验的时候对所学习内容没有充分理解,只是充当的打字员,结果出来后就万事大吉。其二,各个实验内容各不相关,互相脱节,不能形成一个问题的全部,在以后遇到同类问题,不能从全局的角度分析解决,只能部分的解决局部问题,不利于能力的提高。其三,对所学知识内容,由于程序设计语言掌握不好数据结构概念不是很清晰,不能完整的串起来,如二叉树操作,从建一个二叉树,到遍历二叉树、求叶结点数、求总结点数、求树的深度完整的串起来,对知识点掌握和理解要有直观的认识。

3实践教学改进

在“数据结构”课程的学习过程中,学生比较困扰的是理论脱离实践,对“数据结构”潜在的应用价值难以有深刻的认识。在课程建设中,在努力提高课堂教学效果和抓好习作的同时,下大力气对上机实验的要求和管理进行重点建设。在第一次上实验课程时,除了给问题和要求外,还给出问题分析、总体结构设计、部分详细设计,最后要求学生进行主要算法程序设计及调试。这样做的目的是让所有的学生对“数据结构”实验有初步了解,在给出的整体框架上将主要算法及应用实现出来,达到学习“数据结构”的效果。同时,还考虑到学生的学习程度不同,有些学生底子较薄,对实验认识也不够,认为“数据结构”只是理论上的学习,根本无法编写程序和实际应用。根据这种情况,我们给出部分详细设计就是要使这部分学生增强用程序实现算法的自信心,继而模仿编程,最终实现将理论知识应用到解决实际问题中去,提高应用与创新能力。对每个实验都有具体要求,并鼓励学生课下多编程、上机调试,每次试验结束后要求学生完成实验报告及调试分析,算法的时空分析以及经验体会,为将来进行软件开发打下坚实的基础。

以下是我们在“数据结构”课程教学中的几点做法:

(1) 引发学生兴趣,明确实验内容

学生普遍认为“数据结构”实验难于上手,而且不知道它的应用。这就需让学生了解数据结构的重要性,告诉学生,在计算机科学中,数据结构不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。从而引发学生学习的主动性。

在课堂授课中,还要向学生介绍各章节内容的意义、算法的思想以及实验的内容。笔者在授课时,将各章实验内容分成以下几个部分:顺序表、单链表、双向循环链表、顺序栈、链队列、循环队列、串、压缩矩阵、树与二叉树、图、查找与排序。在开始阶段,教师最好给出一些简单程序的源代码,以供学生参考,激发学生上机的积极性。笔者在授课的开始阶段就前几章节的算法实现,都亲自编写源程序,供学生参考,并上机讲解,帮助学生调试成功,增强学生自信,从而激发了学生的上机兴趣。

(2) 强化程序设计语言的程序开发能力

“工欲善其事,必先利其器。”在“数据结构”的实验教学中,上机实现程序,必须先对所使用的程序设计语言工具有所精通。教师可根据学生对C语言(或其他语言)掌握的情况,有目的地讲授一些数据结构所涉及的C程序语言的疑难点,如动态存储函数使用、静态数组、指针等知识,帮助学生尽快上机编程,从而也更好地配合数据结构的实验教学,达到事半功倍的效果。否则,学生不能参与实践,对课程就渐渐失去兴趣。

首先教师给出程序案例的框架结构,学生经过思考,选择合适的算法和指令语句,经互相讨论,完善和丰富程序案例,然后上机调试,通过运行来检验结果。程序案例的教学法是从兴趣入手,首先给人们编程的乐趣,继而带领学生进入程序的天地,提高了探索的欲望,使学习编程变得生动而有趣。

(3) 精选实验内容,编程实现典型算法

“数据结构”教学中的上机是理论联系实际的重要教学环节,针对具体的教学内容和目前的学生能力,专门设计出“数据结构上机实验系统”,在选择典型算法的时候,从以下三个方面进行考虑:

代表性:算法应该能够集中体现某个数据结构的基本特征。

难度适中:算法既不是很简单,也不应该很难,要使多数学生经过努力可以实现。

综合性:算法要有一定理论深度。既有助学习数据结构,又有助于提高编程能力。

该系统为学生精选的、难度适当的大约50个典型算法为基础,包括顺序表、链表、堆栈、队列、串、矩阵和广义表、二叉树、图、查找和排序等部分,系统对每种数据结构都设计了相应的基本操作及应用操作,组装一个数据结构实验演示系统,完成一个数据结构课程的实训。

该系统具体内容是:

实验1线性表子系统:主要算法有建表、插入、删除、显示。

实验2栈队子系统:主要算法有建栈、进栈、出栈、显示、数制转换、逆波兰式。

实验3队列子系统:主要算法有建队列、进队、出队、读队头、显示双向队。

实验4串子系统:主要算法有建串、连接两串、取出子串、删除子串、插入子串、模式匹配、比较大小、显示。

实验5稀疏矩阵和广义表子系统:主要算法有稀疏矩阵建立、转置、显示、广义表建立、查找和显示。

实验6树子系统:主要算法有建二叉树、凹入显示、先序遍历、中序遍历、后序遍历、层次遍历、叶结点数、总结点数、树的深度。

实验7图子系统:主要算法图的建立、建立邻接矩阵、深度优先遍历、广度优先遍历。

实验8子系统:主要算法有建立查找表、顺序查找、二分查找、二叉排序树、建排序树、查找结点、插入结点、删除结点、输出。

实验9排序子系统:主要算法有数据输入、插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序、堆排序。

实践表明,多数学生经过努力,大部分同学都可完成以上的算法。通过这九个实验,就等于学习一个小型系统开发的全过程,所以它既不同于一个大型的完整的数据结构演示软件,也不是一般意义上的复杂的系统开发指导。

4结束语

在本课程教学设置上,我们既要考虑到本科教育的基础性和阶段性,也要充分考虑到技术应用型人才适应第一线工作的要求,体现了既要有一定的学术性,又要有一定的实践性。在教学方式上除要加强正常教学外,重视实践教学环节和通过项目活动过程突出应用专业技术能力的培养,使技术本科学生不但知其然,而且能知其所以然。培养基础扎实、动手操作能力强、综合素质高的应用型人才,已成为高等教育工作的重心。

实践表明,只有将理论教学和实践教学密切结合,才能使学生掌握好各种数据结构和算法,从而切实提高教学质量,贯彻完成大纲要求。

参考文献:

[1] 曾立庆,童怀水.《数据结构》实验教学探讨[J]. 职业教育研究,2006(11):160-161.

[2] 陈元春,王淮亭. 基于Internet的数据结构教学设计[J]. 上海电机学院学报,2005,8(2):67-70.

[3] 郭业才.“数据结构”课程建设与教学改革实践[J]. 高等理科教育,2006(6):100-102.

[4] 顾翔.“数据结构”实践教学探讨[J]. 文教资料,2005(30):110-112.

[5] 陈元春,张亮,王勇. 实用数据结构基础[M]. 2版. 北京:中国铁道出版社,2007:272-273.

猜你喜欢

数据结构实践教学方法
基于gitee的皮肤科教学方法研究
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
《计算方法》关于插值法的教学方法研讨
《计算方法》关于插值法的教学方法研讨
小学语文字理教学方法探析
初中政治教学中强化新八德教育探讨
体验式学习在数学教学中的应用研究
生物专业师范生教学实习的问题与对策研究
校企协同实施高职专业课程改革的实践研究