非计算机专业“数据结构与算法”课程中的教学方式的改革
2017-12-16范军
范军
【摘要】《数据结构与算法》是一门重要的信息基础课程,本文在分析数据结构教学现状中存在问题的同时,提出了多项措施来提高教学效果。如以Flash动画等更加灵活和多样化的教学手段,增强课堂教学效果;在教学内容上通过理论与应用案例相结合的方式来提高学生兴趣;在算法设计上,总结一些带有规律性的技巧来降低程序设计的难度。最终通过上机实践教学,来提高学生综合编程和算法设计的能力。
【关键词】非计算机专业;教学信息化;教学方式改革
【中图分类号】TP3-4 【文献标识码】B 【文章编号】2095-3089(2017)15-0046-02
随着计算机智能化应用的不断普及,对于其程序的智能化,时间和空间效率都提出了更高的要求。这就要求程序员除了掌握相关的编程语言的同时还要具备良好的数据结构知识,只有这样他们才能从构成程序的最基础部分:数据构成和存在形态来对程序进行优化。数据结构课程是电子信息类学科的一门基础课程,它为以后的编译系统、数据库和智能信息系统的设计打下了良好的基础。目前,数据结构课程不仅是计算机学科的核心课程,而且也成为其他理工专业的重要选修课。
数据结构课程主要讲解各种常用的数据的逻辑结构、存储结构和实现算法。该课程的特点就是逻辑性强,概念多、算法复杂。为了使程序具有语句简洁,通用性强以及能适应多种复杂应用场合的要求,在数据结构中大多采用了高效的程序设计方法和工具:如子函数的递归调用,宏定义、动态分配存储空间以及采用指针、结构体等复合数据类型。这些特点也给学生的理论学习和程序设计造成了一定的困难。如果没有好的教学方法很容易使学生产生畏难的情绪,这也更显得对其进行教学研究改革具有较强的现实意义。
虽然近年来数据结构课程的重要性日益显现,但当前非计算机专业对于该课程的重视仍然不够。再加上教师的水平和学生的素质等影响因素导致了教学手段单一,教学效果上也差强人意,这主要表现在以下几个方面:
一、学生的编程基础差、特别是算法思想欠缺
虽然学生在上本课程之前大多具有一定的编程语言:C语言的编程基础。但在教学中笔者也发现,由于教学课时所限,上机练习较少,使得许多基本概念掌握的不甚牢固。这些基础的不牢会严重影响学生对数据结构课程的学习效果。
二、教学方式不够灵活,理论和实验环节脱节
在本课程的以往的教学过程中,虽然许多教师在教学过程中已采用了多媒体教学,但是大部分教师使用的仍然是由教材上内容浓缩而来的简略的和静态的文字图表,缺乏直观效果。这些静态图表难以充分展示算法的动态变化过程,学生也难以掌握数据之间的复杂关系。当前数据结构课程教学的另一个问题就是理论知识介绍与实际应用联系很少,学生学习的兴趣不高,而只是为了考试而學习。
为了克服以上所列的当前教学上的不足,笔者主要从以下几个方面对数据结构课程的理论课和实验课进行改革
三、强化重点知识并采用更加生动的课堂教学方式
在数据结构课程中,对于重点所用的知识不仅在课堂上也要在上机实验中反复练习和强化,同时对教学内容进行了合理的筛选和编排,去掉一些非核心的内容,加强数据结构和算法的内容,例如,在教学中去掉了广义表、串变量和文件等内容的教学,而是留给学生课后自学。
在一些重要的内容上,在课堂授课方式采用更加直观和生动的教学方式。对于难懂的算法或过程,采用图表、文字加Flash动画的方式对这些算法的执行过程进行逐步分解和展示。如在数据结构课程中有关递归函数执行过程中其堆栈、指针和数据结构的变化情况就是一个动态变化的过程。而在教材上往往采用一个(或几个)静态图表来表示,学生很难理解。笔者对课件进行了升级优化,用Flash动画形式以教师手控的方式以动画形式逐帧地展示数据结构在操作(遍历或替换等)时其指针、堆栈和数据的整个变化过程。图1为图的深度遍历的flash动画截图。图中不同颜色背景的变化动态地展示了对一个以邻接矩阵形式存储的8个顶点的图进行深度优先遍历程序的执行过程。
四、对知识进行归纳分析,总结规律,使之编程有规律可循
在数据结构知识的算法设计中由于大量的采用了递归调用等编程模式,这些编程方式的不同,再加上特性各异的数据结构,使得学生在理解数据结构,看懂算法,并将算法转化为可执行的程序代码方面存在很大的困难。因此,我们要帮助学生走过这一段难走的“过渡路”,帮他们总结编程规律,从课本上已有的经典程序进行适当的变形来实现编程的要求。笔者通过实验习题课讲授实际的编程例子并给出有规律的编程框架使学生尽快掌握一大类数据结构的编程问题。
五、采用理论知识+应用案例介绍+实际应用编程实验的方式来巩固所学到的知识
除了在课堂讲授的同时,笔者还精心设计上机实验题目,使之不仅涵盖了教材相应章节的知识点同时又具有趣味性和相应的应用价值,使学生通过对这些实验项目的编程和调试,既巩固了课堂中所学的知识又掌握和了解这些知识的应用。如在“图”这一章节的实验的题目我们设计为:根据给定的人数,给定的运动会项目,每人参与的项目设计一个小型运动会的时间表。该实验题目是通过将运动员在运动会所承担的项目类比于图的节点,而后根据它们可能发生的冲突情况构建出“项目冲突图”(有运动员同时参加的项目之间加一连线),再对这一冲突图进行相邻节点不同色的着色,最终将对同一颜色的节点(不冲突的运动会项目)分为一组,这些就可得到几组时间上不发生冲突的运动会项目。
通过这一实际案例的设计,学生可巩固所学到的图的存储,联通图的建立,图的遍历,以及图的着色理论及应用。这样学生也不再像原来对“图”这一数据结构理解的那样空洞、抽象,学无所用。通过与实际应用的密切联系,学生对所学知识的理解和应用能力及学习兴趣都会有很大提高。
《数据结构》是一门具有非常好的实用价值的信息基础课。它的较强的理论性和实践性使得它更需要合理、有效、系统地组织教学内容,并用实验教学过程来加强理论教学的效果。只有我们采用好的教学方式,充分调动学生的学习的积极性,一定会取得好的教学效果。endprint