王玉国
(通化师范学院计算机学院,吉林通化134002)
数据结构课程是计算机专业的核心课程之一,是本科教学的重中之重[1].它的教学要求一方面是学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析技术.另一方面,本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚、正确易读,符合软件工程规范[2],从数据结构课程的教学要求中可以看出实践教学的重要性.而该课程的传统实践教学环节却存在一些问题,本文针对其存在的问题提出相应的教学改革措施.
(1)实验题目没有体现综合性和应用性.这里的综合性是指实验内容涉及本课程的综合知识或与本课程相关课程知识的实验,实验内容涉及几个章节或几门课程的基本概念、基本理论和基本技能.通过综合性实验,能将所学的多个知识点整合在一个实验题目中,是对学生能力水平的一种较高层次的要求.这里的应用性是指实验内容能解决具体的实际问题,使学生会用学到的知识[3].传统实践教学中,实验题目仅针对某一个问题,体现不出综合性,也没有和具体的应用相结合,体现不出应用性.另外,传统实践教学难以较好地把握实验题目的难易程度,太难的题目大部分学生完成不了,太简单的题目达不到提高学生程序设计能力的目的.
(2)学生对数据结构课程预备知识掌握不牢.程序设计语言课程是数据结构课程的先行课,从实践教学的角度要求学生必须掌握函数、结构体、指针、递归程序设计方法、动态内存分配方法等语言要素.在教学过程中笔者却发现学生修完该课程后,对这些要素理解得不深入,没有进一步形成能力.传统的实践教学没有考虑到这些,直接影响到数据结构课程的实践教学.
(3)学生的程序设计能力不强.学生学习完程序设计语言课后,由于没有做过多少相对大一点的程序设计项目,系统化训练比较少,因此普遍编程能力不强,更谈不上工程能力.而教师往往又高估学生的程序设计能力,认为学生已经具备了足够的编程能力,能自己把算法改写成程序.传统实践教学中没有解决这一矛盾,导致教师指导不够,学生在实践活动中出现力不从心,无从下手的困难局面.
(4)实践教学环节不完整.传统的实践教学过程中采用的是教师布置实验任务,学生完生实验这样简单的模式.教师对学生实验过程及完成情况掌控不够,很多实验没有达到目的.学生也没有对实验认真总结,并且存在抄袭现象.
以上这些问题是普遍存在的,针对这些情况,如何提高这门课程的实践教学效果,是一个值得探讨的问题.笔者结合多年从事数据结构课程的教学经验,提出了针对数据结构课程实践教学的改革思路,并在实际教学中取得了很好的效果.
在数据结构课程实践教学改革中,重新设计了实践教学题目,使实验题目难度适中,具有综合性和应用性.针对学生预备知识掌握不牢和程序设计能力不强的问题,提出了实践教学分三阶段进行的总体实施方案.最后给出了具体的实施方案,形成完整的实践教学环节.
在实践教学题目改革的过程中,充分考虑了实验题目的综合性和应用性.例如“用顺序表管理学生的通讯录”这个题目综合了顺序表、结构体、文件等知识,具有综合性.同时这个题目解决了学生身边的问题,具有应用性.表1给出了改革之后数据结构课程实践教学中选用的典型实验题目.
表1 可选用的典型实验题目
根据学生特点和数据结构课程特点,遵循循序渐进的规律,在教学中把实践教学过程分为三个阶段,分别是预备阶段、模仿阶段和独立完成阶段.其中,预备阶段持续两周时间,模仿阶段持续三周时间,剩下的教学时间都用于独立完成阶段.
(1)预备阶段.预备阶段主要是复习巩固程序设计语言的基本要素,主要包括函数、结构体、指针、递归程序设计方法、动态内存分配方法等,解决学生对数据结构课程预备知识掌握不牢的问题.采用任务驱动的方式进行,将相关题目以任务的形式布置给学生,让学生在课后完成.主要的参考题目如表2所示.
表2 预备阶段参考题目
(2)模仿阶段.在模仿阶段,教师给出解决一个实验问题的框架,预留部分功能让学生去完成,主要是解决学生程序设计能力不强的问题.这个阶段教师要完成一个实验的主体,编写一个解决该实验问题的程序框架,学生要分析掌握这个程序框架,并补充部分功能.要求教师给出的框架结构清晰,易于理解,功能完整,能作为模板来使用.教师要和学生一起分析这个框架,让学生在整体上能够把握.最后学生要把教师预留的功能补充完整,完成实验的后续工作.图1是“用顺序表管理某班级一门课程的成绩”这个问题主体结构的一部分.
图1 顺序表解决问题的框架
其中,在createsqlist函数中完成顺序表的建立功能,runmenu函数以菜单的形式显示对顺序表的主体操作功能.学生分析了这个模板框架后,补充功能,使这个实验完整,同时能解决类似的问题.
(3)独立完成阶段.通过模仿阶段,学生对数据结构实验有了认识,掌握了解决问题的基本方法,程序设计能力有了提高,自然就过渡到独立完成阶段.在独立完成阶段,学生通过独立完成整个实验,可以进一步提高解决问题的能力和编程能力.
在实践教学具体实施过程中,改革了以往简单的实施模式,使教学环节趋于完整.实践教学的具体实施方案步骤有:布置实验任务、指导实验实施、检查实验完成情况、完成实验报告.在实施过程中,将学生分成小组,每个小组设立组长,一个组完成一个实验任务.小组组长整体负责,每个成员都要承担具体任务.
布置实验任务阶段.当相关知识点讲解完成之后,及时布置这部分的实验任务.学生接到实验任务后,要分析该实验要求,确定具体实验题目.
指导实验实施阶段.实验实施阶段要遵循软件工程思想,即分为需求分析、概要设计、详细设计、测试分析等阶段.教师要指导学生有计划地完成实验,解决学生实验过程中遇到的问题.
检查实验完成情况阶段.这个阶段主要是验收学生的实验题目完成情况,一方面检查实验完成的质量情况,另一方面检查是否存在抄袭情况.采用的检查手段是“答辩”.答辩过程由陈述、演示、问答三个环节组成,同样由小组成员分工完成.陈述环节主要是陈述实验所涉及问题的需求和设计情况;演示环节主要是演示程序运行情况;问答环节是一个主要环节,由教师或其它小组同学提问,答辩小组成员来回答.
实验报告阶段.这个阶段需要学生填写本次实验的实验报告.实验报告由实验内容及要求、需求分析、总体设计、详细设计、测试数据和总结六部分构成.实验报告是对实验的总结,有利于加强对知识的理解和提升.
在数据结构课程实践教学中采用这样的方案,不但巩固了知识,提高了能力,同时也培养了学生的创新意识和团队精神.
[1]张铭.北京大学“数据结构与算法”教学设计[J].计算机教育,2008(20):5-9.
[2]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2007:1.
[3]江静.《数据结构》课程综合性实验的实践[J].实验科学与技术,2006(6):64-66.