朱 焕,马文静,孙玉梅
(1.黑龙江八一农垦大学理学院,黑龙江 大庆 163319;2.烟台市第五中学,山东 烟台 264000)
《数据结构》信息与计算科学专业以及计算机应用与技术等专业的核心课程,是《算法设计与分析》《操作系统》《数据库原理》及《软件工程》等课程的主要基础,要令学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。[1]然而,《数据结构》课程的教学要求,决定了这门课程有着较强的抽象性和动态性,学生对于基本知识还能较好理解,但是在用伪代码(例如类C语言)对数据的存储结构和算法进行描述时常会产生畏难心理,尤其是涉及到令学生自己动手编写算法时,学生总会感觉到无从下手,和教学内容不能很好地衔接,并且实践环节不够,学生难以根据实际问题动手设计数据结构及其算法,造成学生动手能力差。[2-3]
鉴于此,在对信息与计算科学专业进行《数据结构》授课时,将研究重点放在改变《数据结构》课程教学模式上,探讨研究式教学模式在《数据结构》课程教学及建设中的应用,强调学生自主发现和体验知识的生成过程,注重理论教学和实践教学的内容整合、专业课教学与素质教育的结合,有效地提高学生的学习积极性,有利于培养学生自主学习、独立思考问题和解决问题的能力。
在教学中增加实际案例,使学生对抽象的理论问题有着形象深入的理解。在每一章引入时,都尽量在日常生活中选取恰当的案例,融入到教学之中。例如在借助于“两个朋友共同租用房屋承担费用”来讲授两栈共享空间;借助于“去理发店照两面相对的镜子时,会出现许多自己的影像”来讲述递归;借助于“发微博时字数有上限”来讲述串的截取;借助于“电文的编码译码”来讲述赫夫曼树;借助于“旅行时选择最合理的线路”来讲述图的最短路径等。日常生活中这样的小例子比比皆是,在课堂上引入这些帮助学生理解的例子,提高了学生的学习兴趣,并且帮助学生对所学数据类型进行理解,使课堂讲授内容变得不那么枯燥,取得了良好的教学效果。
改变实验课模式,提升学生动手解决实际问题的能力。《数据结构》上机实验的代码编写起来较为烦琐并且抽象,与《C语言》相比有一定的难度,学生单独完成存在一定困难,并且实验内容过于单调。因此,在授课时做了相应的调整。例如将学生3人一组分为15组,每次做实验时均以组为单位完成。在进行上机实验之前,教师先选择涵盖不同难度层次的多个上机题目,由学生决定此次实验的难度,并由学生自主选择实验题目。如在线性表处进行上机实验时,选择了建立线性表、输出线性表;对线性表进行插入、删除、查找等基本操作;一元多项式的相加等难度不同的题目由学生以组为单位自主选择。在栈的应用处进行上机实验时,选择了数值转换、括号匹配,行编辑程序等问题由学生自主选择,并且允许学生选择其他的题目,也允许不同组学生在做同一问题时的难易侧重有所不同。
事实证明,这样的实验改革效果非常好。往年学生单独做实验时,常常不能保证在上机课时完成实验,而且出现的问题非常多。而实行新的实验模式之后,每组在完成实验时都可以商议进行,相互之间取长补短,综合思路,实验能力大大加强。由于给了学生充分自主性去选题,学生的实验兴趣也大大加强,并且80%的同学都选择了中等以上难度的实验,且完成情况非常好,程序运行出来无误,容错性高,界面美观。
本课程一直采用清华大学出版社严蔚敏老师编写的《数据结构(C语言版)》作为教材。这是一本非常经典的教学用书,但是书后没有习题。鉴于此,上课时改变了留作业的方式,告诉学生,这门课程老师不会再给找复习资料,考试的时候也没有复习范围,但是还是要留作业。作业的留法,是每章讲完之后,都会要求学生写题型的数量。例如栈这部分,要写5道判断题、5道填空题、1道算法设计题、1道算法分析题等。但是什么样的内容作为自己的作业,完全由学生来选择,可以去图书馆查阅资料,也可以自己去买相应的教学参考书,也可以在网上找复习题。允许同学间有相同的题上交,但是上交的题重复率不许超过1/3,否则作业无效。为了防止学生直接将习题抄到作业上应付了事,会在每一节课留出10分钟时间,随机抽取学生上台来讲述自己所做的内容。如果作业做对了,但是讲述不出来,作业一样视为无效。这样一来,更加“迫使”学生自主去学习,要交作业,必须自己查阅资料完成,这样也就养成了学生独立思考问题、解决问题的能力。
在讲述第六章“树”时,为了提高学生解决实际问题的能力,选取了一个综合问题,即要建立一棵家族树,并对家族树进行相关操作。为了提高学生的学习兴趣,以《红楼梦》贾府中贾氏成员的家族关系为例,要学生完成此综合设计。
具体实施步骤为:将所要完成的设计分为15个子问题,以平时上机时学生分组为单位,每组选择一个问题,分别完成,最后汇总,完成此综合问题。其中,第一组要决定这棵家族树的存储方式、结点类型以及抽象数据类型定义;第15组要完成所有子问题在主函数中的链接,并设计主函数;其他各组各自完成选择的问题,调试无误后均交与第15组最后进行汇总。
学生对解决此问题非常有热情也有兴趣。在上机解决问题之前,教师安排了一次教学观摩课,要求每一组均把流程图绘制出来,并选出代表上台向大家讲解各组的思路,出现问题时现场解答。每一组学生准备都较为充分,但是在设计算法时或多或少都出现了一些问题。通过本节课,指出了学生中存在的共性问题,并及时给予修改,教学效果良好。
实践证明,研究性教学模式重视学生的自主活动,提供并创造了学生主动探究、独立操作、自由表达的“土壤”以及良好的氛围,学生在其中创新和实践,建立了一种主动发现、独立思考的积极的学习方式,实现了学习方式的转变。[4-5]因此,结合人才培养实际和教学现状,在《数据结构》课程中引入研究性教学模式,能提高学生的学习兴趣,有效引导学生主动投入到研究性学习活动中给学生提供开放的学习空间,有利于发现和开发学生多方面的智慧潜能。
[1]李克清.《数据结构》课程中的案例教学初探[J].长江大学学报:自然科学版,2004,(12):135-136.
[2]庞晓琼.案例驱动的数据结构课程设计教学改革实践[J].计算机教育,2009,(1):53-55.
[3]马晓波,陈翠茹.《数据结构》实践教学改革探讨[J].内蒙古农业大学学报:社会科学版,2010,(2):171-172.
[4]陈晓霞.数据结构教学中的案例巧用[J].计算机教育,2010,(24):61-64.
[5]汤亚玲,秦锋.数据结构课程的教学引导策略探讨[J].安徽工业大学学报:社会科学版,2011,(5):119-120.