您好, 访客   登录/注册

数据结构教学改革的探索

来源:用户上传      作者: 曾旭

  摘要 首先,阐述了传统数据结构课程教学过程中存在的一些问题;然后,分析了问题的成因;最后,依据该课程的特性设计了教学内容、教学方法、教学手段、网络资源、成绩组成以及师资培养等方面相应的改革措施。
  关键词 数据结构 教学改革 课程实践
  0 引言
  在计算机科学中,数据结构是计算机中存储、组织数据的方式,是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,通常情况下,精心选择的数据结构可以带来最优效率的算法。
  数据结构作为一门独立的课程在国外是从1968年才开始设立的。1968年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。数据结构在计算机科学中是一门综合性的专业基础课,数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。①②数据结构的先修课程主要有高级程序设计语言和离散数学。同时,数据结构也是操作系统、计算机网络和数据库原理等课程的基础。③
  数据结构由于其特殊性成为了理工科专业的重要课程。与此同时,也由于该课程的抽象性使得如何教授好数据结构成为任课教师厄待解决的首要问题。④
  1 存在的问题
  数据结构作为一门专业基础课,与其他课程相比具有一定的特殊性。该课程着重介绍利用经典算法和数据存储结构来解决问题的思想以及该思想的程序实现,即:程序=数据结构+算法。由于课程内容抽象、理论性强、学习难度大,因此成为了“教师难教,学生难学”的两难原因。
  传统的数据结构课程设置包括理论课和实验课。理论课教授内容主要包括线性表、堆栈、队列、数组、树、图及其相关算法的分析;实验课主要是对理论课中经典算法进行验证性的程序实现。理论课和实验课教授过程中存在的问题主要有以下几个方面:
  1.1 理论课
  理论课介绍的数据结构及其相关算法较为经典,相关的经典算法很难与现实生活中的案例建立明显的联系。教师花费了大部分时间介绍课本知识,学生仅仅对知识点进行积累难以吸收和消化,最终觉得数据结构这门基础课程实用性不强且难度较大,进而会放松对该课程的学习,导致学习效果差,还会影响后续核心课程的学习。
  1.2 实验课
  实验课主要是对理论课中的经典算法进行验证性实现。由于教材中的算法均是利用伪代码进行介绍,故不能直接照搬教材中的例题。另外,再加上数据结构算法规模均较大,难以在短短的一次实验课具体实现。以上问题使得学生在实验课环节没有得到更好的锻炼。
  2 原因分析
  造成教学效果差的原因有很多,我们不能把责任单一的归结为任课教师的教学方式或者学生的学习态度的问题。从任教多年的经验中,可以总结如下几点原因是值得思考的出发点:
  2.1 教材
  各个出版社出版的数据结构教材较多,其中较为经典者当属清华大学出版的由严蔚敏和吴伟民主编的《数据结构(C语言版)》。该教材是各个理工科院校优选的大学本科教材,但教材在内容的组织上理论性较强,给教学工作的开展设定了较高的难度,难以带给学生趣味性。当然,不乏存在某些面向高职等学校的难度较低的教材,但其内容回避了数据结构的某些主要方面。
  2.2 学生
  学生在理论课和实验课的学习过程中会出现积极性不高或者对课程的认识出现偏差的情况。理论课的学习仅仅依赖课堂时间是不够的,学生需要花更多的时间来预习或者复习,在自学的过程中对算法的思想产生一定程度的认知,然后在课堂上教师的讲解下得到升华;实验课的进行不能单单的认为是照搬教材上的伪码,因为伪码是不能运行的,而且实验课的宗旨是“思想第一,实现第二”,短短的一次实验课不一定非要实现一个算法,可以把更多的课余时间利用起来对算法进行研究和实现。学生应该正确认识数据结构理论课和实验课的学习方法,并且找到合适的方式来学习。⑤
  2.3 教师
  教师在教授过程中不免会出现一定程度上的照本宣科。特别是经验不丰富的教师,也容易犯脱离联系实际的教学错误,这更容易使原本就抽象的课程变成空中楼阁,给学生带来一头雾水,最终挫伤其积极性和主动性,导致教学效果不理想。
  3 改革措施
  通过对上述现状及其原因进行分析,为获得较为理想的教学效果,使得学生为后续核心课程打下良好的基础,特建议从以下几方面进行改革。
  3.1 教学内容
  为了使学生把更多的时间花费在重要的知识点上,教师应该合理安排教学内容。有限的课时数并不能贯穿整个教材,某些知识点可以安排学生自学。由于近年来参加研究生入学考试和软考等专业认证的考生增多,教学重心应放在研究生入学考纲和软考等相关认证的大纲上,对于曾经出现过的考题可以作为课堂例题进行讲解,在基础理论讲解的过程中进行分析,加深学生的理解能力并增强其参与类似考试的自信心;对于不涉及的知识点可以略讲或者取消。例如:组数章节中的广义表部分在研究生入学考试中已经不再是考点,任课教师可以在该部分内容的介绍上有所弱化。
  3.2 教学方法
  “兴趣是一切工作得以顺利开展的动力”,由于课程固有的概念多、算法抽象等特点,教师更应该在教学过程中采用合适的教学方法来提高学生的兴趣。在介绍经典算法的过程中引入生动的案例,能够在最大程度上调动学生学习的主动性、积极性和趣味性。例如:在介绍顺序表时可以利用电话号码薄案例来引入,按照笔画排序后的电话号码簿肯定比零乱的容易查找;为了更进一步提高查找效率,可以建立一个对应于原链表的索引表;队列结构类似于排队购票,先到先买;树状结构能够将人机对弈问题各个步骤可能解决方案进行直观的分类选择;图状结构的遍历可以引入教育网的路由方式作为案例;排序章节中时间复杂度与空间复杂度的概念可以利用一个体育教师指导全班从低到高排队和两个体育教师分别指导分梯度快速排队,由此带领学生们理解用空间换取时间和用时间换取空间的概念。   3.3 教学手段
  (1)单纯的PPT教学并不能使苍白的理论变得鲜活,为了形象地再现数据结构及其相关算法的思想,必须借助于更为形象的动画演示。具有单步执行功能的动画演示能够在一定程度上帮助学生理解算法的执行过程。当然,单纯的动画演示并不能替代传统的板书效果,必要的时候采取边分析边板书的教学方式,能够最大限度地帮助学生理解算法的执行过程。
  (2)为了更好地让学生积极、主动地融入到对算法的理解中去,必须从教师“一言堂”的授课方式转变到有学生积极参与的形式。教师提前一次课选定适当的人员并分派任务,让学生在课余时间自己做PPT和动画演示,然后在课堂上为大家分析和讲解算法。带着任务的预习会让学生更有决心进行分析,成功的课堂讲解更能够使学生找回学习的兴趣。
  (3)传统的验证性实验只能让学生机械地照搬经典算法,学生可以从多种渠道找到源代码,然后生搬硬套的在短暂的一堂实验课堂上进行小规模的验证。或许大部分学生能够验证成功,但该方式并没有达到实验课的目的,学生的提升也有限。为了让学生带着问题完成算法分析和设计,教师可以提供多个题目供学生们在自由组合的情况下利用课余时间完成相关实践内容。由于时间较为充分,所以给定题目的规模可以稍大,让学生综合运用知识的能力、协作能力和创新能力均得到充分的发挥。
  3.4 网络资源
  短暂的课堂讲授并不能满足教学需求,为了更好地对学生进行辅导和交流,可以建立网络课堂。教师可以把丰富的PPT、动画演示、练习题、上机题、课程实践题等教学资源共享到网络上,并在留言区对学生进行在线辅导。互动的网络教学能够对学生们的疑问进行针对性的解答,最终让学生们的普遍疑问得到共同的解决并获益匪浅。
  3.5 成绩组成
  由于增加了课程实践的环节,故原有的卷面成绩+实验成绩的总分方式应有所改变。课程实践环节最能体现学生对基本知识点的掌握和升华,因此应在成绩组成中有所体现。新的成绩组成方式应该是:卷面成绩+实验成绩+课程实践成绩。
  3.6 师资培养
  在多方面得到改进的同时,也应该注重教师自身素养的培养。教师可以通过教研室内部指导、兄弟院校探讨、国内国际会议交流的方式与时俱进的提高教学能力,以更好地完成课程教学改革工作,最终达到提高教学质量的目的。
  4 结束语
  数据结构在培养学生抽象思维和逻辑推理能力的同时,也能够锻炼学生分析问题、解决问题的能力。⑥建立完整的知识体系,使知识融会贯通,并为后续课程打下良好的基础是教学的最终目标。通过对教学内容、教学方法、教学手段、网络资源、成绩组成以及师资培养等教学改革的研究,形成一个完整的教学体系,必定能够在教学工作中取得优秀的成绩。
转载注明来源:https://www.xzbu.com/8/view-3922521.htm