论文部分内容阅读
摘要:本文根据高等职业院校学生特点,从提高学生的动手能力出发,结合教学实践的经验,讨论基于C语言描述的数据结构课程的教学思考。
关键词:数据结构;C语言
一、“数据结构”课程在教学中的问题分析
“数据结构”课程是计算机类专业的专业基础课,主要讨论常用各种数据的逻辑结构、存储结构以及有关算法,通过教学,使学生能根据实际应用的需要,对数据进行逻辑结构分析、存储和处理,进而编制出高效率的程序。该课程不仅内容丰富,学习量大,而且具有强逻辑性和高抽象性。算法复杂多变,高职学生在学习过程中经常感到困难,甚至产生厌学情绪,我们从教学过程中分析主要是以下几个原因:
1.课程难度大,学生难以适应
“数据结构”课程是一门逻辑性和实践性都很强的课程,在以往教学实践中,由于课程内容高度抽象、概念繁多、算法复杂,教学难度大、学生畏难情绪严重、体会不出“学以致用”的优势,导致学生学习兴趣不高、动手实践能力差、学习质量难提升,这与高职院校突出技能教学的要求不相适应。
2、先导课程基础较薄弱
“数据结构”课程的先决课程C语言知识掌握不牢,大部分学生对指针类知识点不熟练,学习复杂算法时有困难。
3.学生在学习过程中处于被动地位,不能发挥高职学生所具有的知识构建能力的优势
传统教学模式是教师填鸭式的将知识满堂灌,学生被动听,这显然不适于现代高职学生所具有的知识构建的特点。即学生不能在问题解决过程中进行学习,也不能将当前学习内容与自己已有的知识经验联系起来,久而久之,学生因不能积极参与教学活动和及时建构知识,影响了学习效果。
二、 “数据结构”课程的教学改革
若要对该课程进行教学改革,必须通过分析當前高职学校计算机类专业群的工作岗位、人才的职业能力、工作任务和工作内容,确定典型工作任务,建立基于工作过程的课程体系。在课程体系中,确定“数据结构”课程在各专业培养计划中的支撑作用,据此进行教学内容、教学模式和教学方法的设计,以追求更好的教学效果。
1、讲好第一堂课
“数据结构”虽然包含了较多的理论内容,但具有实践应用的特点。俗话说,“兴趣是最好的老师”。因此在进行数据结构课的第一次授课中,并不急于介绍理论,而是强调应用,通过介绍数据结构在实际中的应用来激发学生的学习兴趣。如图书馆的书目检索系统,如何组织图书的登录号、书名、分类号等数据,才能快速实现查找、插入、删除操作;旅游线路设计问题,如想去北京、上海、杭州等地旅游,怎样安排线路以求花费最少;在楼房工程建设中,如何施工以求工期最短;再如九七年轰动一时的国际象棋“人机”大战,由国际象棋大师与IBM公司的计算机进行国际象棋比赛,为什么最终计算机能够取得胜利等等。以上应用贴近生活,学生都比较熟悉,兴趣就能够被激发起来,形成想学好这门课的愿望。而且实践证明,教师在教学过程中越明确阐述每一具体知识的目的意义,帮助学生了解知识所具有的价值,就越能吸引学生,产生对知识的向往与追求的意向,这样就可以将“要我学”变为“我要学”。其实上述例子就已经囊括了本门课中涉及的几大类数据结构——线性表、树和图,这样教师就可以水到渠成的归结出数据结构的概念以及本章涉列的几种数据结构的类型,为后续章节的讲解打下了良好的基础。
2、适当调整教学内容以弥补先导课程的不足
C语言程序设计是数据结构的前导课程之一,学生对它的熟悉掌握程度,直接关系到数据结构课程的教学效果。C语言本身的灵活性,对于刚刚学完C语言程序设计的学生而言,运用不一定很自如。另外,C语言难点就是指针、函数、数组作为函数参数以及结构体类型等,而数据结构课程主要就是运用这些知识点来分析、解决问题的。对于大部分学生来说,C语言运用能力不是很强,如果上课时直接切入主题,他们就会有“云山雾罩”的感觉。如何来解决这个问题呢?我们可以利用一、两次课的时间(2~4学时)来复习C语言的相关知识,即数组、指针、函数和结构体等。可以将这些学时纳入到教学进度表中,教师在复习并不是面面俱到,而是将与本课相关的内容做以归纳总结, 这样既可以复习以前的知识,加深印象,强化理解,又可以为数据结构课程的教学做铺垫。
3、教学内容的归纳提炼
对于教师而言,不少人常说“数据结构”这门课难讲,学生也反映这门课不好学,这是因为“数据结构”不但有很强的理论性,而且具有一定的抽象性。同时“数据结构”课程又有较强的实践性,要求学生能够使用一种语言(PASCAL 、C、C + + 或Java) ,对算法进行程序设计,并且能够进行上机调试,对于基础薄弱的学生这就好似“雪上加霜”。既然“教”与“学”都有困难,当然这本来就是相辅相成的,而在“教”与“学”过程中首先应该突破教师应该怎么“教”,作为教师首先应对理论概念和算法思想的知识处理,避免“照本宣科”,教师自己要熟悉教材、精通教材,把握本课程的重点和难点,能够将前后内容联系起来分析思考,尽量从中寻找共性的、规律性的东西进行归纳与提炼,并将其系统化、具体化。例如从数据结构的定义出发包含三方面的内容:逻辑结构、存储结构和算法。在讲到每种数据结构(线性表、栈、队列、树、图)都会涉及到它的逻辑结构、存储结构和算法。教师在讲授的过程中可以用数据结构包含的三方面内容作为一条主线贯穿整本书,每讲到一种新的数据结构时都可以拿出这条主线来阐明其上的三方面内容,这样,学生学起来就会觉得有系统性,容易把握。综观全书不论是线性表、树还是图,最基本的、典型的存储结构就是两类:顺序存储结构、链式存储结构,只要把它们掌握得好,整个课程学习的难度就不大。所以在教学过程中, 教师一方面要紧扣课程的主脉(即各种数据结构的基本概念、逻辑结构、存储结构、主要算法与相关应用) , 把基本的概念与术语解释清楚, 把各种数据结构与操作运算分析清楚,把有关算法的设计思路与实现方法讲解清楚;另一方面, 更要注重有关内容的前后呼应, 把握其内在联系, 对各种相关结构的特点与操作,进行相应的归纳、总结与对比。
4、加强实践环节
为使学生真正学好“数据结构”, 除了在课堂上要采用行之有效的教学方法外, 还要让学生勤动手,多实践。只有通过实践才能发现“教”与“学”中存在的问题。实践的首要环节首先是要多做习题。要学好“数据结构”, 只“看”不“练”肯定是不行的, 习题的作用是极其重要的,学生不仅要做,而且要求交作业,教师则要进行全面检查与批改, 对出现的问题要及时进行总结、归纳、讲评。讲评时要细讲解题思路, 规范解题方法, 并强调有关的注意事项。同时, 对于作业中的可取之处要加以表扬, 鼓励他们开拓创新。
其次要上机实验。上机实验不仅能进一步巩固对有关内容的理解,同时还能提高学生灵活运用数据结构和算法的能力,使学生在编程、上机操作、程序调试与正确性验证等基本技能方面受到严格的训练。在安排实验内容、布置试验任务时, 可以遵循由易到难、由简单到复杂的原则。在课程大纲指导下,在整个教学过程中,实验过程要结合教学进度与学生的实际情况,制定实验的内容。实验可分两部分,一是验证性实验,主要结合课堂理论教学内容展开,学生可以对在课堂上学到的基本算法进行验证;二是运用性实验,坚持“学以致用”的原则,目的是让学生充分利用所学的理论知识进行相对复杂的应用设计; 再次要进行系统的设计。上机结束后要求学生完成实习报告, 写出自己调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析, 算法的时空分析,测试结果,以及经验体会, 并附上源程序代码, 从而写出完整的实习报告。批改学生实习报告后, 对学生的上机实习情况做及时总结, 指出成功之处和不足之处。
三、总结
按照项目课程建设思路,对“数据结构”进行教学内容、教学模式、教学方法的改革,以模拟实际项目为背景,从布置工作任务开始,按照“资讯、决策、计划、实施、检查、评估”六步教学法,对完整的工作过程进行教学的组织与实施,借助真实的工作任务为载体,使学生在自己的行动中学习。在这种教学氛围下,学生会主动地投入到学习当中,在实际的工作情境中塑造自己、完善自己,在掌握职业技能的同时,学会工作和学习的方法以及为人处世的道理,为成为一个合格的职业人、社会人打下坚实的基础。
参考文献:
[1] 严尉敏 吴伟民:《数据结构C语言描述》,清华大学出版社,1997
[2] 李丹丹:《数据结构教学改革与实践》,北京城市学院学报,2007
[3] 严尉敏:《编写数据结构的回顾和体会》,教学与研究,1994
关键词:数据结构;C语言
一、“数据结构”课程在教学中的问题分析
“数据结构”课程是计算机类专业的专业基础课,主要讨论常用各种数据的逻辑结构、存储结构以及有关算法,通过教学,使学生能根据实际应用的需要,对数据进行逻辑结构分析、存储和处理,进而编制出高效率的程序。该课程不仅内容丰富,学习量大,而且具有强逻辑性和高抽象性。算法复杂多变,高职学生在学习过程中经常感到困难,甚至产生厌学情绪,我们从教学过程中分析主要是以下几个原因:
1.课程难度大,学生难以适应
“数据结构”课程是一门逻辑性和实践性都很强的课程,在以往教学实践中,由于课程内容高度抽象、概念繁多、算法复杂,教学难度大、学生畏难情绪严重、体会不出“学以致用”的优势,导致学生学习兴趣不高、动手实践能力差、学习质量难提升,这与高职院校突出技能教学的要求不相适应。
2、先导课程基础较薄弱
“数据结构”课程的先决课程C语言知识掌握不牢,大部分学生对指针类知识点不熟练,学习复杂算法时有困难。
3.学生在学习过程中处于被动地位,不能发挥高职学生所具有的知识构建能力的优势
传统教学模式是教师填鸭式的将知识满堂灌,学生被动听,这显然不适于现代高职学生所具有的知识构建的特点。即学生不能在问题解决过程中进行学习,也不能将当前学习内容与自己已有的知识经验联系起来,久而久之,学生因不能积极参与教学活动和及时建构知识,影响了学习效果。
二、 “数据结构”课程的教学改革
若要对该课程进行教学改革,必须通过分析當前高职学校计算机类专业群的工作岗位、人才的职业能力、工作任务和工作内容,确定典型工作任务,建立基于工作过程的课程体系。在课程体系中,确定“数据结构”课程在各专业培养计划中的支撑作用,据此进行教学内容、教学模式和教学方法的设计,以追求更好的教学效果。
1、讲好第一堂课
“数据结构”虽然包含了较多的理论内容,但具有实践应用的特点。俗话说,“兴趣是最好的老师”。因此在进行数据结构课的第一次授课中,并不急于介绍理论,而是强调应用,通过介绍数据结构在实际中的应用来激发学生的学习兴趣。如图书馆的书目检索系统,如何组织图书的登录号、书名、分类号等数据,才能快速实现查找、插入、删除操作;旅游线路设计问题,如想去北京、上海、杭州等地旅游,怎样安排线路以求花费最少;在楼房工程建设中,如何施工以求工期最短;再如九七年轰动一时的国际象棋“人机”大战,由国际象棋大师与IBM公司的计算机进行国际象棋比赛,为什么最终计算机能够取得胜利等等。以上应用贴近生活,学生都比较熟悉,兴趣就能够被激发起来,形成想学好这门课的愿望。而且实践证明,教师在教学过程中越明确阐述每一具体知识的目的意义,帮助学生了解知识所具有的价值,就越能吸引学生,产生对知识的向往与追求的意向,这样就可以将“要我学”变为“我要学”。其实上述例子就已经囊括了本门课中涉及的几大类数据结构——线性表、树和图,这样教师就可以水到渠成的归结出数据结构的概念以及本章涉列的几种数据结构的类型,为后续章节的讲解打下了良好的基础。
2、适当调整教学内容以弥补先导课程的不足
C语言程序设计是数据结构的前导课程之一,学生对它的熟悉掌握程度,直接关系到数据结构课程的教学效果。C语言本身的灵活性,对于刚刚学完C语言程序设计的学生而言,运用不一定很自如。另外,C语言难点就是指针、函数、数组作为函数参数以及结构体类型等,而数据结构课程主要就是运用这些知识点来分析、解决问题的。对于大部分学生来说,C语言运用能力不是很强,如果上课时直接切入主题,他们就会有“云山雾罩”的感觉。如何来解决这个问题呢?我们可以利用一、两次课的时间(2~4学时)来复习C语言的相关知识,即数组、指针、函数和结构体等。可以将这些学时纳入到教学进度表中,教师在复习并不是面面俱到,而是将与本课相关的内容做以归纳总结, 这样既可以复习以前的知识,加深印象,强化理解,又可以为数据结构课程的教学做铺垫。
3、教学内容的归纳提炼
对于教师而言,不少人常说“数据结构”这门课难讲,学生也反映这门课不好学,这是因为“数据结构”不但有很强的理论性,而且具有一定的抽象性。同时“数据结构”课程又有较强的实践性,要求学生能够使用一种语言(PASCAL 、C、C + + 或Java) ,对算法进行程序设计,并且能够进行上机调试,对于基础薄弱的学生这就好似“雪上加霜”。既然“教”与“学”都有困难,当然这本来就是相辅相成的,而在“教”与“学”过程中首先应该突破教师应该怎么“教”,作为教师首先应对理论概念和算法思想的知识处理,避免“照本宣科”,教师自己要熟悉教材、精通教材,把握本课程的重点和难点,能够将前后内容联系起来分析思考,尽量从中寻找共性的、规律性的东西进行归纳与提炼,并将其系统化、具体化。例如从数据结构的定义出发包含三方面的内容:逻辑结构、存储结构和算法。在讲到每种数据结构(线性表、栈、队列、树、图)都会涉及到它的逻辑结构、存储结构和算法。教师在讲授的过程中可以用数据结构包含的三方面内容作为一条主线贯穿整本书,每讲到一种新的数据结构时都可以拿出这条主线来阐明其上的三方面内容,这样,学生学起来就会觉得有系统性,容易把握。综观全书不论是线性表、树还是图,最基本的、典型的存储结构就是两类:顺序存储结构、链式存储结构,只要把它们掌握得好,整个课程学习的难度就不大。所以在教学过程中, 教师一方面要紧扣课程的主脉(即各种数据结构的基本概念、逻辑结构、存储结构、主要算法与相关应用) , 把基本的概念与术语解释清楚, 把各种数据结构与操作运算分析清楚,把有关算法的设计思路与实现方法讲解清楚;另一方面, 更要注重有关内容的前后呼应, 把握其内在联系, 对各种相关结构的特点与操作,进行相应的归纳、总结与对比。
4、加强实践环节
为使学生真正学好“数据结构”, 除了在课堂上要采用行之有效的教学方法外, 还要让学生勤动手,多实践。只有通过实践才能发现“教”与“学”中存在的问题。实践的首要环节首先是要多做习题。要学好“数据结构”, 只“看”不“练”肯定是不行的, 习题的作用是极其重要的,学生不仅要做,而且要求交作业,教师则要进行全面检查与批改, 对出现的问题要及时进行总结、归纳、讲评。讲评时要细讲解题思路, 规范解题方法, 并强调有关的注意事项。同时, 对于作业中的可取之处要加以表扬, 鼓励他们开拓创新。
其次要上机实验。上机实验不仅能进一步巩固对有关内容的理解,同时还能提高学生灵活运用数据结构和算法的能力,使学生在编程、上机操作、程序调试与正确性验证等基本技能方面受到严格的训练。在安排实验内容、布置试验任务时, 可以遵循由易到难、由简单到复杂的原则。在课程大纲指导下,在整个教学过程中,实验过程要结合教学进度与学生的实际情况,制定实验的内容。实验可分两部分,一是验证性实验,主要结合课堂理论教学内容展开,学生可以对在课堂上学到的基本算法进行验证;二是运用性实验,坚持“学以致用”的原则,目的是让学生充分利用所学的理论知识进行相对复杂的应用设计; 再次要进行系统的设计。上机结束后要求学生完成实习报告, 写出自己调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析, 算法的时空分析,测试结果,以及经验体会, 并附上源程序代码, 从而写出完整的实习报告。批改学生实习报告后, 对学生的上机实习情况做及时总结, 指出成功之处和不足之处。
三、总结
按照项目课程建设思路,对“数据结构”进行教学内容、教学模式、教学方法的改革,以模拟实际项目为背景,从布置工作任务开始,按照“资讯、决策、计划、实施、检查、评估”六步教学法,对完整的工作过程进行教学的组织与实施,借助真实的工作任务为载体,使学生在自己的行动中学习。在这种教学氛围下,学生会主动地投入到学习当中,在实际的工作情境中塑造自己、完善自己,在掌握职业技能的同时,学会工作和学习的方法以及为人处世的道理,为成为一个合格的职业人、社会人打下坚实的基础。
参考文献:
[1] 严尉敏 吴伟民:《数据结构C语言描述》,清华大学出版社,1997
[2] 李丹丹:《数据结构教学改革与实践》,北京城市学院学报,2007
[3] 严尉敏:《编写数据结构的回顾和体会》,教学与研究,1994