数据结构课程的实验教学探讨

时间:2022-07-30 03:53:38

数据结构课程的实验教学探讨

摘要 上机实验是数据结构课程教学中很重要的一个环节,其教学效果对整个课程的教学质量有直接影响。然而,获取良好的实践教学效果是不容易的,在分析各方面因素的基础上,以课内上机为例,从学时分配、内容设置、任务难度和验收方式四个方面给出了一些建议以供探讨。

关键词 数据结构 实践教学 课内上机

中图分类号:G642 文献标识码:A

作为计算机专业学生的一门专业核心课程,数据结构是计算机程序设计的重要理论技术基础。①在实际的教学过程中,学生常常反映数据结构课程难度偏大,而且内容枯燥。从教学内容上来讲,数据结构比较难在于它包含了很多抽象的概念、算法。

数据结构的教学形式包含理论教学和实践教学两部分。同C语言程序设计等实践性很强的课程②类似,数据结构也需要学生在掌握有关概念的基础上进行上机编程训练。理论是实践的基础,而实践帮助学生更好地理解课堂上所学到的知识。要提高本门课程的教学质量,理论教学和实践教学两个环节都必须做好。当然,要达到事先制定的教学目标并不容易。比如,在理论教学上,教师需要丰富教学内容而不仅仅是讲解教材上的知识点,如有教师提出的案例教学。③同时,要想方设法使课堂教学过程生动有趣、讲授语言浅显易懂。下面本文将以课内上机为例,从如何增强教学效果谈几点感受,以供探讨。

1 同步理论教学,合理分配上机学时

在一般情况下,课内上机内容应与理论教学内容同步。然而,课内上机的学时是有限的,比如20学时。如果一次上机为两学时,那么平均一章内容只能安排一次上机。以严蔚敏C语言版的《数据结构》教材为例,最先学习的内容是线性结构,可以安排单链表的创建和插入、删除等作为上机实验内容。尽管这是第一个上机实验,但在教学过程中学生往往反映这些内容并不简单。原因是多数学生对C语言中结构体和指针的使用并不熟练,因此需要花一定的时间来复习这方面内容,所以本次实验可以安排两次上机。而后续的栈和队列等内容相对而言较为容易,可只安排一次上机。由于上机学时有限,实验内容又受到理论教学进度的制约,为保证实验内容在规定的学时内全部完成,对课内上机学时的合理分配就显得尤为重要了。

2 丰富上机内容,提高学生的学习积极性

学习的积极性对课程学习来说其重要性不言而喻。很多学生在学习理论知识之后,对上机编程还是有新鲜感的,但是不少学生会因为编程难度的逐步增大而逐渐失去兴趣,最终选择放弃。要让学生保持对上机实验的热情,教师需要在上机内容的安排上有新意。通常,与教材配套的习题集中有不少的上机实习题(如严蔚敏版《数据结构题集》)④可做参考。为提高学生的学习兴趣,可以提供一些其他的题目。比如,在学习数组中的三元组时,使用Movielens提供的用户评分数据,Movielens是较早出现的电影推荐评分系统,它提供了很多测试数据集。这些数据经过处理后很容易转换为三元组的存储形式,而且具有一定的实际意义,相比为检验程序而随意制造的测试数据,完成对这些评分数据的处理更能够吸引学生的注意力,从而提高他们的学习兴趣。当然,如何在教学中让学生感受到乐趣,从而保持较高的学习积极性是一个值得研究的问题。

3 把握任务难度,提高学生编程能力

在数据结构的理论教学内容中包含了很多复杂而且抽象的概念、算法,通过课堂上的认真学习,多数学生还是能够理解的。但是很多学生并不能真正掌握并做到学以致用。在一定程度上,这也是不少动手能力不强的学生却能在理论考试中考出好成绩的原因。因此,对每一个在课堂上讲解的重要知识点,不管是简单的结构类型定义还是复杂的算法,都要求学生编程实现,让学生在上机实验中去体会并掌握所学的理论知识。为了降低任务难度,可以给学生提供已经写好框架的程序,让学生在合适的位置添加相应的功能。比如,对于树结构,可以在源程序中写好二叉树的创建,然后要求学生补充完成二叉树的遍历、层次计算或左右孩子查找等其他操作。这样做的另一个好处是避免学生从网络或从其它途径直接寻找源代码以应付了事。由于程序是统一提供的,对学生来说无法自行发挥,即使找到合乎要求的部分代码也要放到源程序中去调试运行。然而,这样的任务安排也会对一部分编程能力强的学生产生约束,使他们有可能提出的更好设计方案和编程创意被抑制。解决这一矛盾的方法之一是布置多级任务。对基本任务要求学生统一完成,而高级任务可以让学生自行发挥。在采取这样的多级任务方式之后,一方面可以让编程基础相对薄弱的学生得到训练,另一方面能够为编程能力较强的学生提供自由发挥的空间,以满足不同层次学生的需求。

编程是实践数据结构必须具备的能力。但是在教学中发现,很多学生在数据结构课程的实践过程中不是没有想法,而是不知道如何通过编程去实现。由于数据结构是一门重要的专业基础课,一般学生在修完某种编程语言(如C/C++)后就开始学习此课程了,除少数对编程有浓厚兴趣、已经具有一定编程能力的学生外,多数学生在此阶段的编程能力还不是很强,这也就往往使得他们花费在调试程序上的时间远多于对程序的设计和编写。因此,上机任务的难度需根据学生的实际水平适时调整,让学生的编程能力得到锻炼和增强,以便为综合性设计打好基础。

4 完善验收方式,加强监督和管理

课内上机实验的考查是个很棘手的问题,一般实践课程的常规考查方法是以答辩的形式进行。学生在规定时间内讲解并运行程序,教师通过提问来判断学生的完成情况。这种方法还是比较有效的,能在有限的时间内了解学生的学习情况,特别是提问环节能够凸显很多问题。然而,课堂时间有限,有时一个班甚至多个班被安排同时上机,而且采用这种答辩的方式在课内完成对所有学生的检查是很难实现的。如果只安排一次最终的测试,部分自觉性不强的学生可能不会一直认真学习,仅仅在最后阶段突击,显然这也没有达到教学目的。因此,平时对课内上机实验不仅要加强监督和管理,验收方式也需灵活多样。举例来说,若课内上机一共安排10次,可根据教学内容分阶段地安排3次答辩形式的考查,如对链表、二叉树和图等重要的教学内容。这3次考查是每个学生都要完成的,每次指定一个最后期限,并且在此之前的任何上机时间也都可以验收。这样,既解决了课内上机的验收时间不够用的问题,也能掌握所有学生的学习情况。

5 结语

综上所述,由于数据结构是一门理论性和实践性都很强的计算机专业核心课程,如何在教学中使得每一堂上机实验课都有意义,而不流于形式是不容易的。当然不论采用何种方式,最终目的还是希望学生能够通过实验加深对理论知识的理解,在实践中增强专业技能,并真正做到学以致用。

注释

① 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2007:I.

② 谭浩强.C语言程序设计(第二版)[M].北京:清华大学出版社,1999:X.

③ 李克清.《数据结构》课程中的案例教学初探[J].长江大学学报:自然科学版,2004.1(4):135-136.

④ 严蔚敏,吴伟民,米宁.数据结构题集(C语言版)[M].北京:清华大学出版社,2007:72-165.

上一篇:高职物理化学课程改革的探索 下一篇:基于工作过程的工业分析与检验专业实训教学改...