由于教师就业空间有限, 为顺应时代发展需求, 目前绝大多数师专都设置有计算机专业, 并将数据结构列为专业必修基础课程。数据结构是典型的综合运用知识解决问题的一门课程, 它要求学习者有较扎实的文化基础和较强的分析、解决实际问题的能力。然而, 由于多方面的原因, 目前师专计算机专业部分学生与这一要求尚有一定距离, 这给教学带来了极大的困难。因此, 探讨有效的教学方法显得非常必要。
教育理论指出, 学生特点、教学内容是教学方法选择的重要依据。目前公开发表的数据结构教学研究文献大多将重点放在“怎么教”上, 至于“为什么这样教”则讨论不多, 使得所介绍的方法针对性不强。本文在分析学生存在不足及教学内容特点的基础上, 就师专数据结构教学提出了自己的看法。相对而言, 有更强的针对性。
1 师专生存在不足的分析
作为大学生的一个群体, 师专生有许多优点, 但由于各方面的原因, 也存在一些不足。
1.1 文化基础相对薄弱
相比于本科的同学, 多数高专生的入学分数相对较低。而由于社会偏见、就业观念、就业形势等因素的影响, 师专生又是所有高专生中入学分数相对更低的群体。以广西为例, 2008年高职高专分数最低控制线为260分, 由于分数稍高一点的大多报读了专业更好、更容易就业的其他高专或高职学校, 上了线但分数稍低的同学就只能选择师专这类学校了。我校去年招收的学生大多在300分上下, 就说明了这一点。当然, 分数低并不意味着智商低, 但在学习自觉性、主动性, 在理解、接受能力等方面与分数高的相比还是有一定差距的。
1.2 计算机起步晚, 底子薄
这是中国大学生普遍存在的问题。虽然早在2000年, 教育部就颁发《中小学信息技术课程指导纲要 (试行) 》, 为信息技术教育制定了若干个阶段性目标。但由于各种原因, 至今许多农村中小学硬件设备还是跟不上。如, 文献[1]调查资料显示, 直到2008年, 山东省农村中小学的计算机设备拥有率仍低, 几乎一半的学校是20~60个学生拥用一台计算机, 而且有0.94%的学校没有计算机设备。山东尚且如此, 其他地方自不必说。硬件的不足只是问题的一方面。另一方面是应试体制作祟。由于无论是在小学、初中, 还是在高中, 信息技术课目前都还不是主科, 其地位仅与图音体相当。因此, 在应试教育的指挥棒下, 信息技术只能充当“课表”课程, 只能上成“放羊”课[2]。
正是考虑到多数学生计算机底子薄, 各个学校才不约而同地在大一开了计算机文化基础课。此外, 计算机专业的学生在大一还将开C或C++等专业必修课程。应该说, 他们真正的计算机起步是到了大一才开始的。
2 数据结构内容特点的分析
数据结构是介于数学、计算机硬件和计算机软件三者之间的一门基础课程。它主要有以下几个特点。
2.1 内容多、术语多
数据结构一般都有线性表、栈、队列、树、图、查找、排序、文件等, 内容较多, 而每个内容当中, 又会涉及大量的术语。
2.2 内容相对独立
数据结构课程主要根据数据模型对内容进行分类编排。由于模型之间的相对独立性, 导致了教学内容上的相对独立性。
2.3 知识综合应用性强
数据结构与普通的数学课程不同, 它不是某个定理、性质和公式的简单套用, 而是综合知识的灵活应用。
2.4 理论性和实践性强
数据结构的内容直接与计算机解决实际问题所涉及的关键步骤有关。从抽象数据类型的观点出发, 它主要研究两个问题:一是如何具体表示抽象数据类型中的数学模型;二是如何给出抽象数据类型中需要的操作的具体实现[3]。前者有较强的理论性, 而后者则有着较强的实践性。
特点2.1要求学生有较好的理解和消化能力;特点2.2要求学生善于比较各数据模型之间的联系和区别;特点2.3要求学生有较好的分析问题、解决问题的能力;特点2.4要求学生有比较好的抽象思维和程序设计能力。
数据结构一般安排在大二的第一学期开课。之前, 学生虽已打了一年的基础, 但许多知识和技能尚未真正掌握, 要使用这些知识和技能去解决问题难度很大。客观地说, 多数计算机专业学生是在一个比较低的起点上学习起点相对较高的数据结构课程。这是教学的主要矛盾, 也是研究教学对策的主要依据。
3 师专数据结构教学对策
3.1 选好切合学生特点的教材
教材是组织教学活动的重要依据。目前的数据结构教材虽多, 但真正适用的并不多。考虑到学生的基础以及专业的培养目标, 师专计算机专业学生应选用通俗易懂型教材。如, 像文献[4]就很不错, 它选择的内容合理, 教例分析透彻, 条理清晰, 主次分明, 且配有实验指导书, 较适合教学使用。
3.2 注重感性教学
学生虽都是19岁左右的成人, 有较发达的抽象思维, 但就计算机课程而言, 他们还只相当于一个小学生。尤其对数据结构, 他们没有多少旧知识可以迁移, 感性认识还很缺乏。而内容的相对独立性, 决定了感性认识必须不断的反复重建。
可以通过教学课件动态展示各算法的执行过程, 从而实现各算法的感性教学。比如:实际教学中, 利用下载的各内排序法的flash课件, 在多媒体教学网络系统的支持下, 先是教师用课件示范讲解自关键字序列输入到每趟排序结果的详细过程, 然后将课件分发到各学生机由学生自己输入数据、观察和熟悉排序过程。由于此法比较切合学生实际, 收到了较好的教学效果。
也可以通过让学生亲自动手操作来实现感性教学。比如:线性链表构造的尾插法和头插法, 可以引导学生到Word环境中利用绘图工具完成, 让他们通过鼠标、键盘的操作, 亲自体会算法的执行过程。内排序的很多算法也都可以这样做。这种方式不仅丰富了学生的感性认识, 而且也培养了学生动手操作的能力。
还可以通过举例的办法来实现感性教学。学生的特点决定了他们对具体的问题更感兴趣, 举例教学较容易激发他们对问题的思考, 进而激发求知欲, 从而提高教学效率。比如:讲栈概念时可以铁路调度站火车的进出为例说明, 讲队列概念时可以羽毛球筒的入球取球为例说明, 而讲线性链表插入、删除算法时可以手牵手的一队人的插队、离队为例说明等。尽可能借助例子解释学生不易理解的概念、算法。
当然, 注重感性教学只是一种教学对策, 并不意味着永远停留在这一层次上进行教学。
3.3 不照本宣科, 勇于创新
数据结构里的许多经典算法是固定的, 改进的空间非常小。尽管如此, 教师也不应照本宣科, 而应注意引导学生深入细致分析, 找出算法的关键, 力求在此基础上改进算法, 实现创新。下面以直接插入排序算法的教学为例说明。
原教材对直接插入排序的算法描述如下[4]:
算法1
教师可在学生理解的基础上, 引导分析并找出算法1存在的不足, 进而引导学生编写出改进算法:
算法2
算法2的A[0]既充当临时变量, 又充当循环判断边界。教师进一步启发使学生明白:A[1: (n-1) ]充当A[0]的角色会使算法复杂化, 但A[n]是可以的, 从而得出另一个改进算法:
算法3
现行的数据结构教材介绍直接插入排序几乎都采用从左边排起的办法, 而算法3则创新性的从右边排起。虽然只是方向上的小小改变, 但却能很好地训练了学生的发散思维, 使学生更透彻地理解了直接插入排序。可以看到, 只要不照本宣科, 勇于创新, 即使是简单的内容也能挖掘出创新的素材。
3.4 算法描述多样化
现行的数据结构教材大多用类C或类C++语言作为算法描述语言, 描述方式较为单一, 这对进一步提高编程能力有一定的帮助。但学生毕竟没有熟练掌握程序设计语言, 对某些较难理解的算法, 学生将有可能把重点放在对代码的理解, 而不是算法本身, 本末倒置, 教学目的无法实现。另外, 从心理学角度看, 单一的描述方式容易使学生觉得乏味, 激不起他们的好奇心。因此, 应注意算法描述方式的多样化。具体来说, 就是在原算法的基础上, 适当增加流程图描述、自然语言描述等, 用不同的方式描述同一个算法。这能使学生对算法理解得更透彻。
4 结语
在一个相对较低的起点上学习起点相对较高的一门课程, 师专计算机专业学生会遇到许多困难。除了要不断提高他们的学习能力, 更重要的是在学生和课程之间找到平衡点, 制定出切合实际的教学对策。总的原则是降低课程的教学难度, 提倡创新教学。
摘要:目前, 数据结构的教学研究文献大多把重点放在“怎么教”上, 而“为什么这样教”则讨论不多, 使得所介绍的方法针对性不强。本文在分析师专生存在不足和数据结构内容特点的基础上, 主要从教材选择、感性教学、创新教学、算法描述等几个角度提出了自己的看法, 所介绍的方法针对性较强。
关键词:数据结构,教学,分析,对策
参考文献
[1] 刘一颍, 刘培玉, 吕洪宾.山东省中小学信息技术教育情况调查与分析[J].山东师范大学学报 (自然科学版) , 2008, 23 (3) :31~34.
[2] 聂竹明.农村中小学信息技术教育存在的问题再思考[J].中国教育信息化, 2008, 24:31~33.
[3] 张乃孝.算法与数据结构—C语言描述 (第2版) [M].北京:高等教育出版社, 2006.
[4] 胡学钢.数据结构 (C语言版) [M].北京:高等教育出版社, 2004.