曹妍 陈燕 盈艳 屈莉莉
摘要:为实现我校计算机相关专业的人才培养目标,对数据结构课程教学中存在的实际问题进行了认真分析,结合我校目前人才培养特征,提出了一种淡化细节注重算法思想和实践环节的启发式创新型教学模式。
关键词:数据结构;教学模式;先修课驱动;算法思想
中图分类号:G642 文献标志码:A 文章编号:1674-9324(2016)04-0125-02
数据结构课程作为计算机相关专业必不可少的一门基础课程,以其内容抽象、算法多且不易理解的特点成为学生难学、难懂的课程之一。尽管如此,学生们也应该认真学习,该课程的学习效果不仅关系到后续课程的学习,而且也关系到信息系统设计开发水平的提高和专业素质的培养。数据结构课程的教学目标主要是培养学生具备能根据实际问题有效地组织、存储数据,并能正确设计处理数据的算法,因此,学好该门课程对于提高学生的理论认知水平和实践动手能力有着极其重要的提高作用。但是由于学生实践能力薄弱,而且数据结构课程内容比较抽象以及动态性强,传统的教学模式很难使学生很好地掌握课程的主要学习内容,从而使学生失去了学习兴趣,造成教学效果不太理想。所以,对数据结构课程教学模式进行改革研究,以提高教学质量是及其重要且必要的。目前,有很多研究學者进行了数据结构教学模式的改革研究。例如,参考文献[1]中提出了一种基于3C3R模型的数据结构课程教学模式构建方法,布辉[2]等人也提出了一种针对数据结构的研究性学习教学模式。
一、“数据结构”课程教学过程中存在的主要问题
1.先修课影响数据结构的学习。目前,大部分学校的数据结构课程都是采用C语言进行算法描述,“数据结构”课程的学习必须在熟练掌握基本的C语言知识,深入理解数组、函数、指针和结构体等基础之上,并通过编程实现或自定义一些更加复杂的数据结构和算法,才能对数据结构中的算法有更好的理解,而C语言这部分的学习内容又恰是学生的薄弱环节,在教学中我们发现如果学生对C语言掌握不够充分将直接影响后续数据结构课程的学习。
2.数据结构内容抽象,难以理解。“数据结构”课程中通常采用抽象数据类型来表示数据的逻辑结构,采用伪代码进行描述的算法,这会使学生更加难以理解。当面对一些实际问题时,学生很难将现实问题对应到数据的逻辑结构,更加找不到解决问题相应的算法,以致编写不出程序代码,因此学生的学习兴趣就会明显降低。
3.课堂之上很难演示算法的执行过程。“数据结构”课程基本上采用的是多媒体教学方式,虽然此方式方便、清晰,但由于本课程涉及大量的概念、抽象数据类型以及算法,理论性强又较为抽象,因此数据结构的动态变化,特别是算法的执行过程就很难在课堂上充分演示,学生也就难以理解数据之间的这种复杂关系。学生即使在课上听懂了,课后也仍有可能无法及时上机进行实际操作,从而导致学生难以消化吸收教师讲授的知识。
4.实际动手能力薄弱。在数据结构实验课上,很多学生即使已经掌握了一些算法的基本思想,也往往不知道如何将算法的伪代码转换成计算机能执行的代码,以至于有些学生把教材中类似C伪代码直接当成C语言语句编写。所以,实践环节中很多学生的程序都无法调试通过,久而久之便对该课程失去了兴趣。
二、教学模式改革的主要措施
1.以C语言课程设计为桥梁的先修课驱动。C语言是数据结构课程的先修课,一般分在两个学年或两个学期授课,由于两门课的授课教师可能不同,导致授课内容的不连贯,加之C语言的指针、链表、结构体、数据类型等内容相对较难,而且一般是临近期末时讲授这些内容,授课时间短,上机实践的机会较少,这对于刚接触高级程序设计语言的学生来讲,理解和掌握其中的原理比较困难。因此,充分利用先修课《C语言课程设计》将C语言逐渐过渡并融合到数据结构课程[3]就显得尤为重要了。
针对这种实际问题,我们以《C语言课程设计》作为连接C语言与数据结构的桥梁,将传统教学中忽略的结构体、指针、链表、新数据类型的定义等作为《C语言课程设计》教授和实践的重点,采用《数据结构》中最简单的线性表的基本操作为例,引导学生深入学习C语言,让学生真正能够学会用计算机的思维方法去解决生活中简单的实际问题;将C语言与数据结构两门课逐步过渡到融合,真正保证新教学模式的落实。
以《C语言课程设计》将两门课程进行结合的教学模式,能使学生能很好的将计算机理论与编程技能相给合,为学生真正掌握计算机这种高效率的时代工具打下坚实的基础,有利于教学改革和教育创新的人才培养,实现可持续性发展教学研究的宗旨。
2.淡化细节注重算法思想。算法是数据结构课程中的核心部分。通常数据结构教材的大量篇幅都主要用来描述算法,目前许多教材都是基于类C语言的伪代码描述的,如果教师教学过程中一味地去解释算法,学生也只能被动的去理解程序的语句和函数,这不但禁锢了学生的想象空间,而且也只是表面懂了算法程序,其实并没有真正的理解算法的思想。而算法设计本身就是一种创造性的学习,最有利于学生的创新能力培养,因此,在教学过程中,在讲述算法时,首先要淡化细节,强调说明该算法能解决什么问题,然后用自然语言或配合动态演示描述算法思路,使学生对抽象模型及算法思想有直观的理解。例如,两个递增有序表La、Lb归并为一个有序表Lc的算法,用自然语言描述算法思想如下:(1)从La、Lb表中各取一个元素;(2)将较小的元素插入到Lc中,Lc表指针加1,且较小的元素所在的表指针加1;(3)若La、Lb表都有元素,转(1);(4)将未结束的La或Lb表连接到Lc表之后。在描述中,已经淡化了细节,如“将未结束的La或Lb表接到Lc表后面”,这样既能使学生容易理解,也降低了由于学生C语言知识不牢而影响算法掌握的难度,同时也给学生留下足够的发挥空间。比如,学生会思考怎样才能把La或Lb表连接到Lc表后面呢?这样就培养了学生良好的解决实际问题的习惯。
算法思想是真正掌握算法的前提,编程能力强一些的学生可能并不一定按照书上的算法编写,但也同样可以实现相同的功能,这就是一种创造性的学习过程。
3.算法仿真实现。在理解算法思想的基础上,再将各步骤转换成类C语言描述的具体算法。由于数据结构课程本身的特点,不但涉及到数据的复杂的逻辑结构,还涉及其在计算机中的存储结构,对在数据进行操作的过程中,数据的结构动态变化有时是较复杂的,如何能让学生看到“算法执行”时指针的变化及数据结构的动态变化,是理解类C语言描述算法的最直接、最有效的方法,而这其中的关键就是算法语句对应数据结构动态变化的动画演示。这种算法仿真实现模式对算法的理解和掌握能起到事半功倍的效果。
4.启发式的实践环节。数据结构课程的难点在于学生听得懂、看得明白,但当动手设计算法解决实际应用问题时会感到无从下手。该课程一般在本科低年级开设,对于仅学过一门高级程序设计语言的学生,理解和掌握其中的原理比较困难。针对这些问题,注重课程实践环节的启发式学习是提高学生兴趣、提高课程教学效果的主要措施。文献[4]中所提出的以实践教学来深化理论教学的教学模式正是这种注重实践环节的体现。
课程的每一部分实践内容可以分成几步来进行,让学生循序渐进地来完成算法的学习及编写:(1)教师可以先给出完整算法,让学生根据算法描述构造出算法所需的数据结构,这样学生可以很快地看到运行结果,以结果吸引学生并增强其对实践内容的兴趣。(2)教师可以先给出一部分算法,对于缺少的部分可以让学生按照要求来填充。缺少的部分可以是一部分算法语句,也可以是一个功能性的函数。(3)教师可以结合生活中的一些实际问题,让学生根据自己的理解编写出一个完整的算法。但是,实践环节的启发式教学的设计问题是需要解决的关键问题,在学生对教学内容还没有完全掌握,且在编程也有困难时,应注重实践的启发与引导。比如先给出已编好的算法,让学生编译运行,查看结果,使学生能产生兴趣并启发学生去思考,引导学生去实践,在实践中学好知识,掌握技能,提高素质。
三、结语
本文根据我校计算机相关专业的教学目标及人才培养计划,提出了针对数据结构课程的教学模式的创新性改革,与以往的教学模式相比淡化了算法的细节,注重算法思想的理解,并采用启发式的实践指导方法,让学生对数据结构课程产生兴趣,深入理解各个章节的学习内容,并不断提高学生的自主学习和创新能力,提升教学效果为今后其他专业课程的学习打下坚实的基础。
参考文献:
[1]殷宝媛,于纪明,李晓东.基于3C3R模型的数据结构课程教学模式的构建[J].计算机教育,2014,(8).
[2]布輝,刘冉.研究性学习教学模式在数据结构课程中的应用[J].电脑知识与技术,2011,(3).
[3]伍艳莲,刘金定,黄芬.知识融合教学模式在“数据结构”教学中的应用[J].中国农业教育,2011,(2).
[4]王树锋,曹宝香.以实验教学深化理论教学的数据结构教学新模式[J].计算机教育,2014,(10).