1、 数据结构论文:数据结构实验教学探索摘要:实践教学是数据结构教学中的一个重要环节。本文就如何提高数据结构的实践教学水平,从实践题目的设计、实践环境的搭建、实践过程的组织与实施、实践结果的检验与考核等方面提出一些方法和建议。 关键词:数据结构;实践教学; 教学探索; 教学方法 数据结构讲授计算机程序设计的一些重要理论知识和典型算法的设计与实现。在军队院校中,数据结构是计算机专业的核心课程,也是其他一些相关专业(如指挥自动化专业) 的必修课,但它又是一门难学的课程,主要原因如下: 1) 课程特点加大了学习难度。课程知识丰富,涵盖多种数据结构在计算机中的组织与存储方法及基本操作的实现算法。课程内容比
2、较抽象,要求学生能针对具体问题抽象出问题的数据模型,通过求解数据模型解决问题。知识点应用灵活,学生不仅要学会使用现有的数据结构,还要能根据问题适当调整。 2) 学生的程序设计能力较差。数据结构要求学生具备较强的程序设计能力,能将课中所讲授的算法思想编写为正确的程序代码,而学生程序语言基础和程序设计能力普遍较弱,面对问题时难以有清晰的算法思想,无法将算法思想转变为正确完整的程序代码,在上机调试和运行程序等方面也屡屡碰壁。最终,理论知识不能转化为实际编程经验,学生觉得课程枯燥无趣,对学习的意义产生怀疑。 在教学中,教师课堂教学时辅以配套的上机实践,能有效解决上述问题。在上机实践中,学生将每种抽象的
3、数据结构转化为具体的实现代码,有助于理解和掌握抽象的数据结构概念;学生将已实现的数据结构作为工具(直接重用或少量修改),将其用于解决各种具体应用问题,不仅能拓宽解决问题的范围,提高程序设计的水平,还能减少编程的工作量,使程序结构更加清晰。还有,不断开展编程实践有助于学生累积编程经验和培养编程能力,笔者就数据结构课程的实践教学1-2进行了初步探索。 1 实验题目的设计 由于实践教学时间有限,学生的程序语言基础和程序设计能力普遍较弱,因此精心设计和挑选实验题目显得非常重要。实践题目包括由易到难 3 个层次: 1) 基本算法题目。用于验证课堂上讲授的重要知识点,加深学生对知识的理解和掌握。2) 一般
4、应用题目。仅针对单个数据结构,要求学生运用已学的某种数据结构解决具体应用问题。这类题目的难度适中,主要是让学生使用数据结构解决某类应用问题。 3) 综合性应用题目(课程设计 ),可覆盖多个章节的知识点,难度较大,学生可以组成小组,利用课外时间相互讨论共同完成,在课堂上答辩。综合性题目主要培养学生的创新能力、科研能力和组织管理能力。以线性表为例,老师在课堂上讲授了线性表的概念、两种存储方式和基本操作的算法实现,接下来学生在实验中编程实现顺序表和链表及基本操作算法,再用已完成的顺序表和链表解决实际应用问题,如约瑟夫环、线性表逆置、高校学籍管理等,比较不同实现方式的程序性能差异,逐步建立线性表的知识
5、体系。 题目的设计应遵循以下原则: 1) 基本算法题目的内容具有代表性,涵盖每章的重要知识点,难度不大,能帮助学生理解理论知识。实验内容和课堂教学内容相互对应,学生要在接下来的实验中编程实现课堂教学讲授的知识。 2) 实验题目的难度要有层次性,要照顾到基础差的学生,对于基础好的学生,可以布置额外题目,或者同样的问题用多种方法解决,比较不同方法的程序性能,使不同能力和基础的学生都可以很好地参与实验。基础较差的学生可以弥补自身不足,基础较好的学生可以进一步提升自己的编程水平。 3) 实验题目不一定很难,但是要有趣味性,课题最好能与实际生活中的事物相联系,或与计算机系统的实现相结合,这样学生容易接受
6、和理解,并能提高学习积极性。例如,在栈的学习中,选择表达式括号匹配判断、表达式求值、递归实现等,教师不仅要让学生学会用栈解决应用问题,也要让学生对计算机系统的具体实现有更深理解。表 1 列出了一些对应于各个章节实践教学的实验题目。 2 实验环境的搭建 在教学中,部分高校所选教材是清华大学出版社的数据结构(C 语言版)3, 使用 C 语言作为程序设计语言,采用 Turbo C 作为实验工具。我们在教学中发现,采用 C 语言的数据结构讨论的侧重点在问题的算法设计和算法实现上,容易使学生把考虑问题的重点放在局部,而忽略了数据结构的整体性。但 C+把数据结构看做一个整体,先将每种数据结构定义为一个专门
7、的类,分析它的逻辑特征和操作接口,然后结合具体的存储结构讨论每个操作的具体实现算法,有助于学生建立数据结构的整体概念。而且,C+的面向对象思想提倡程序的继承性和重用性,学生直接使用或少量调整已实现的数据结构类去解决各种应用问题,能提高程序的复用性和可维护性。还有,Visual C+比 Turbo C 提供更方便的程序编辑环境和程序调试工具。考虑以上因素,在搭建课程的实验环境时,我们选择 C+作为程序设计语言,采用面向对象的程序设计方法,选用清华大学出版社的数据结构(C+版)4作为教材,实验集成开发环境选择 Visual C+ 6.0。考虑到大多数教材提供的程序代码不完整,为了帮助学生更好地验证
8、所学知识,教师提供了每种数据结构的整体程序框架,让学生添加部分重点算法代码就能获得程序结果,给学生直观的感受和参考模板。在课程后期,教师提供与实验题目配套的源代码,源代码完整并可直接在计算机上运行,以供学生学习和参考。 3 实验过程的组织与实施 在实验课上,教师可将学生划分为 35 人小组,建立组长负责制,然后分组实验。鼓励组员相互讨论、帮助,通过相互讨论自己解决问题,这比教师指导能留下更深刻的印象。对基本算法题目,所有学生都必须完成,但是对于应用题目和综合题目,不同小组可以选择不同题目,然后再相互讨论。这一方面有利于学生在有限的实验课时内完成更多的实验题目,另一方面还能培养学生的竞争意识和团
9、队精神。例如,用线性表解决约瑟夫环问题时,让几个组的学生用顺序表来实现,让其余组的学生用循环链表来实现,然后让两个组分析和比较两种实现方式的不同。 实验过程中,教师要重视培养学生独立思考和解决问题的能力,引导学生逐步建立自己的编程思维,即面对实际问题,学生能对问题数据进行合理抽象,选择适当的数据结构组织与存储数据,分析和设计出可行的算法思想,最后编写出结构清晰与运行正确的程序。其次,辅导时要做到因材施教,对于能力较强的学生主要以引导为主,让学生自己去设计算法思路和编写程序,主动去思考,主动去发现和尝试,对于思考不完整、不深入的地方提示一下,并且鼓励学生尝试一些比较难的应用题目。对于能力较弱的学
10、生,可以先讲解一下算法的基本思路,并且在编写程序过程中给予一定帮助,程序的成功运行能大大鼓励这部分学生的学习积极性。还有,重视培养学生程序纠错和调试程序的能力。对于编译错误,老师可以收集常见错误的英文提示,提前告诉学生它们的错误含义,当学生上机遇到错误时可参考修改。对于逻辑错误,教会学生调试程序的方法,观察和分析程序运行过程中各变量的变化过程,通过注释部分代码来简化问题和查找错误点,帮助学生提高改错能力。 4 实验结果的检验和考核 老师必须重视检查实验结果,才能消除学生的惰性和畏难情绪。在下课前,教师应以小组为单位检查实验情况,以平时成绩作为激励机制,奖励完成速度快、情况好的小组。此外,应重视
11、实验报告的书写,实验报告一般包括实验题目、实验要求、实验过程、实验结果、源代码、实验中遇到的错误及改正方法、实验心得等。其中,实验结果要包含程序运行的结果图片,源代码部分要求学生手工抄写。实验后抄写源码有助于代码记忆,防止学生在笔试中写不出完整程序。通过实验报告,老师可以检查每个学生的实验完成情况,发现普遍存在的问题,在课堂上进行更正。5 实验问题的总结与弥补 在实验教学中,老师能清楚地感受到学生的学习情况和存在的问题,有必要对这些情况进行总结和分析,在课堂上帮助学生弥补不足。比如对于学生在实验中普遍觉得复杂的程序,教师在课堂上再次讲授,并给学生提供源代码,以供参考。还有,学生普遍存在的一些不
12、好的编程习惯,如程序排列格式、变量命名方法等,教师可以总结一下,在课堂上讲解。 6 结语 数据结构教学的基本原则是精讲多练,学生必须经常进行上机实践,才能循序渐进地提高程序设计能力。我系教师在实践教学中总结了一些经验,有助于培养学生分析、解决问题的能力。 参考文献: 1 张桂芬,李海滨. 数据结构实验教学的改革与探索 J. 高教论坛,2008(3):103-104. 2 青宇航. 关于数据结构现代教学方法的探索J. 教育与职业 ,2007,3(9):151-152. 3 严蔚敏, 吴伟民. 数据结构(C 语言版)M. 北京: 清华大学出版社,2001. 4 王红梅. 数据结构(C+版)M. 北京: 清华大学出版社 ,2005.