
数据结构中绪论部分的教学方法研究与实践.docx
9页数据结构中绪论部分的教学方法研究与实践 黎 蔚,张明川,冀治航(河南科技大学电子信息工程学院,河南洛阳471003)Reference:针对数据结构课程中传统教学方法存在的问题,以提高学生的学习兴趣和增强自信心为出发点,从绪论的内容选择、讲授方法、应用举例等方面进行了一系列的探讨,提出一种兴趣一实例驱动的教学方法实践表明,该教学方式有效地调动了学生的学习主动性,为数据结构的学习开创了一个良好开端Keys:数据结构;课程设计;实例教学数据结构是计算机专业的核心课程之一,在计算机本科教学中起着承上启下的重要作用我们根据多年的教学实践发现,学生在学习过程中普遍存在着3个问题:1)课程开始之前,一部分同学认为数据结构中涉及到的多数算法在高级程序设计语言中已学过了,是重复学习,为什么还要学习数据结构?还有部分同学认为数据结构是高级程序设计语言的延伸,指针和结构体都没有学好,对数据结构的学习缺乏信心,抱着试试看的态度或者干脆就放弃了2)在数据结构的学习过程中,学生比较迷茫的是所学理论知识不能和实践相结合,不知道数据结构中的算法能够解决什么实际问题3)在学完数据结构之后,仍然不知道数据结构有什么用途,对后续课程的作用如何。
上述问题导致学生在整个学习过程中缺乏积极性和主动性绪论虽然不涉及整个课程的具体内容,但其授课效果的好坏,直接影响到整个课程的学习教师如何通过绪论的讲授激发学生的学习热情,调动学习的主动性本文是笔者5年来对绪论教学方法的探讨,从内容选择、讲授方法、应用举例等方面介绍教学改革1 传统教学方法存在的问题 我们使用的教材是严蔚敏老师编写的《数据结构(C语言版)》,绪论部分的传统教学内容主要包括以下4个方面:为什么要学习数据结构?数据结构的基本概念和术语、抽象数据类型表示和实现、算法和算法分析[1]1-7,教学中存在如下的问题:1)教材通过3个实例使读者明白数据结构是解决、处理非数值型数据有关问题的学科,既然学习C语言是为了编程解决实际问题,学习数据结构最终也是为了编程解决问题,为什么还学习数据结构?2)对基本概念和术语的讲解过于枯燥、学生理解不够透彻对于抽象数据类型以及类C语言的讲解过于抽象,学生难以理解3)算法是什么,算法和程序有何区别?这个问题没有解释清楚,导致很多学生到后来将算法和程序等同起来针对上述问题,我们从第1节课开始,就通过实例的适当引导,激发学生对数据结构课程学习的兴趣,进一步产生持续不断的兴奋,为后续课程内容的学习开创一个良好的开端。
2精心选择教学内容绪论是本门课程的概括,其目的是使学生较全面地理解数据结构的基本概念,使其明白通过课程学习能够进一步提高用计算机解决实际问题的能力教师在教学内容选择上要考虑以下4个方面:1)尽可能避免枯燥乏味的概念堆砌,采用实例讲解法,激发学生的求知欲望,让学生产生浓厚的兴趣,通过实例引出基本概念和术语,加深对数据结构理解如以学生熟悉的冒泡排序为例,通过给出几组不同的数据进行排序比较,同样一组有n个记录的数据,由于出现的先后顺序不同,用C语言中介绍的编程方法,其循环次数为I12,效率比较低,为了提高效率,可以将for循环改为while循环教师通过讲解,巧妙地引入时间复杂度和空间复杂度的概念2)实例的选择应是学生非常熟悉的内容,但也要有一定的新颖性,给学生留出发挥想象力和创造力的空间迷宫求解用到数组和队列的知识,本章仅讲解算法实现的基本思想,要求学习完队列后编程实现,极大地调动了学生的学习主动性3)数据结构的应用举例介绍应结合计算机科学技术的现代前沿研究课题,设计研究启发式教学案例,扩展学生知识体系,以数字水印技术为例,说明对后续专业课程的影响4)应强调指针和结构体内容,为后续算法学习奠定坚实的基础。
3讲授方法举例3.1 为什么要学习数据结构?在教学中,先按照教材通过3个例子讲清楚数据结构的3种类型,说明数据结构是一门研究非数值计算的程序设计问题学科接着以冒泡排序和迷宫求解说明为什么要学习数据结构?例1:冒泡排序,引导学生复习冒泡排序的基本思想,接下来给出1组数据(44、55、22、33、99、11、66、77),进行冒泡排序执行过程的分析,如图1所示结果发现当第3趟排序结束后,所有数据已经排序完毕,剩下的几趟排序是多余的如果要求只要排序完成,程序就能自动停止,以减少程序运行时间,怎么办?教师提出问题,让学生思考和讨论进一步分析排序过程发现,凡是有弧线的,表示记录交换过,从第4趟开始,关键字的两两比较过程中,并未发生记录交换,因此,后面的比较就不必要进行改进的程序设计中可以设置一个标志变量tag,当某一趟处理过程中没有进行记录交换时,tag=0,否则tag=l如果有n个待排记录,C语言中共进行n-l趟排序,程序是根据待排序记录个数决定循环次数是for循环,如果根据记录是否交换来决定循环次数,可改用do-while循环实现极端情况下当原始数据序列已经有序时,只进行1趟排序比较就结束显然,后一种方法的效率较高。
再分析这两种方法占用的存储空间,使学生明白,数据结构不仅仅是高级语言的延续,而且要考虑计算机运行效率和占用内存,这是学习数据结构的一个重要方面,也是C语言编程中没有涉及的内容,由此引出时间复杂度和空间复杂度的概念,并说明什么是算法和算法设计的4点要求,最后按照教材要求详细讲授算法效率的度量给出冒泡排序实现的算法[2]279,要求学生课后对两种方法进行分析比较,并编程实现define MAXSIZE100ypedef struct pnode {int key;} pnode;void bubblesort (pnode r [MAXSIZE] , int n)do{ tag=0;for(j=n; j>i; j--)if (r [j ] .key 这种搜索方法就是后面章节中介绍的广度搜索告诉学生在学习了队列的内容之后,就可以解决强调如果用图形界面显示迷宫路径,效果更佳接着以幻灯片的形式动态演示,提出如果有多条通路,应该如何实现?激发学生对数据结构课程学习的兴趣,进一步产生持续不断的兴奋,并通过对后续内容的讲授和指导,调动学生学习的主动性3.2基本概念和术语教学中以学生基本情况管理为例,然后将视野拓广,通过住院病人的押金等实例,引入线性表数据结构采用实例、归纳、具体化的方式,引出相关的概念和术语例3:学生基本情况管理当我们根据姓名查找某人有关情况的时候,或者根据学号查找的时候,只要我们建立了相关的数据结构,按照某种算法编写了相关程序,就可以实现计算机自动检索,如表1所示由这张表构成的文件便是班级学生基本信息检索的数学模型,计算机进行的主要操作便是按照某个特定要求(如给定姓名)对信息文件进行查询、插入和删除例4:住院病人押金管理病人住院时首先要交住院押金,出院结算时,根据病人姓名或者住院号进行结算,如表2所示,由这张表构成的文件是病人押金信息检索的数学模型,计算机进行的主要操作便是按照某个特定要求(如给定姓名)对信息文件进行查询、插入和删除。 在这两张表中,计算机通常把每个人作为一个整体进行考虑,是数据的基本单位,称为数据元素,而每个人中的具体信息(如姓名、押金等)为一个数据项,同一表中的每一个数据元素具有相同的性质,称为数据对象诸如此类的还有商场商品管理系统、仓库物资管理系统等在这类文档管理的数学模型中,计算机处理的对象之间通常存在着的是一种简单的线性关系,进行的基本操作是查找、插入和删除等,这类数学模型可称为线性的数据结构与其在计算机内部中如何表示和实现无关,由此引出抽象数据类型的定义是一个数学模型以及定义在该模型上的一组操作[l]4所有的概念和术语都通过实例进行解释说明3.3数据结构应用举例通过演示课件,使其更加形象、直观、生动、有趣,目的是进一步激发学生的学习积极性教师以自己的激情,引入入胜的渲染及丰富多彩的视觉效果,最大限度地调动学生的学习积极性及兴趣,激发起学生探索新技术、追求新知识的激情例5:二叉树在数字水印中的应用数字水印是一种嵌入到图像、视频或者音频数据中的标志,通过对水印信息的检测可以达到保护多媒体数据版权的目的随着数字水印技术的发展,数字水印的应用领域也得到了扩展,数字水印的基本应用领域是版权保护、认证和内容真伪鉴别等。 以学生熟悉的100元人民币为例,简单说明什么是数字水印,再以幻灯片的形式进行演示,图2是原始图像,图3是待嵌入的水印图像,其中阳字作为明文水印嵌入,“洛”字作为隐形水印,嵌入水印后的图像如图4,提取的水印为图5,这样就可以通过数字水印技术实现版权通知和保护为了增强水印图像的安全性,需要在嵌入之前进行置乱,数字图像置乱技术是一种重要的图像加密技术,作为图像信息隐藏的预处理和后处理手段之一,其主要目的是将一幅有意义的图像变成一幅杂乱无章的图像,使其所要表达的真实信息无法直观地得到它可以增强数字图像信息隐藏算法抵抗非法攻击的能力,以增加安全性二叉树是一种重要的非线性结构,通过它就可以实现置乱图7是对图6的置乱效果,还可以利用数据结构中的队列变换算法和约瑟夫算法来实现数字图像的置乱,以此说明利用数据结构中的二叉树遍历算法与后续的数字图像处理课程结合,就能实现简单的版权保护除此之外,还配有利用哈夫曼编码进行数字图像压缩和最短路径在配电网抢修中的应用等4相关知识的复习和补充教师通过例子补充C++引用知识和算法描述方法,同时,复习C语言中指针和结构体内容,说明算法和程序的区别5结语本文对数据结构课程中绪论的讲授方法进行了探讨,通过实例,分析和讨论说明为什么要学习数据结构,引出相关的基本概念和术语,结合应用实例,向学生展示学习数据结构的重要性,提高学生的学习兴趣和积极性,为后续章节的学习起到推动的作用。 通过对C语言相关知识的复习,实现从算法到C语言的自然过渡,增加学生学习数据结构课程的信心,从实践上看,收到了良好的教学效果Reference:[1]严蔚敏,吴伟民.数据结构(C语言版)[Ml.北京:清华大学出版社,2000[2]杨秀金.数据结构[M].西安:西安电子科技大学出版社,2000.[3]林正范,大学心理学[M].杭州:浙江大学出版社,2000:209-218.Study and Practice of Methodology in Teaching of the Introduction Section of Data StructureLI Wei, ZHANG Ming chuan, JI Zhi-hang(Electronics and Information Engineering CoIJege , Henan University of Science and Technology , Luoyang 471003, China)Abstract: In view of problems existing in the traditional teaching methods of the 。
