标题 | 数据结构课程教学模式探讨 |
范文 | 齐金山 郭立强 摘要:数据结构是高校计算机专业学习的核心课程。文中分析了目前数据结构教学中存在的教学方法僵化、实践性环节实施不利、授课对象的差异性等问题,结合实际提出了相应的教学改革模式,以此极大的提升课程的教学质量及学生的实践能力。 关键词:数据结构;教学模式;教学手段;差异教学;实践教学 中图分类号:G64 文献标识码:A 文章编号:1009-3044(2018)20-0094-02 数据结构作为计算机专业学生的核心课程,对学生的编程能力以及计算思维能力的培养起着非常重要的作用,并为学生学习后续课程打下坚实的专业基础。有关计算机专业的课程系统结构如图1所示,根据课程的学习顺序,数据结构起到承上启下的强关键作用,后续诸多课程如编译原理、操作系统、数据库、人工智能、计算机图形学等必须以此作为先修课程。宋等人[1]也进一步强调了数据结构的重要性,指出“通过本课程的学习,学生可以分析计算机处理对象的特点,选择合适的存储表示,并实现相应的算法”。然而,笔者在实际的教学过程中,发现一系列的严重影响课程教学质量的种种问题。本文在探讨这些问题的基础上,提出行之有效的教学模式以更好地服务于教学,使学生真正地掌握核心点。 1数据结构课程存在的问题和特点 数据结构作为一门理论性和实验性紧密相结合的课程,要求在教授理论与实验时必须分配相当多的学时。根据笔者从几所高校教学情况了解,课程一般均设置90个学时,其中理论部分占54个学时,实验部分占36个学时,从而保证学生有足够的时间掌握数据结构中的各种知识要点,如线性表、栈和队列、二叉树以及图等,同时确保将所学的理论知识能够熟练应用于具体的实践中并予以解决。然而在以往的教学过程中,发现存在诸多问题,主要表现在以下几个方面: 1.1 传统数据结构教学方法僵化性 传统的数据结构在理论教学方法中主要依据教学大纲规定的教学内容、章节教学时数,按部就班的讲解教材中的各知识点,侧重点不突出,导致学生一股脑儿地全盘接受,使得学生并没有将所学知识有机地串联起来,割裂了知识点之间的相关性。在实验教学过程中,同样采用此种教学模式,要求学生按照实验指导书中所标注的实验目标、实验内容以及实验步骤等展开实验,结果使得在培养学生创新性思维方面极度缺乏,导致学生在提出问题、分析问题、解决问题的能力没有得到进一步的提高。李等人[2]指出在数据结构教学过程中需要进行的一系列改革措施,以此提高学生的实践编程能力;沈等人[3]提出的以计算思维为中心的教学举措,均值得借鉴。 1.2 数据结构理论知识与实践教学环节存在的偏差性 数据结构理论知识与实践教学环节存在偏差问题。在真实教学当中,数据结构课程与编程语言课程往往紧密联系在一起。然而这两门课程由于都是独立开设,在不同教学语境下,不同授课老师往往将其孤立起来授课,结果导致两者之间缺乏必然的联系,从而引起后续存在各种教学问题。在制定教学大纲以及教学目标时如果没有特别考虑这两门课程在编程语言选择的一致性,将引起数据结构的理论知识与实践编程教学的脱节,严重影响教学效果。同样地,教授这些课程的老师之间也需要在知识衔接一致性上进行密切沟通,不然就会在教学内容上出现空白区域,使学生对两门课程的内在关联缺乏局部到整体的认识,进而导致不能深入系统地学习相关知识[4]。在培养学生计算思维方面,两门课程也需要保持一致性,传统教学方法往往注重编程语言和数据结构基础知识点的灌输,缺乏对学生计算思维能力的锻炼。由于数据结构中的知识相对比较抽象,如果缺乏对应的真实案例对抽象知识加以应用,那么就会导致学生不知道怎样将所学的知识应用到实际中,缺乏具体问题具体分析和解决的能力[5]。 1.3 授课对象存在的差异性 由于学生学习能力以及努力程度等方面存在的个体差异,导致掌握编程语言学习基础就出现两极分化,部分学生编程能力偏弱,间接影响后继课程尤其是数据结构的教学效果。如果对整个年级不加以区分,则严重影响数据结构的整体进度,同时,深化知识也无从谈起。教师的教学始终停留在一个相对肤浅的知识层面上,不利于培养学生的综合能力,尤其对于那些优等生来说,更不利于其创造性思维的培养。 鉴于以上真实教学中存在的种种问题,结合本校的实际情况,将考虑进行如下数据结构课程教学模式改革,不仅旨在打破传统数据结构按部就班教学模式,同时依据数据结构和编程语言这两门核心专业课程的教学内容和计划,做好相关知识的整合和内容的衔接,另外注重不同对象的差异教学。课程教学不仅要关注知识的传授,还要培养学生主动获取知识并综合已有知识创造新知识的能力[6]。 2 数据结构课程教学模式改革 为了使学生熟练掌握数据结构相关知识以及具备编程技巧,以完成后续较困难的项目开发,为此制定了以下的数据结构培养教学模式改革方案。 2.1 差异性教学模式 根据课程设置,在第一学期和第二学期中进行C++编程语言训练。研究对象为大一学生,他们在第二学期完成了C++编程语言的学习之后,将为第三学期的学习数据结构奠定坚实的基础。同时,在第二学期开始,教师对学生进行培训动员,介绍对他们进行培训的目的和实践意义,所有参加者自愿参加培训活动。教师依据培训者对C++编程语言掌握情况进行差异化教学,以有利于解决授课对象存在的差异性问题,因此将培训者分为两组:基础组和提高组。在基础组主要介绍C++编程语言的基本语法和编程训练,具体训练内容包括数据类型、变量、操作符、表达式、程序结构和语句、模块化编程技术、数组以及指针的使用。而提高组中引入C++编程语言的高级内容,如类与对象、文件的操作和使用技巧。两组根据学生掌握的知识随时调整。教师在培训过程中要求学生必须进入实验室,并在计算机上进行实际操作。在培训中,教师讲解内容的一部分,然后学生在老师的指导下编写程序。此外,为了激发学生的学习兴趣,教师还将提供一些学生喜欢的小游戏,供学生在编程训练中使用。同样地,在进行数据结构具体教学任务中,也实行差异化教学,将整体学习对象也划分如上两组。其中基础组主要介绍数据结构的基本概念以及常规应用,具体训练内容包括线性表、栈和队列、树和图等基础知识的掌握。而提高组中引入高阶知识的編程应用,如图像的压缩存储等等。进一步增强那些学有余力的同学分析问题、解决问题的能力。 2.2 实践性教学模式 针对数据结构理论知识与实践教学环节存在偏差问题,首先,要确保数据结构教材使用的编程语言与前驱课程C++保持一致,这样更有利于数据结构课程的实践实现。其次,做好这两门课程教学内容的融合与衔接问题,尤其针对两门课程存在知识点的重合部分,教师间确切沟通、整合好有关教学内容。如整合两门课程的数组、排序等相关知识点。再次,构建多层次实验教学模式,进一步巩固学生的数据结构理论知识以及实验动手能力。由于数据结构是一门实验性很强的专业基础课。实验教学是本课程教学的重要组成部分。为此,构建多层次实验教学体系,所有的授课对象都需要接受如下的实验教学内容:基础实验、课程设计和课外科学活动。在基础实验上,学生在掌握数据结构理论的基础上,需要在C++编译器中调试算法,以实现各种数据结构和基本操作。根据理论教学,可以精心设置八个基本实验,主要内容包括:线性列表的基本操作、序列堆栈和链接队列的操作、遍历二叉树、创建和遍历图形、操作、二叉排序树等。为了帮助学生形成正确的观念,防止其编写不合理的程序,需要对每一个实验都制定严格的标准,并给出了一个统一的格式,包括实验目的、预备知识、实验内容、实验过程以及体会五个部分。学生在计算机上调试和测试程序,教师适时引导学生,使学生成为独立、有效的学习者。这些措施不仅可以提高程序调试的成功几率,而且可以增强学生学习的信心和兴趣。在课程设计上,学生需要结合实际应用来解决一些更大的问题。为此教师可以提前预设一些较为困难和较强的应用程序,供学生选择,如稀疏矩阵计算器、停车管理系统、最小生成树问题等等。在这个过程中,若干名学生形成一组,随机选择一个项目,小组成员合作完成项目。通过分析、设计、编码和调试,学生可以深刻理解和掌握逻辑特征和物理存储,以及算法设计和软件实现。为了给学生提供严格而良好的程序设计的基础训练,教师制定课程设计标准化的要求:首先,需求分析,在这个阶段,主要工作是要求识别分析问题。其次,总体设计,主要工作是定义系统的数据类型和基本功能模型。第三,详细设计,设计任务主要是细化数据结构规范和基本操作,定义数据存储结构,确定算法的主要步骤。第四,设计实现,其任务是通过编码和调试,使学生掌握错误检测的基本技术。第五,完成课程设计报告是最后阶段。在课外科学活动上,为了拓宽学生的知识面,提高学生的综合能力,教师鼓励学生参加各种课外科学活动,如大学生创新基金项目、教师科研、数学建模竞赛等。在这些活动涉及许多数据结构的基本理论。通过解决这些问题,可以激发学生的学习积极性,提高学生的编程技能,提高他们分析问题和解决问题的能力。 2.3 兴趣驱动模式 针对传统的数据结构教学主要以填鸭式教学为主,无法充分调动学生的学习兴趣,因此培养学生的兴趣尤其重要。兴趣是最好的老师,是学生学习新知识的动力源泉[7]。教师在课堂上就理论知识部分应该做到主次分明、重点突出、懂得取舍,尤其应着重结合具体应用实例吸引学生的注意力。通过这些实例,更好地调动学生的学习兴趣,使他们意识到数据结构并不单纯是学习各种数据如何在计算机中存储以及表示,而是所学的知识将来如何解决工作和生活中的相关问题。同时教师在讲解基本内容和思路后,留出部分时间在现场向学生提问并讨论和予以解决,以发挥学生的主观能动性。这种互动的教学方式,使学生由被迫式学习转化为主动式学习,从而使这个学习过程变得生动有趣。学生在学习过程中收获到极大的满足感与参与感,进而提高教学效果。 3总结 本文在分析数据结构教学中存在的诸多问题后,提出了相应的教学改革模式,希望以此提高教师在日常教学中的教学效果和教学质量,尤其提高学生的实践能力和编程能力。然而在教学探索中依然存在不少问题,需要我们在以后的教学实践中进一步完善和修正。 参考文献: [1] Song Y, Jin S, Xu F. Explorations on Strengthening of Students Programming Capabilities in Data Structure Teaching[J]. Lecture Notes in Electrical Engineering, 2014(269):2765-2770. [2] 李群,赵玉霞,庄波.《数据结构》实验课程设计与探讨[J].中国现代教育装备,2007(3):27-28. [3]沈华,张明武.以计算思维为中心的数据结构教学方法探讨[J].计算机教育,2016(10):145-148. [4]尹兰,唐翠芳.计算机专业基础课程中的递归教学[J].现代计算机,2012(5):57-60. [5]郭艳燕,童向荣,孙雪姣,等.程序设计基础与数据结构两门课程的教学衔接[J].计算机教育,2014(10):47-50. [6]陈越,何钦铭.计算机专业研究型课程教学模式与创新能力培养的探索[J].计算机教育,2009(24): 99-101. [7] 薛小锋,薛向红.案例教学在非计算机专业“C语言程序设计”教學中的应用[J].江苏技术师范学院学报,2010(4):80-82. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。