0引言
应用型人才的培养目标是知识、能力、素质和谐发展的高素质人才,是介于传统学科型人才与职业技能型人才的“中间型人才”,要求既有本科人才的学科教育特征,又有应用人才的职业教育特性,着重培养学生解决实际问题的能力应该是专业的主要特性也是最需要加强的部分[1],数据结构是计算机科学与技术专业的一门专业基础课程 ,在计算机科学与技术的课程体系中起着承上启下的作用。其教学目的是使学生学会分析计算机所加工处理的数据的数据结构特性,为软件开发过程中涉及的数据选择适当的逻辑结构、 存储结构及相应的算法,并初步掌握算法的时间效率分析和空间效率分析的技术。
学好数据结构对于提高学生的理论认知水平和实践能力有着极为重要的作用。 学生学习数据结构的最终目的是为了获得求解问题的能力。 对于现实世界中的问题,学生应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试,最后获得问题的解答。 现在,各个高校数据结构教材的主要内容集中在 “基本数据结构的定义和分析、基本数据结构的应用”这两个方面,而我们教学的目的不仅是让学生了解数据结构的理论知识, 更重要的是培养学生解决实际问题的能力,所以我们认为应用型本科数据结构的教学要以培养学生的实践能力为核心,重点提高分析设计能力和编程能力,这样才能搞好数据结构课程的教学,为学生后续课程的学习及实践打下良好的基础。
1)数据结构课程自身特点
(1)本课程高度抽象 ,需要数理逻辑 、图论 、集合论和代数系统的基础;
(2)内容丰富,学习量大。 “数据结构”的研究不仅涉及到计算机硬件(编译理论、存储设备和存取方法)的研究范围,而且与计算机软件的研究有着更密切的关系,无论是编译系统还是操作系统,都涉及到数据元素在存储器中的分配问题,在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便和高效率;
(3)需要运用许多前驱课程没有涉及到的知识 ,在解答问题时也因此困难重重;
(4)隐含在各部分的技术和方法丰富。
2)数据结构教学现状
长期从事数据结构教学和对学生学习情况的调查发现,现在数据结构教学中存在如下一些问题。
(1)学生难理解。 《数据结构》课程是培养学生逻辑思维能力、抽象思维能力,锻炼学生分析问题、解决问题能力的课程,由于抽象程度比较高,学生难以联系实际,因此对课程的理解有较大的难度。 例如,在课堂上,我们经常提到定义节点或记录,需要说明用户类型,一般用elemtype 表示,但学生好长一段时间不能很好理解这一表示。
(2)学生难实现。 在《数据结构》课程包含了大量的算法,目前大部分的数据结构教材都是采用 C 语言进行算法描述, 而且主要使用的是 C 语言里的指针、函数和结构体这些知识。 但在教学中发现这些 C语言内容恰恰是学生掌握情况最不理想的部分。虽然大多数学生能读懂算法,明白算法思想,但自己编写程序实现时却很困难,从某种意义上说,学生只停留在验证上,从而学生对这门课的学习兴趣和学习目的性更加迷茫。
(3)应用困难。 一般教师在教学中都会向学生说明数据结构课程更加注重应用,但在教学过程中往往很难甚至没有具体的应用,学生反映教材中内容学懂了,但仍然无法应用到实际问题中。一方面,不知如何选择数据结构;另一方面,不清楚如何优化算法,学生的学习积极性受到了一定的影响。
(4)教学模式单一 。 目前,“数据结构”课程在在教学手段上采用多媒体课件教学或者传统的黑板加粉笔的教学方式, 这种方法虽然清晰、方便,但由于本课程涉及大量的概念、抽象数据类型以及算法,理论性强又较为抽象,特别是算法的描述无法在课堂上一一详细介绍,算法的执行过程很难在课堂上充分演示,使学生难以想象数据之间的复杂关系。即使学生在课堂上听懂了,课后也可能无法及时上机实践,由此导致教师讲授的知识多于学生吸引的知识,长此以往学生便失去了学习的热情。
1数据结构课程教学方法改革
针对数据结构教学中经常出现的问题,提出根据不同内容采用不同教学方法,形成一门课程多种教学方法并举的综合教学方法改革。
1.1 课堂教学化抽象为具体
数据结构课程涉及数理逻辑、图论、集合论和代数系统的基础,内容高度抽象,涉及很多概念和技术。为了帮助学生理解化,降低学习难度,化抽象为具体,采用图示法帮助理解基本概念,制作动画演示帮助理解算法过程。例如在讲解单链表中的头插入法建立链表算法[2]时,先分析扫描字符串局部插入核心步骤,两步操作,第一步:将原链表的第一个节点成为新生成的节点后继, 语句为 s->next=head->next; 第二步:新生成的节点成为第一个节点,语句为 head->next=s;然后用幻灯片做图形动画演示,每一个操作步骤对应的图示过程如图 1 所示。
1.2 采用任务驱动教学,激发学生的学习热情
任务驱动教学是教师根据课堂教学目标和教学内容的需要,通过设置具体任务或案例,引导学生积极参与分析、讨论、协作等活动,让学生在具体的完成任务情景时积极思考、主动探索,以提高教与学的质量和效果,培养学生认识问题,分析问题和解决问题等综合能力的一种教学方法[3]。 任务驱动法一般分四个步骤[4]:①设置情景、创建任务。 ②分析任务、提出方案。 ③搜集素材,完成任务。 ④评估总结。 作者所教授的数据结构时,为便于学生更好地理解和掌握线性表顺序存储、排序算法、查找算法等概念,熟练得掌握插入排序、二分查找等基础算法,首先安排任务“学生成绩管理系统”。 然后将问题分解为有输入学生成绩、按学生成绩排序、根据学号或姓名查找学生成绩、和基本信息统计等任务,第三步要求学生用课堂上学过的算法来解决每一个模块,最后一个一个模块去点评,指出存在的问题和优化的方法,这样逐步推进,使学生有一种从了解、熟悉到深入理解、掌握、运用的渐进过程。
1.3 引入案例教学法,培养学生的应用意识
案例教学法是一种开放式、互动式的教学方式,需要教师根据理论教学内容事先精心策划和准备案例,指导学生提前阅读,并组织学生开展讨论案例,形成反复的互动与交流。将知识融入案例之中,重视实践,可以大大激发学生的学习兴趣,培养学生分析问题和解决问题的能力,从而达到提高该课程的教学效果案例分析法,一般在教学过程中分三步[4],①首先抽象出数据的逻辑结构 。 ②确定数据的存储结构。 ③算法设计。 本文作者在教学中,教材是李春葆编写的《数据结构教程》[2],根据不同内容设置不同案例 ,例如 ,对于线性表 ,选用案例学生信息管理系统,对于栈,选用停车场管理系统;对于队列,选用医院病人就诊管理系统;对于树结构,采用计算机中文件管理模型;对于图采用实际交通图等。 经过努力,在案例和问题的驱动下,教师的引导下,学生主动去分析问题和解决问题,就产生了学习该课程的兴趣,很自然地就掌握了该课程的内容。
2加强实验教学,提高学生动手能力
数据结构不仅具有较强的理论性,同时也具有较强的可应用性和实践性。因此,一定要重视教学实践。长期以来,课程组重视实践教学,致力于理论基础和实践教学的完美结合,形成了保证基础实验,强化设计实验,推动综合实验多层次的实践教学体系[6]。 基础实验是将理论课上讲的抽象数据类型上机编程实现,在实现的过程中,深刻理解抽象数据类型和类之间的关系、算法设计和程序实现之间的关系、问题描述和成员函数之间的关系, 课程组根据数据结构课程大纲要求,每章编制以验证为主的基础性实验,目的是帮助学生理解理论课上学习的内容,同时也训练了学生的编程;设计实验是在基础实验的基础上,给出面向实际应用的实践题目,由学生自己设计数据结构、定义类、实现类,从而解决该实际问题,这样将几个知识点连接起来,自己设计解决一个小的问题, 课程组根据大纲和教材设计了如表达式分析与计算、迷宫、停车场管理问题、医院病人就诊、约瑟夫环问题、高速公路建设问题、教学计划编排等问题,要求学生利用课后时间,可以集体讨论解决,也可以一个学生独立完成,提高了学生分析问题和解决问题能力;综合实验是给出面向实际应用的稍大一些的实践题目,课程组设置了学生信息管理系统、图书管理系统、集合运算、车票管理系统等综合实验题目,每一个题目都要求学生按照需求分析、概要设计、详细设计、测试分析、效率分析步骤解决, 在实验课组织学生分别演示程序,分组讨论, 教师根据存在的问题进行点评. 其目的是培养学生的程序设计、程序调试和程序分析能力,最大限度避免程序抄袭现象。通过设置综合实验题目、实验目的和要求,提高学生的综合程序设计。
3结束语
分析了数据结构课程自身特点,通过对传统教学中存在的几个问题的改进,理论课采用抽象变具体、案例教学法和任务驱动法,激发了学生学习数据结构的学习兴趣,提高了学生的学习主动性,强化了程序设计的理念,增强了学生分析问题和解决问题能力,数据结构在应用型本科的核心地位更加明显, 课程教学效果得到了一定的改善,今后我们将进一步优化教学内容,改进教学方法,以培养应用型、创新型人才为宗旨,为培养出合格的计算机专业人才打下夯实基础。
【参考文献】
[1]钱国英,徐立清,应雄.高等教育转型与应用型本科人才培养[M].浙江大学出版社,2007,11:74-75.
[2]李春葆.数据结构教程[M].4 版.清华大学出版社,2013,1.
[3]何克抗.建构主义学习环境下的教学设计[M].北京师范大学出版社,1998.
[4]曹春萍,陈平.问题驱动法在“数据结构”教学中的应用探讨[J].中国电力教育,2014(23):78-79.
[5]宗瑜.案例教学法与《数据结构》教学改革[J].皖西学院学报,2009,25(2):30-31.
[6]秦玉平.数据结构课程实践教学改革与实践[J].渤海大学学报:自然科学版,2013(12):398-400.