非计算机专业“数据结构”互动式教学探讨
本文针对于非计算机专业“数据结构”教学过程中存在的主要问题,阐述了如何在课堂教学激发学生的思考,发挥学生的主动性以及如何培养学生的实践兴趣,提高实践能力。
关键词:数据结构;互动式;启发式;多样化
1引言
非计算机专业开设的“数据结构”课和计算机专业开设的“数据结构”课相比,重要的差别之一就是授课时间和实验时间相对较少,学生程序设计方面的基础薄弱。为了使非计算机专业的学生在这种有限的情况下掌握“数据结构”的基本内容,采用互动式的教学方法来提高学生的积极性显得十分重要和必要。
2教学过程中遇到的问题
2.1先行课的掌握不足
C语言程序设计是“数据结构”的前导课程之一。通常情况下学生在刚开始学习数据结构课程,对C语言中的数组、结构体、指针这三种数据类型的认识和理解不深,甚至根本不理解,这成为了学生数据结构的主要绊脚石,直接影响教学进度,使得教学时间大部分花费在基本概念上。部分学生对函数、函数的参数、函数的返回值、函数调用的理解也不够,对递归及递归过程更是难以理解,而这些内容在数据结构课程中使用频率很高。因此,在数据结构教学初期,尽管老师费尽唇舌,学生仍然模糊不清,致使教学效果不理想,学生甚至会丧失对该课程学习的兴趣和信心。
2.2教材理论性太强
现有的“数据结构”教材无论是C语言版还是JAVA版的,都是以基于类的思想对数据类型进行描述,这样的描述形式对象数据类型的定义简明清晰,有利于培养学生良好的编程习惯。但在开设课程时,学生一般只学习过C语言,对于用类进行编程掌握得并不熟练,往往对教材上的描述感到很抽象,难以具体编程实现,甚至部分学生会直接将教材上类C语言的描述当成程序来理解。抽象数据类型是指一个数学模型以及定义在该模型上的一组操作,但在教学过程中,我们发现学生对于抽象数据类型的理解往往局限于前者,而忽略了后者。对于数据类
型的数学模型以及数学特征较容易理解,而对于数据模型的操作则容易理解成是一个的部分,出现这种现象的主要原因是面向对象知识的欠缺。
2.3缺乏上机的兴趣
学生不理解抽象数据类型的定义及相应的存储表示,难以实现算法与程序之间的转换,更谈不上将所学的数据结构中的算法应用于实际问题上,从而降低了上机兴趣和学习“数据结构”的信心。
3启发式教学的探讨
3.1首先解决先行课的不足
教师可根据学生对C语言掌握的情况,有目的地讲授一些数据结构所涉及的C程序语言的疑难点,如动态存储函数使用、静态数组、指针等知识,培养他们建立程序设计的思想体系,逐步提高学生阅读和理解算法的能力。在教学中以学生为主体,改变“填鸭式”的做法,设计“提问—解决方法—再提问”的方式让学生参与,用问题去激发学生思考,引导他们如何解决问题。
3.2理论教学可以采用多样化的方式
3.2.1尽量用生活中实例来讲解基本概念
由于“数据结构”理论性很强,直接从定义出发讲解相关概念学生不易接受,在教学过程中,结合日常生活中的事例可大大激发学生的兴趣,从而调动学生的求知欲。
例如学生对链表这种结构体不太理解,可以直接以女生手上带的手链为例进行讲解,手链解开是一个带有头结点的链表,带上后是一个环链。在讲解栈和队列这一章时,分别举出日常生活中的事例。如栈的例子,在刷洗盘子时,依次把每个洗净的盘子摞到洗好的盘子上面,相当于进栈;取用盘子时,又从上面一个接一个地向下拿,相当于出栈。队列的例子,以学生在食堂打饭为例,所排的队就是一个队列,刚来打饭的同学接到队尾(即进队),站在队首的人打完饭后离开(即出队),当最后一人离队后,则整个队列为空。
通过引用实例既形象又直观,进而使学生更加明确结构与算法的作用,提高学生运用算法解决实际问题的能力。
3.2.2加强多媒体教学方式的使用
多媒体课件生动、形象、图文并茂、交互性强,非常适合数据结构课程的教学。在教学中可以用幻灯片展现知识点,用Flash动画演示算法的动态执行过程。这样可以把学生对所学知识的理性认识和感性认识有机地结合起来。比如在讲解二叉树的遍历和线索化的时候,可以通过幻灯片讲解遍历和线索化二叉树的过程。由于遍历的过程是一个递归的过程,许多学生开始掌握起来有些困难。如果配以Flash制作的动画来模拟遍历的全过程,可以取得良好的教学效果。
3.2.3创新思维的培养
可用问题去激发学生去学习,引发学生兴趣、诱发学习动机。“数据结构”教学中,特别是算法设计中,可以设计许多问题。如在介绍了字典的顺序检索、二分法检索、分块检索等算法后,可以引导学生分析这些检索方法的共同特点:通过待查元素x与关键码的“比较”来实现检索,检索的效率与比较次数相关,减少比较次数即降低平均查找长度,从而提高检索效率。就此提出设想:能否有一个函数H(x)来计算待查元素x的存储地址?这样,给定待查元素x,只需计算H(x),即可查找到元素x,这是一种非常理想的检索方法,检索运算平均查找长度可能达到常数级。
不断创设问题情景,将教材上的平面知识、技能点转化成问题的形式展现在学生面前,引发学生创新的兴趣,增强学生思维的内驱力。
3.3以学生为主体,培养学生实践能力
3.3.1实时了解学生的上机兴趣
在教学实践中发现,在整个学期的实验过程中,学生的兴趣表现出如下图所示的态势:
初期:学生编程语言工具基础不够扎实,对课程理解不够,编程能力较差,从而实验兴趣偏低。
中期:学生经过一段时间的学习和调整,对课程所要求的基础实验有所了解,能实现和调试一些算法,编程能力有所加强,实验兴趣得到很大提高。
后期:开设的实验以综合性实验为主,实验难度加大,学生表现出综合应用能力较差,实验兴趣又有所下滑。
3.3.2理论与实践相结合,激发学生的兴趣
在“数据结构”课程的学习过程中,学生比较困扰的是理论不能和实践相结合,不知道学习数据结构能做什么。所以在课程讲述中,除了要求学生上机实现基本算法并完成一定数量的较大的典型的程序外,更应给学生大量的实例,提高学生解决实际问题的能力。例如:堆栈的应用——编译器中表达式的处理、火车调度问题;队列和堆栈的综合应用——实现停车场管理;二叉树和树的应用——产品分类过程、哈夫曼树用于通信编码、下棋问题;图的应用——地图着色、旅游最短路径问题等。这些程序的实现不仅有助于数据结构课程的学习,更主要的是通过这些程序的实现大大提高了学生编程能力和解决实际问题的实践能力。
3.3.3注重对实验结果的分析
实验结果包括学生按照实验要求开发的所有源程序、源程序的说明文件(说明上交程序所在的目录及主程序文件名,如果需要安装,要有安装说明等)、实验报告(包括算法的主要思想、主要数据结构、算法的基本实现、调试过程、结论及心得)。对算法要注释,书写工整、绘图规范,正确引用术语以及实验环节的总结。总结可以包括实验过程的收获、遇到的问题、解决问题的思考过程、程序调试能力的思考、对数据结构这门课程的思考、在实验过程中对课程的认识等内容。教师可以针对学生实验报告的情况,对实验中出现的问题进行剖析,提高学生的实践能力。
参考文献
[1] 张涌逸. “数据结构”互动式教学探讨[J]. 电脑知识与技术,2006,(6):218.
[2] 周云,李革. 非计算机专业“数据结构”实验教学的探索与实践[J]. 计算机教育,2007,(6).
[3] 严蔚敏,吴伟民. 数据结构[M]. 北京:清华大学出版社,2006.
[4] Sartaj Sahmi. 数据结构算法与应用C++语言描述(英文版)[M]. 北京:机械工业出版社,2002.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务