您好, 访客   登录/注册

《数据结构》教学内容与方法改革研究

来源:用户上传      作者: 符蕴芳

  摘要:根据课程现状,探索《数据结构》课程新的教学方法改革。通过改进教学内容、设计“基础训练+技能训练+综合训练+开发训练”四个不同层次的实验形式引导学生学习, 并强调在教学过程中应采取的教学方法和利用算法演示程序来加强教学效果。
  关键词:数据结构;理论教学;实验教学;教学方法;算法演示程序
  中图分类号:G642 文献标识码:A 文章编号:1009-3044(2011)35-0000-0c
  
  Study on Reformation of Teaching Content and Methods on Data Structure
  FU Yun-fang
  (Computer Department, Shijiazhuang College, Shijiazhuang 050035 China)
  Abstract: According to the situation of the course of DATA STRUCTURE, the new teaching methods are explored to reform. In order to guide students to learn, teaching content of the course is improved, and four different levels of experimental teaching types are designed, that is, Basic training, Skills training, Integrated training and the Development training. At the same time, teaching effect is being emphasized by using appropriate teaching method and algorithm demo program.
  Key words: data structure; theoretical teaching; experimental teaching; contents; teaching method; algorithm demo program
  《数据结构》课程是高等院校计算机系多媒体技术专业学生的一门专业基础课程,是介于数学、计算机硬件和计算机软件之间的一门计算机科学与技术及相关专业的基础课,具有非常重要的地位和作用。数据结构技术广泛应用于信息科学、系统工程、应用数学以及各种工程技术领域。本课程的任务是通过学习,培养计算机专业的学生结合实际应用,设计有效的算法和数据结构的能力。然而,由于该课程涉及的知识面较为广泛,学生除了需要一定的程序设计语言基础外,还需要多种数学理论基础。因此,如何对《数据结构》教学内容有效地进行组织与对教学方法进行适当的改革,是当前数据结构教学的首要任务。
  1 教学现状分析
  1.1 课程较为抽象,应用范例少
  《数据结构》课程理论性较强。因此,对于学生来说,该课程较为抽象,难以理解原理的精髓。尽管通过实践教学对课本上的一些基础算法的进行验证性实现,但在实际生活或工作中的无法灵活应用。因此,种种原因让学生产生了该门课在今后的软件开发中是极少用甚至是用不到的错觉[1]。进而导致学生降低对该课程的重视,以至于失去学习积极性。
  1.2 先行课程掌握不扎实
  《数据结构》涉及的知识面较广。要掌握该课程,学生必须掌握一定的编程能力和具备一定的数学理论基础。例如,在分析算法的时间、空间复杂度时需要高等数学的知识,在分析树、图结构时需要离散数学中图论部分关于树和图的知识等等。而课程中的算法描述大都是用C或者C++语言,少部分甚至是JAVA语言来描述。因此要求学生具备C或者C十十语言的编程基础、高等数学和离散数学是必要的。
  然而,作为该课程的前导课:《计算机导论》/《C语言》/《C++语言程序设计》/《JAVA语言》等,大部分学生学习后只是比较熟悉简单数据类型和结构化程序设计中的三种基本结构的应用。对前导课的难点内容,例如:多维数组、结构体(或者类)和指针这三种数据类型的认识和理解不但不深,而且还不会用。然而,正是此部分内容才是数据结构课程的重要基础和灵活运用的知识点,并且贯穿整个数据结构课程学习的始终。因此,这种现状必然导致许多学生在实现数据结构中的算法时不能得心应手,从而止步不前,产生畏难情绪,严重影响了学习效果和学习进度。
  2 教学方法改革初探
  2.1 理论与实践结合,课内与课外结合,全面提高学生综合素质
  在课堂教学内容中,大量引入科研与工程实际案例。将这些问题以深入浅出的方式,以理论与实践结合的方式,使得学生更好地理解树型结构和图型结构,以及排序算法、查找算法在其中的成功应用,加强了学生对于理论的理解,以及将所学理论知识综合应用于实际问题的认识。另外,将课堂教学与课外的竞赛考试相结合,组织和辅导学生参加程序员、高级程序员证书考试和各类大学生创新竞赛,能够进一步培养学生的探索和创新能力。我系领导在这方面给予了大量的支持,同时也取得了显著的成效:08级软件工程(本科)学生在2011年全国软件大赛中有十名学生获全国三等奖,同时还获省一等奖; 09级计算机多媒体技术(专科)学生在2011年河北省挑战杯大学生课外学术科技作品竞赛获三等奖。
  2.2 改进实验教学环节,实施 “基础训练+技能训练+综合训练+开发训练”的实践教学体系
  2.2.1 基础训练
  对教学内容中的每一种数据结构,其基本操作即基本实验,即一次实验解决一个问题,使初学者易于接受。比如,顺序表及其运算,链表及其运算;栈和队列的运算;串的运算;二叉树的应用;图的存储与遍历;排序与查找等等。
  基础训练是教学中一项必要的教学环节,基本能够达到实验课的教学目的,但是存在下列缺陷:
  1)实验内容由教师根据教学要求对一些基础算法进行验证,无法与生活中的应用联系;
  2)实验内容往往限制了学生的思路,使其局限在某几个领域的实验项目上,对学生提高与扩展各门课程理论知识之间的联系不利;
  3)使学生局限在严格遵从既定实验步骤的基础上,缺乏主动和独立性的训练;
  因此,要使学生达到本课程实验教学目标,只有加强后续的技能训练、综合训练和开发训练,才能真正让学生掌握、提炼所学知识。
  2.2.2 技能训练
  技能训练是在学生掌握了基本训练的基础上,训练解决实际问题的应对技巧,从而将理论知识更加灵活运用到实际问题中,达到技能训练的目的。比如,统计文章中的文字,数字,空格的个数,存储结构用的是什么结构;宿舍管理查询软件中查询功能可用什么查找方法效率比较高;跳舞搭配问题中可采用什么存储结构等等。
  技能训练培养了学生发现问题、分析问题和解决问题的能力。而且能生活的应用连接得更加紧密,让学生在学此课程的同时,不仅仅与其它课程能联系,而且还与专业应用领域靠拢。激发了学生的兴趣。但是技能训练也有一些不足,比如,没有综合运用数据结构知识和技能等等。
  2.2.3 综合训练
  综合性实验是建立在技能训练的基础上的实验过程,是指实验内容涉及本课程的综合知识或与本课程相关的课程知识的实验。课程的教学内容过半后,即可对学生进行综合性练习(课程设计大作业),大作业题目中的设计性问题即属此类。

  实验内容包括综合运用数据结构的知识内容,有针对性对计算机专业的应用领域,设计一些与生活应用相关的小型管理系统。例如,旅游景点介绍管理系统,学生信息管理系统等等。通过这些实验,使学生能够将数据结构的理论知识灵活地贯穿于实际应用当中。
  一般而言,综合性实验具有实验内容的复合性、实验方法的多元性。实验内容的复合性旨在培养学生知识对知识的综合应用能力。实验方法的多元性目的在于培养学生运用不同的思维方式分析问题、解决问题的能力,通过这种方式,让学生掌握不同的实验方法。
  2.2.4 开发训练(即设计性训练)
  开发训练的主要目的是通过所掌握的诸多知识层面,实现一类应用软件的开发。教育部高教司关于《普通高等学校本科教学工作水平评估方案》(试行)文件中明确定义:“设计性实验是指给定实验目的要求和实验条件,由学生自行设计实验方案并加以完成的实验。”根据定义,设计性实验不但强调教师所给实验题目及目标的合理性、学生的完成实验的独立性,更强调实验设备和必要实验材料的可用性[2]。
  在实施此实验过程中,就注意以下几个环节:
  1)实验要求和实验目标的确定:开发训练的目的在于培养学生系统分析和设计的能力、在实践过程中发现问题并不断解决问题的能力,从而让学生加深对数据结构理论知识的理解。因此,目标的和要求的设定非常重要,同时也要需要考虑到专业的不同性、学生的差异性。
  2)学生分组:设计是一门实践艺术。同一个主题,不同的设计人员可能因为想法不同,从而得到不同的结果。因此,让学生自由分组对同一个主题的不同设计方案进行讨论。
  3)查阅资料、选择实验题目
  一定要让学生选择自己擅长的主题,同时要保证所选主题能够找到丰富的参考资源。另一方面,任课教师可根据经过多年的教学实践经验,将积累的一些经典的题目供学生选择。
  4)进行调研及系统分析设计:该阶段很重要,是学生出现问题最多的阶段。需要指导教师随时跟进,进行适当的指导和监督:一方面可以帮助学生分析实验中出现的问题,另一方面可以针对问题进行启发、引导学生,让学生正确面对各种问题,进一步去思索和解决问题的办法,在实践中寻找问题答案。
  5)撰写设计报告:撰写设计报告是学生完成每一项实验必须填写的,也是应该掌握的技能。通过撰写设计报告,无益于是一次对学生设计过程、思维方式的再认识与提高的过程。通过处理实验中遇到和发现的问题还能够进一步深入思考,锻炼了学生的创新能力。
  6)教师审定设计报告:教师进行及时审核和点评学生的设计报告,并中肯地指出报告中值得肯定的部分和可以改进的地方的方式,可以进一步加深学生对数据结构设计的理解。
  3 改进教学方法,利用多媒体技术,开发算法演示程序。
  3.1 以问题作引导,激发学生的求知欲
  在理论教学中,应按照学生的认知规律,遵循先简单后复杂,先具体然后抽象的原则,以具体的问题,通过观察、分析、理解、总结进行教学[3],让学生自己在直观上先观察、分析具体问题,领悟所涉及的相关概念,然后再归纳总结。比如,在讲解栈和队列的知识点时,我首先以生活中的实例--排队买票与火车进、出站为例让学生观察它们的特点,然后再引出它们的概念,特点和相关的数据操作,然后引导学生再次思考这些操作在计算机中如何进行采用相应的数据结构进行存储和实现?让学生意识到生活的案例完全可以用所学知识进行实现,从而激发了学生学习的主动性和创新能力,形成对知识的科学态度和对问题进行分析的兴趣。
  3.2 以问题为中心,促进学生的学习能动性
  问题是学习的引导者,没有问题,学习就不会深入。所以,在教学中教师针对问题,要能启发学生自主地发现问题,形成让学生主动去分析问题和解决问题,并且能够进行总结规律的习惯。通过这种方式,能够使学生就更容易掌握所学知识。比如,在讲解排序时,我给了一组数据,让同学们用四种排序算法实现,并比较它们的效率(时间与空间的效率),最后得出结论,什么情况下用哪种排序方法好, 效率高等等。这种以问题为中心的互动式教学,改变了传统教学中以教师为主、学生为辅的教学状况,通过教与学互相结合、互相渗透,使学生能对知识掌握得更加透彻,进而促进了学生的学习能动性,并培养并锻炼了学生分析问题和解决问题的能力。
  3.3 使用多媒体技术,开发并制作算法演示程序
  开发并制作算法演示程序的目的是使抽象的“数据结构” 中的典型算法通过动态画面模拟演示给学生。制作的意义在于制作教学内容的动态演示程序,能够使抽象的知识形象化,使学生更深刻的理解要掌握的知识[4],进而激发学生的学习兴趣和主动性。但是,使用多媒体技术开发并制作的演示程序因为具有生动的画面、动听的音乐,因此容易分散学生的注意力,所以,这种教学手段使用一定要适度。
  4 总结
  《数据结构》是计算机专业的骨干、核心课程, 也是大多数学校研究生入学考试的必考课程。本人通过对该门课程理论与实验教学的摸索和尝试,提出了理论与实践结合,在课堂教学内容中,大量引入科研与工程实际案例;并设计了“基础训练+技能训练+综合训练+开发训练”四个不同层次的实验形式引导学生学习,通过改进教学方法,利用多媒体技术,开发算法演示程序,激发了学生的兴趣,调动了学生的主动性和能动性,增强了对《数据结构》课程的学习兴趣,进一步有效地提高了学生的分析问题、解决问题的能力和团体合作意识。具体实验设计中充分考虑专业的不同性和学生的差异性,紧密结合当前专业市场需求,设计针对性强的各类管理系统实验,让学生在学习中提高对本行业的认识了解,为今后学习工作打下良好基础。
  
  参考文献:
  [1]肖颖.《数据结构》教学改革思考与实践[J].福建电脑,2010,(9):214-215.
  [2] 朱静.陈新兵.谢斌盛.设计性实验教学的探索与思考[J].科技资讯,2007,(12):149-150.
  [3] 吕加国.“数据结构”教学模式的研究与应用[J]. 计算机教育,2009(4):82-85
  [4] 李向阳. 基于flash 的《数据结构》算法动态演示课件的设计[J].科技信息,2009(1):492-494.


转载注明来源:https://www.xzbu.com/8/view-44092.htm