APP下载

《数据结构》教学探讨

2009-01-12程艳芬

企业技术开发·中旬刊 2009年4期
关键词:数据结构教学设计算法

程艳芬

摘要:文章针对“数据结构”课程逻辑性强、抽象性高, 以及当前教学环节普遍存在的问题, 结合多年的教学实践, 提出了从教学内容、教学方法方面出发来提高学生的实践能力和学习积极性的有效设计。

关键词:数据结构;算法;教学;教学设计

中图分类号:G623文献标识码:A文章编号:1006-8937(2009)08-0172-01

1前言

1.1 “数据结构”课程的重要性

“数据结构”在计算机科学中是一门综合性的专业基础课,是介于数学、计算机硬件和计算机软件之间的一门核心课程。主要研究非数值计算的程序设计问题中计算机操作对象以及它们之间的关系和操作等。本课程可以为理解、应用和开发程序提供技术和方法支持, 是程序设计的基础。“数据结构”的教学旨在锻炼学生的抽象思维和创造能力, 培养学生的实践能力, 使学生学会用计算机解决实际问题时能有效地组织、存储和处理数据的方法, 并设计出相应的结构清晰、可读性好、质量高的高效率算法, 为后续课程的学习和计算机应用软件的研制打下坚实的理论和实践基础。

1.2 教学中普遍存在的问题

“数据结构”课程的先行课是相应的算法描述程序设计语言(如C++程序设计语言), 学习本课程要求学生掌握一定的用算法描述语言来编程解决问题的能力。 因此, 基础差的学生对本课程的学习会更加敬畏。另外, “数据结构”课程本身逻辑性强、抽象性高。因此在多年的教学实践中发现, 学生认为这门课程理论性太强、不好学, 学了不知有什么用、怎么用; 当面对具体问题时, 不知该如何应用学过的知识来给出切实可行的解决方案以及编制程序, 得到正确的结果。

2教学设计要点

要解决上述问题, 首先要加强理论教学, 教师在教学过程中尽量多采用一些动态效果来描述算法的思想, 使学生易于接受和理解, 并加深印象; 尽可能多地将前后内容联系起来从中寻找一些规律进行归纳提炼和使其系统化, 使学生能较好地理解各个知识点间的联系, 从而“削减”课程的复杂度。然后通过合理、有效地设计实验内容, 来强化理论教学的效果。

2.1以学生为主体, 温故而知新的教学方法

笔者在教学过程中发现, 由于C 语言是学生最先接触的程序设计语言, 编程思想与以往的思维方式不同, 教学难度比较大, 使得教学时间大部分花费在基本概念上。而学生对数组、结构体、指针这三种数据类型的认识和理解不深, 甚至印象模糊, 对函数、函数的参数、函数的返回值、函数调用的理解也不够, 对递归及递归过程更是难以理解。但是, 这些内容是数据结构课程的重要基础, 在数据结构课程中使用频率很高。对这些内容, 在数据结构课程教学中, 尽管老师费尽唇舌, 学生仍然模糊不清, 致使教学效果不理想, 学生甚至丧失对该课程学习的兴趣和信心。

为了解决这一具体问题, 要求学生在课余时间认真复习C++语言,课堂上结合课程实际适当补充C++语言必要的知识, 培养他们建立程序设计的思想体系, 逐步提高学生阅读和理解算法的能力。在本课程的教学过程中,同时设置、讨论、检查C++相关内容题目,穿插教学、温故知新。在教学中以学生为主体, 改变“ 填鸭式”的做法, 有效设计“ 提问—— 解决方法—— 再提问”的方式, 让众多的学生参与, 用问题去激发学生思考, 引导他们如何解决问题。

2.2多举实例, 调动学生学习兴趣

由于《数据结构》理论性很强, 直接从定义出发讲解相关概念学生不易接受, 在教学过程中, 结合日常生活中的事例引入, 可大大激发学生的兴趣, 从而调动学生的求知欲。

例如, 在讲解栈和队列这一章时, 分别举出日常生活中的事例。如栈的例子, 在刷洗盘子时, 依次把每个洗净的盘子摞到洗好的盘子上面, 相当于进栈; 取用盘子时, 又从上面一个接一个地向下拿, 相当于出栈。又如穿、脱衣服时, 一层一层往身上穿相当于进栈, 脱衣服时, 又反过来一层一层地向外脱相当于出栈。队列的例子, 人们为了购物或等车时所排的队就是一个队列, 新来购物或等车的人接到队尾(即进队) , 站在队首的人购到物品或上车后离开(即出队) , 当最后一人离队后, 则整个队列为空。通过引用实例既形象又直观, 即而使学生更加明确结构与算法的作用, 提高学生运用算法解决实际问题的能力。

2.3注重实验题目实用性和现实性, 提高学生兴趣爱好

在设计实验题目时应注重相关课程和实际生活和学习中的应用, 题目生动、接近学习和生活实际, 学生容易接受和理解, 易调动学习积极性。

2.4用普遍授课,不同设问的教学方法,提高所有同学的学习兴趣

教学中强调学生思考, 针对基础不同的学生采用不同提示和设问, 提高学生的学习信心。教师还应根据学生对基础内容的掌握情况来设计上机实践内容, 采用对不同学生进行不同提示和设问的教学方法, 在实验过程中充分发挥每个学生的思维能力和实践能力, 通过实验, 使每个学生都有不同程度的收获, 以提高他们对该课程学习的自信心。

2.5注意知识点的分类对比、适时总结

《数据结构》课程中很多内容是具有类比性的, 在具体教学过程中我们要把握这方面的特点, 充分挖掘出内容相关的知识点进行分类对比。比如对于《数据结构》内部排序的学习, 我们总共要讲述近十种排序方法, 对于每一种排序方法都要讲清楚排序算法的执行原理、算法的执行效率、算法的执行步骤以及所需存储空间的情况。内容非常多, 学生很容易把问题弄混淆。在教学过程中如果能够对所有算法从时间复杂度、空间复杂度、稳定性等方面进行列表、归类、对比; 然后给出具体的一组待排序数值序列用不同的排序方法通过多媒体演示的方法分别进行排序, 学生便可以一目了然, 轻松的掌握各种排序方法。

《数据结构》课程中同样有很多内容是层层递进, 前后联系的, 比如数据类型的存储结构始终是顺序存储和链式存储两种方式。与此同时, 学生对学过的知识又是分散的、片面的, 无法将知识相互衔接起来, 做到举一反三。这就要求我们在教学过程中要承前启后、不断总结、及时复习、注重理解。以链表学习为例,在线性表章节我们学习了单链表、双链表以及循环链表。它们三者是相互关联、层层深入的, 而后面章节中树的链表表示、图的邻接表和逆邻接表表示、拉链法解决哈希表冲突都是链表的应用。 在授课的时候应注意将前面的内容加以复习, 把有联系的内容相互串联起来形成一个完整的知识体系。

2.6设计综合性实验, 提高学生实践创新能力

综合理论教学和实践教学的结果, 组织学生以小组为单位,由教师布置综合性的题目, 或者由学生自己寻找感兴趣的题目,教师引导学生全面、综合地运用所学的基础知识来解决实际问题, 如开发一套具有售票、退票、查询、统计等功能的火车票自动售票系统, 或编一个学生爱玩的游戏等, 使学生进一步掌握数据结构的应用和软件开发的方法, 提高学生分析问题、组织数据、解决实际问题的能力。学生在整个过程中, 可以相互讨论、交流, 充分发挥学习积极性, 发挥团队精神, 共同进步。把优秀的解决方法放在校园网内供大家学习参考, 或者由完成者进行讲解, 让学生了解其他解题方法, 从中分析和比较不同算法的效率, 教师要及时了解学生对知识的掌握情况、题目的完成情况和学生意见, 有利于及时调整教学方法, 提高教学效果。

3结语

由于“数据结构”课程在计算机专业课程中的重要性, 及其较强的理论性和实践性, 使得它更需要合理、有效、系统地组织教学及实验,形成一个以教学方法、内容和手段为一体的教学体系, 才能有效地提高教学效果, 提高学生分析问题和解决问题的能力。

参考文献:

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

[2] 严蔚敏, 吴伟民.米宁数据结构题集(C 语言版)[M].北京:清华大学出版社,1999.

[3] 唐策善.数据结构(用C 语言描述)[M].北京:高等教育出版社,1995.

猜你喜欢

数据结构教学设计算法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
高中数学一元二次含参不等式的解法探讨
“仿真物理实验室” 在微课制作中的应用
翻转课堂在高职公共英语教学中的应用现状分析及改善建议
提高课堂教学有效性的研究
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
一种改进的整周模糊度去相关算法
高职高专数据结构教学改革探讨