论文部分内容阅读
《数据结构》是计算机专业的一门重要专业基础课,更是一门理论与工程实践密切相关的综合性课程,其研究思想和研究方法在计算机科学的许多深度研究领域具有广泛的应用。因此本课程为学生今后从事相关技术工作提供了坚实的理论基础,同时,通过算法设计和上机实践训练,培养学生的数据抽象和程序设计能力,提高软件设计水平。因此,在教学中要特别重视实践环节。
一、教学中存在的问题
本课程的先修课程是C语言程序设计,C语言中的难点,如结构体、指针、函数等内容,是数据结构课程的重要基础。课程中数据的存储结构使用结构体定义;算法用类C语言描述、以函数形式出现;函数中形式参数的类型大都是结构体指针。学生在学习时会普遍感到内容理论性强、抽象度高,理解比较困难。
另外,在教学中会安排若干个上机实践题,其目的是让学生通过上机练习进一步理解基本知识,提高应用算法解决实际问题的能力。但实际上,对于大多数学生来说,将类C语言描述的算法转换成完整无错的可以运行的源程序,是一件比较困难的事情。如要根据实际问题选择存储结构和设计算法更是无从下手。几经挫折,学生就会对课程的学习失去兴趣和信心,从而严重影响了教学效果。
二、实践教学方案的设计
针对以上情况,根据高职高专学生的特点,我们在本课程中采用"扎实基础、消化范例、拓展训练"的实践教学方案,通过逐步引导的方式对学生进行程序设计的训练,提高学生的学习兴趣和学习效率。
(一)原理介绍引入实例,扎实基础知识
数据结构的算法都是以函数形式出现,独立而抽象,学生不易理解。所以在进行理论教学时,要将比较抽象的存储结构具体化,对基本算法进行实例化,写出对应算法的主调函数,详细讲解算法和主调函数之间的关系,实参和形参的传递方式等。在课程初期,多开展课堂讨论,一方面复习C语言中的相关知识和加深理解,另一方面使学生对存储结构有明确的概念,知道算法是如何使用的,为上机实践打下基础。
(二)消化范例,巩固基本理论
编程能力主要由阅读分析源程序的能力,编写程序实现算法的能力,程序的调试与排错能力构成。其中,阅读分析源程序的能力是编程能力的基础。为此,在每一个知识模块结束时,引进一个实例,并提供完整的源程序作为范例。
例如,在线性表的链式存储一节里,提供的范例为:有一用n根木桩围成的农场,为了实施退耕还林政策,农场主采用如下方法缩减农场的范围:从第1根木桩开始数数,数到第m根将其拔除,然后从拔除的下一根木桩开始数数,数到第m根木桩又拔除,……,如此反复到只剩n/2根为止。要求打印出被拔木桩的顺序。该问题采用单向循环链表作存储结构,源程序中包含了单链表的建立、插入、删除等基本算法。
同时,范例源程序中的一些基本模块可以重复使用。例如建立单链表的算法,图的生成算法、栈和队列的基本运算等。这将大大地减轻学生的重复劳动,使他们把精力集中放在上机题目所要求的算法设计和程序的调试上,提高程序的成功率,激发学习热情。
(三)拓展訓练,提高实践能力
在充分理解基本理论、消化范例的基础上,布置相应的上机实践题目,进行拓展训练。由学生从确定存储结构、算法设计、编码到上机运行程序,独立完成一个应用性的题目,进一步提高将算法转化成程序代码的能力和调试程序的水平,这是训练学生算法应用和设计能力的一个过程。
例1,以上述的单向循环链表应用范例为基础,可对学生进行纵向拓展和横向拓展训练。纵向拓展训练题:求约瑟夫环的出列顺序。该问题的描述是:设n个人按顺时针方向围坐一圈,每人持有一个密码,任选一正整数m,从第一个人开始按顺时针方向自1开始顺序报数,报到m的人出列,其密码作为新的m值,从他的下一个人开始报数,如此下去,直至所有人全部出列为止。横向拓展训练题:设计超市密码存储箱系统。即模拟顾客购物时使用密码箱的流程:"投币"——"找到空箱子,生成密码"——"打印密码,开箱,存包,购物"——"购物结束"——"输入密码,开箱,取包"。这两个题目都以链表作存储结构,均使用了链表的建立、插入、删除、输出等基本算法。
例2,在"栈及其应用"这一节中,提供的范例为:利用栈的基本运算检验表达式中圆括号是否匹配。拓展训练题1:检验表达式中三种括号(圆括号、方括号和大括号)是否匹配;拓展训练题2:检验某C源程序文件中括号是否匹配。
三、结语
该方案比较好的做到了"课堂、实验、课外"相结合,理论教学与实验教学相结合,课内教学与课外自学相结合,大大提高了教学效率。也符合由表及里,由浅入深,从抽象到具体的认知规律,对于要在有限的实验课时里达到对学生进行复杂程序设计的训练目的是切实可行的,教学效果良好。
参考文献:
[1]陈澜,顾翔.数据结构实践环节教学研究[J].电脑知识与技术,2007,(18).
[2]陈宇文.注重源程序在数据结构课程中的重要性[J].高教论坛,2004,(1).
[3]陈雁.数据结构(第二版)[M].北京:高等教育出版社,2004.
一、教学中存在的问题
本课程的先修课程是C语言程序设计,C语言中的难点,如结构体、指针、函数等内容,是数据结构课程的重要基础。课程中数据的存储结构使用结构体定义;算法用类C语言描述、以函数形式出现;函数中形式参数的类型大都是结构体指针。学生在学习时会普遍感到内容理论性强、抽象度高,理解比较困难。
另外,在教学中会安排若干个上机实践题,其目的是让学生通过上机练习进一步理解基本知识,提高应用算法解决实际问题的能力。但实际上,对于大多数学生来说,将类C语言描述的算法转换成完整无错的可以运行的源程序,是一件比较困难的事情。如要根据实际问题选择存储结构和设计算法更是无从下手。几经挫折,学生就会对课程的学习失去兴趣和信心,从而严重影响了教学效果。
二、实践教学方案的设计
针对以上情况,根据高职高专学生的特点,我们在本课程中采用"扎实基础、消化范例、拓展训练"的实践教学方案,通过逐步引导的方式对学生进行程序设计的训练,提高学生的学习兴趣和学习效率。
(一)原理介绍引入实例,扎实基础知识
数据结构的算法都是以函数形式出现,独立而抽象,学生不易理解。所以在进行理论教学时,要将比较抽象的存储结构具体化,对基本算法进行实例化,写出对应算法的主调函数,详细讲解算法和主调函数之间的关系,实参和形参的传递方式等。在课程初期,多开展课堂讨论,一方面复习C语言中的相关知识和加深理解,另一方面使学生对存储结构有明确的概念,知道算法是如何使用的,为上机实践打下基础。
(二)消化范例,巩固基本理论
编程能力主要由阅读分析源程序的能力,编写程序实现算法的能力,程序的调试与排错能力构成。其中,阅读分析源程序的能力是编程能力的基础。为此,在每一个知识模块结束时,引进一个实例,并提供完整的源程序作为范例。
例如,在线性表的链式存储一节里,提供的范例为:有一用n根木桩围成的农场,为了实施退耕还林政策,农场主采用如下方法缩减农场的范围:从第1根木桩开始数数,数到第m根将其拔除,然后从拔除的下一根木桩开始数数,数到第m根木桩又拔除,……,如此反复到只剩n/2根为止。要求打印出被拔木桩的顺序。该问题采用单向循环链表作存储结构,源程序中包含了单链表的建立、插入、删除等基本算法。
同时,范例源程序中的一些基本模块可以重复使用。例如建立单链表的算法,图的生成算法、栈和队列的基本运算等。这将大大地减轻学生的重复劳动,使他们把精力集中放在上机题目所要求的算法设计和程序的调试上,提高程序的成功率,激发学习热情。
(三)拓展訓练,提高实践能力
在充分理解基本理论、消化范例的基础上,布置相应的上机实践题目,进行拓展训练。由学生从确定存储结构、算法设计、编码到上机运行程序,独立完成一个应用性的题目,进一步提高将算法转化成程序代码的能力和调试程序的水平,这是训练学生算法应用和设计能力的一个过程。
例1,以上述的单向循环链表应用范例为基础,可对学生进行纵向拓展和横向拓展训练。纵向拓展训练题:求约瑟夫环的出列顺序。该问题的描述是:设n个人按顺时针方向围坐一圈,每人持有一个密码,任选一正整数m,从第一个人开始按顺时针方向自1开始顺序报数,报到m的人出列,其密码作为新的m值,从他的下一个人开始报数,如此下去,直至所有人全部出列为止。横向拓展训练题:设计超市密码存储箱系统。即模拟顾客购物时使用密码箱的流程:"投币"——"找到空箱子,生成密码"——"打印密码,开箱,存包,购物"——"购物结束"——"输入密码,开箱,取包"。这两个题目都以链表作存储结构,均使用了链表的建立、插入、删除、输出等基本算法。
例2,在"栈及其应用"这一节中,提供的范例为:利用栈的基本运算检验表达式中圆括号是否匹配。拓展训练题1:检验表达式中三种括号(圆括号、方括号和大括号)是否匹配;拓展训练题2:检验某C源程序文件中括号是否匹配。
三、结语
该方案比较好的做到了"课堂、实验、课外"相结合,理论教学与实验教学相结合,课内教学与课外自学相结合,大大提高了教学效率。也符合由表及里,由浅入深,从抽象到具体的认知规律,对于要在有限的实验课时里达到对学生进行复杂程序设计的训练目的是切实可行的,教学效果良好。
参考文献:
[1]陈澜,顾翔.数据结构实践环节教学研究[J].电脑知识与技术,2007,(18).
[2]陈宇文.注重源程序在数据结构课程中的重要性[J].高教论坛,2004,(1).
[3]陈雁.数据结构(第二版)[M].北京:高等教育出版社,2004.