论“数据结构”课程教学的破与立

时间:2022-02-06 08:07:30

论“数据结构”课程教学的破与立

摘要:分析了计算机学科的核心课程“数据结构”在教学中存在的一些问题,并且探讨了解决方法。根据该门课程的特性,提出破除不合适的惯有教学思维和模式,建立实用的创新教学理念和方法。为了帮助学生更好地掌握该门课程,提出了网状体系、程序教学以及改进的问题教学模式等先进思想及方法,并且结合课程的教学内容进行了阐述和分析。

关键词:数据结构;网状体系;线性思维;程序教学

作者简介:乐千桤(1976-),女,四川南充人,成都理工大学管理科学学院,讲师;范安东(1970-),男,四川西充人,成都理工大学管理科学学院,教授。(四川 成都 610059)

基金项目:本文系成都理工大学中青年教学骨干培养基金(项目编号:JXGG201305)、四川省质量工程项目“数学应用与计算机仿真”省级实验教学示范中心项目(项目编号:13z002-24)的研究成果。

中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)17-0067-02

“数据结构”是计算机学科的核心课程之一,美国的克努特教授在其1968年所著的《计算机程序设计技巧》中第一次系统地阐述了数据结构的逻辑结构、存储结构及相关操作,由此数据结构开始作为一门独立的课程而开设。[1]“数据结构”是高级语言程序设计的后继课程,也是操作系统、编译原理等课程的前驱课程。数据结构贯穿整个程序设计过程,如果缺少数据结构和算法的专业知识和技能培训,很难设计出高水平的应用程序。

“数据结构”课程旨在培养学生掌握程序设计中的数据组织和存储方式以及相关的算法。训练学生分析计算机所处理的数据的特性,合理地组织数据,设计正确有效的算法,编写符合软件工程规范的复杂程序等能力,这些是计算机相关专业学生必须掌握的技能。

一、存在的问题

“数据结构”课程内容丰富,概念多,算法多,模型多,知识点相对分散。学生普遍反映内容多而杂,相似相近的概念不易区分,概念抽象难懂,[2]学了后面,忘了前面。因此帮助学生建立清晰的知识结构脉络是学好这门课程的前提。

该课程是建立在程序设计基础上的,学生编程基础不好,导致不能很好地理解算法,更难用程序实现算法。当前主流的“数据结构”教材偏重于理论教学,所描述的算法与程序实现有一定的距离,学生普遍反映难以实现算法到程序的转换,这也是学习中亟待解决的问题。该课程包含大量的理论知识和原理讲解,内容抽象,理论性强,[3]如果不能很好地组织教学,容易使学生的学习过程枯燥,难以激发学生的学习兴趣,从而影响教学效果。

因此我们在遵循“数据结构”课程教学规律、学习认知规律的基础上,提出破除教学过程中的不合适的模式和方法,建立创新的有效的教学思维和方法。

二、教学理念和方法的改进

1.破“线性思维”,立“网状体系”

“数据结构”课程的主要内容包括三大基本结构:线性结构、树形结构和图形结构,基本结构中又包括具体的结构形态,如:堆栈、队列、二叉树、有向图、无向图、完全图等,概念多,分类也复杂。在当前的教学中通常是沿着三大基本结构这条主线,依次讲述每种具体结构的定义、实现与应用。这种线性的教学方式,容易造成学生孤立地学习各种结构,思维停留在分散的点上,不能融会贯通。

因此,提倡在教学过程中破除“线性思维”,应当分析各种结构的关系脉络,建立各种结构的“网状关系”。例如以线性结构为出发点,通过对基本线性结构的限制引出堆栈和队列,从线性结构的不同扩展方式引出多维数组、广义表以及树形结构和图形结构,再根据各种结构的约束条件,引出有向图、完全图等具体的结构形态,如图1所示。这样有助于学生把各种结构衔接起来,帮助学生把握整个课程的内容体系,跳出零乱分散的知识点,站在把握全局的高度来看待和组织知识点,如此才会有“会当凌绝顶,一览众山小”的感觉。打破线性的学习思维,建立网状的知识体系,在“数据结构”的学习中至关重要。

2.破“重算法略程序”,立“重程序验算法”

当前“数据结构”课程的教材一般呈现的是独立的算法模块,与能解决实际问题的程序代码有一定的差距,通常教师在教学中重视的是算法的思想,认为学生只要理解了算法、掌握了算法过程就算完成了“数据结构”的教学任务,至于算法的编程是程序设计课程的任务,从而忽略了算法到程序的转换。殊不知“数据结构”课程旨在提高学生的编程能力,是程序设计课程的延伸。程序设计课程学习基本的语法,“数据结构”课程是指导学生如何运用基本语法编写能解决实际问题的程序,指导学生分析问题,设计“数据结构”和算法,最终以程序的方式来解决问题,通过程序的运行结果来验证算法。所以要打破重视算法、忽略程序的教学思维,强调编写程序来实现算法,验证算法。

鉴于有的学生编程基础不好,理解了算法也难以用程序实现算法,可以通过以下三个方面对此进行改善:

(1)语法知识点的复习。首先对某一部分算法所涉及的编程语言的语法,应当帮助学生提前复习,例如讲解链表时就要对结构体、指针等内容进行复习。讲解堆栈时,就要对递归程序的编程进行复习。

(2)伪代码到高级程序语言的转换。当前主流的“数据结构”教材,通常采用伪代码来描述算法。教师可以根据选用的编程语言,把常用的伪代码到程序的转换方法总结出来,供学生在编写程序时参考。例如伪代码描述的swap(x,y),以写出详细的C语言实现过程:Swap (int &a,int &b) {int temp; temp=a;a=b;a=temp ;},学生在遇到类似伪代码就可以直接使用这段C语言程序进行替代。

(3)完整的程序构建。教学中不能只讲解单独的程序模块,还要展示完整的程序,指导学生完成整个程序的调试。例如在讲堆栈的应用部分,要引导学生把书上的算法片段、基本的堆栈操作、入栈出栈等编写成独立的子函数,然后在主程序中用头文件的方式引入基本的堆栈操作代码。在调用子函数的过程中,特别强调不同的参数传递方式对程序结构的影响,分析引用传递、值传递和指针传递的差异。

通过以上方式加强学生的程序设计能力,克服编程能力差对“数据结构”学习的影响。通过完整的程序实现,来验证算法的正确性以及效率。

3.破“受问者”,立“提问者”

师者,传道授业解惑也,解惑即是为学生答疑解困。现在提倡基于问题的教学方式,通常是由教师根据授课内容提出问题引导学生回答,这在一定程度上能激发学生的兴趣,增强师生互动,引导学生在解决问题的过程中学习知识。然而在以问题为中心的教学方法中,引导学生回答问题只是一个方面,更重要的是鼓励学生发现问题,大胆质疑已有的观点和结论,发现一个有意义的问题胜过解决一个问题,这是学生创造力的体现。围绕学生发现的问题,展开讨论,分析解决问题,这是一个主动学习构建的过程。所以要破除让学生接受提问的方式,而是根据教学内容设计教学情景,引导学生积极思考,勇于质疑,发现问题,提出问题。

例如在讲解快速排序时,通常选择第一个元素作为交换枢纽,那么教师在讲解完排序的基本思想后,要引导学生对枢纽位置的选择提出质疑,这就需要教师设计出极端的待排序列,当排序效率偏离预期,学生自然会对枢纽位置的选择提出疑问,从而进一步发现位置的选择对算法效率的影响。由此引导学生利用已有知识,主动探求知识,构建新知识,从而取得良好的教学效果。

三、结论

本文针对“数据结构”教学过程中存在的不合适的惯有教学思维和方法进行了分析,提出建立网状体系、重视程序设计以及新的问题教学理念和方法。教学实践证明,通过上述改进的教学方法,提高了学生的学习兴趣,并且有助于学生更好更快地掌握教学内容。在今后的教学研究中,应根据所提出的教学方法,结合“数据结构”课程的内容,设计合理的教学情境,让新的教学理念得到进一步的实现和执行。

参考文献:

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

[2]杨格兰.数据结构课程教学方法探讨[J].中国电力教育,2012,(6):71-72.

[3]任雪萍,王立波,赵葆华.融入 PIC-CDIO 理念的“数据结构”课程教学改革[J].计算机教育,2012,(12):29-32.

上一篇:基于区域经济的高职模具人才培养方案研究 下一篇:论互动平台的建设与完善对精品课程群建设质量...