数据结构与算法范文

时间:2023-02-28 23:11:01

数据结构与算法

数据结构与算法范文第1篇

关键词:算法与数据结构;教学质量;教学探索;教学方法

作者简介:李永(1978-),男,安徽宿州人,盐城师范学院信息科学与技术学院,讲师。(江苏 盐城 224002)

中图分类号:G642.0?????文献标识码:A?????文章编号:1007-0079(2012)31-0057-02

“算法与数据结构”主要研究数据在计算机中的表示方法、存储方法以及其上的操作。[1]在美国IEEE/ACM课程体系和我国教育部学科规范中,[2,3]“算法与数据结构”被列为核心课程之一。它是操作系统、数据库、软件工程和人工智能等课程的基础。算法与数据结构蕴含的思想对学生在软件设计方面有很强的导向性,它的教学效果直接影响学生的数据抽象和程序设计能力的培养。学习该课程,一方面,使学生学会分析数据对象的特征,掌握数据组织的方法和在计算机中的表示方法,为数据选择合适的逻辑结构、存储结构和算法;另一方面,培养学生良好的程序设计风格,进行复杂程序设计的训练。[1]

为了在课时约束、学生基础、课程难度、教学目标等约束下最大化教学质量,使学生最大限度地得到提升和发展,本文从分析“算法与数据结构”课程存在的问题出发,在教学内容、教学方法、实验教学等方面进行了一些探索和实践。

一、“算法与数据结构”教学中存在的问题

1.课程本身难度大

“算法与数据结构”是抽象与具体的统一,理解与掌握它需要跨越横亘在抽象与具体之间的鸿沟。学习该课程有两个难点:一是从算法与数据结构到程序实现的跨越;二是从实际应用到数据结构抽象的跨越,即如何利用算法与数据结构解决实际问题。[4]“算法与数据结构”的内容抽象、繁多、逻辑性强,难于理解掌握。学生学完后不知道学了什么,当需要解决实际问题时感到无从下手。“算法与数据结构”综合性、技巧性强,各种算法中凝结了大量杰出计算机科学家的智慧,在有限的教学时间内部分学生因无法领悟其中的思想与精髓而产生厌学情绪。

2.前导课程基础不扎实

“C语言程序设计”、“高等数学”、“离散数学”等是数据结构的前导课程,其中“C语言”与“数据结构”课程的联系最为密切。“C语言”一般开设在大一第一学期,是学生最先接触的程序设计语言。由于内容多、难度较大、大班教学、课时有限等原因,教学时间大部分花在基本概念及简单程序的编写上,对结构体、指针、参数传递等难度较大的知识点讲解不深入,为“算法与数据结构”的学习埋下了隐患。

3.教学方法有待改进

“算法与数据结构”的教学方法主要为板书结合PPT课件,教学方式采用“教师讲—学生听”的灌输式授课模式,与学生互动少,课堂气氛沉闷。教学方法中以教师为中心按照教学大纲教学,存在照本宣科、就事论事、内容堆砌、缺乏新意等缺点。由于没有考虑学生的接受能力、思维能力以及编写代码的能力,学生只是不加思考地被动的接受知识,限制了学生的积极性与主动性的发挥。

4.实验教学中存在的问题

目前课程实验中存在的问题主要有下面三个方面。首先,大多高校“算法与数据结构”实验的教学方式仍是以教师为中心,以灌输、模拟、验证为主;教师按教材单元布置实验任务并做适当的引导和提示,然后学生动手实践。没有考虑实验的实用性以及是否适合学生,不能调动学生的学习热情。其次,学生的程序设计能力普遍较弱,面对问题时难以有清晰的算法思想,无法将算法思想转变为正确的程序代码,上机调试和运行程序时面对众多的错误提示无法正确解决,实验课教学效果大打折扣。再次,由于实验课时有限,且实验内容具有相互依赖和递进的特点,部分学生又不能充分利用课余时间,造成问题堆积。

二、“算法与数据结构”的教学探索

1.合理组织教学内容

贯穿“算法与数据结构”课程的主线是逻辑结构、存储结构及操作,即线性表、树、图三种逻辑结构;顺序和链式两种存储结构;插入、删除、查找、遍历等操作。这些内容不是孤立的,在教学过程中将它们联系起来形成一条主线,由线性到非线性,由简单到复杂,方便学生理解和掌握。在教授课本内容时,根据教学大纲的要求梳理并提炼出各章节的知识框架,根据学生情况和教学目的合理划分课时,控制课程节奏。课堂上主要针对程度一般的多数学生从数据结构的逻辑结构、存储结构和数据的运算三个方面去组织教学内容,做到重点突出、内容简洁。对于程度差的学生进行个别辅导,通过补习和细化教学内容帮助其跟上教学进度。对于程度较好的学生,通过指定课外读物、布置思考题等,让其能力得到充分发挥。

2.上好第一节课,激发学习热情

在第一节课不要急于给学生灌输基础的理论知识,而要引导学生明白为何学,讲解数据结构的研究对象是什么,学习数据结构有什么用,采用什么样的方法来学习该课程。这些问题的引入不能从抽象的概念入手,而要从贴近生活的一些例子从案例入手,让学生在深入课程学习前体会到课程的重要性。例如,学生成绩管理系统中如何组织学号、姓名、成绩等,才能快速实现查找、插入、删除等操作;计算机与人对弈时如何应对变化的情况以及给出周全的对策,实现灵活对弈等。也可给学生展示一些上届学生的优秀作品,让学生先认识到数据结构在实际编程中的应用,并指出在学期结束时学生也能设计出类似这样的系统。使学生认识到该课程实际应用的价值,对课程充满探索的欲望,积极性得到调动,从而有一个良好的开端。

3.夯实C语言基础

数据结构与算法范文第2篇

>> 数据结构排序算法可视化的设计 选择排序算法的分析与改进 《数据结构与算法》课程教学改进与探索 论数据结构中的外排序与内排序 数据结构实验教学中排序算法的动态演示 基于VC++的数据结构算法演示系统 基于数据结构的最小生成树算法 基于项目导向的数据结构与算法课程教学研究与实践 基于C语言排序的算法改进与应用 基于C程序冒泡排序算法的研究与改进 试论算法与数据结构的相关性 《数据结构与算法》的教改问题研究 “算法与数据结构”课程教学体系的建设 数据结构中排序方法的研究 数据结构算法应用 基于Visual C++的数据结构经典算法的演示系统 基于K―D树数据结构的平面插值算法的优化 “算法与数据结构”教学探索与实践 通用题库数据结构与组卷算法设计 算法与数据结构理论教学技巧探讨 常见问题解答 当前所在位置:l.

[4]黄福员.冒泡排序算法的改进[J].微机发展,2003,13(11):65-66.

[5] Mark Allen Weiss.数据结构与算法分析C++描述[M].张怀勇,译.北京:人民邮电出版社,2007.

[6]Thomas H Cormen.算法导论[M].2版.北京:机械工业出版社,2006.

[7]Sartaj Sahni.计算机算法[M].北京:机械工业出版社,2006.

[8]徐士良.实用数据结构[M].北京:清华大学出版社,2006.

[9]徐士良.常用算法程序集[M].北京:清华大学出版社,2001.

数据结构与算法范文第3篇

近年来,我们在多门计算机课程的教学实践中,摸索出一套“把实验实践环节与理论教学相融合,抓实验实践教学促进学科理论知识学习”的教学方法,有效地提高了学生的学习兴趣,以此来提高大众化高等教育背景下计算机专业课程的教学效果和教学质量。这个教学方法可以简单地概括为“先做后说”。这里的“先做”,就是教师依据相关课程的知识体系和教学要求精心设计前导实验,学生在实验设计的指导下,通过实验方法来了解和实践课程知识;这里的“后说”,就是在学生具备了一定的感性认识的基础上,在课堂教学环节中答疑解惑,系统地提高学科知识的理论水平。本文中,我们结合“数据结构与算法”(以下简称“数据结构”) 课程来探讨新的教育形势下计算机课程教学方法的改革。

1“数据结构”的教学现状

任何实际问题只有建立了数学模型才可以被计算机计算,而数据结构就是实际问题中元素的数学抽象,算法则是建立和解决数学模型的方法。

“数据结构”这个术语在整个计算机科学与技术领域得到广泛使用,它被用来反映一个数据的内部构成,即一个数据由哪些成分数据构成,以什么方式构成,呈什么样的结构等。数据结构是数据存在的形式,也是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。

“数据结构”是计算机以及相关专业的一门核心课程,具有承上启下的地位和作用,“程序设计语言”(例如C或C++) 和“离散数学”是它的先导课程,“操作系统”、“数据库原理”、“软件工程”等则是它的后续课程。“数据结构”课程既有相当的理论抽象性,又有鲜明的应用特色,是专业基础课程中的一门有一定教与学难度的课程。

“数据结构”课程一向都有上机实验的要求,但主体通常还是课堂教学,无论是实验设计还是实验强度都远远不够,带有强烈的“验证性”色彩。但是鉴于以下原因:(1) 由于低年级程序设计语言教与学所存在的问题,学生普遍不能顺利地运用程序设计语言工具;(2)对于应用型院校以及许多专业的学生来说,学习数据结构与算法的主要目的应该是在理解的基础之上更好地从事计算机软件的设计与运用。因此,“数据结构”课程的教师必须决定其课程是集中于问题和理论,还是为学生提供一个能够对其进行充分实验的环境,让学生在实践的环节中增加感性认识,产生对相关理论知识的需求。

2教学内容的分层次设计

从1999年开始,经过几年的大规模扩张,人们对大面积扩招后形成的新的高等教育态势进行了重新认识,并把普通高等学校一般地分为研究型大学、教学科研型大学、教学型本科院校、高等专科院校和高等职业院校等几种办学类型。随着高等教育大众化、普及化时期的到来,初步形成了各类大学相对稳定的分层次办学的格局。

根据教育部计算机科学与技术专业教学指导分委员会的“中国计算机本科专业发展战略研究报告”,我们至少可以认为:所在院校的办学类型不同、培养目标不同、所在地及其周边地区社会需求的不同,这些计算机专业的教学内容应该有所不同。作为一门重要的计算机的专业基础课程,针对不同院校不同的教学目的,“数据结构”应该有不同的,分层次的教学设计。

我们认为:对于大多数计算机专业以及IT相关专业的学生,尤其是非研究性院校的学生,应该把数据结构的学习定位在理解、熟悉和能够灵活运用的基础上,而把那些“考研”所需要的更深层次理论性内容放在选修或者考研复习阶段来解决。从长远看,应该对各层次院校的计算机专业所开设的“数据结构”课程的教学内容进行研究,对其教学方法进行积极的探索。

数据结构与算法的应用面广,涉及技术领域宽泛,也被人们赋予了很高的期望值,对于计算机及其相关专业的一般学生和读者来说,肯定是需要掌握的重要专业基础知识之一。另一方面,虽然全部计算机应用技术都有实践性的要求,但数据结构与算法对于应用基础理论来指导开发实践却有着特别的需求,单凭课堂教学和一般作业,要真正领会数据结构与算法课程所介绍的概念、原理、方法和技巧等,是很困难的。因此,要让学生真正理解数据结构与算法的基本知识,具备将数据结构知识应用于社会实践的能力,积极加强数据结构课程的实验环节是至关重要的。

3教学改革、实验创新与成果

根据以上思考,我们在教学内容的安排、实验项目的选择、实验步骤的设计和实验文档的组织等诸方面都做了精心的考虑和安排,尝试为“数据结构与算法”课程编写了主要用于实验也可用于课堂教学的教材《数据结构与算法实验教程》。该教材依据课程教学大纲,充分理解课程的大多数主教材,遵循课程教学的规律和节奏,体现了实验的可操作性,帮助学生切实把握本课程的知识内涵和理论与实践的水平。

《数据结构与算法实验教程》采用C语言作为描述语言,通过一系列与课程单元知识密切相关的实验练习,把数据结构的概念、理论知识与技术融入到实际应用中,从而加深对本课程的认识和理解,逐步熟悉和掌握结构化程序设计方法,提高编程能力和综合分析能力,并为今后学习面向对象程序设计作一些铺垫。实验练习覆盖了“数据结构”课程教学的各个方面,内容涉及数据结构和算法分析基础、线性表、栈和队列、串、树和二叉树、图,以及查找与内部排序等,全书共16个实验练习、1个实验总结和1个附录实验,如表一所示。

实验1:数据结构和算法分析基础。包括数据结构和算法的计算环境、抽象数据类型的表示和实现、算法和算法分析等实验。通过实验来理解抽象数据类型的特点、定义方法和在C语言环境下实现的方法;掌握算法的主要特征和描述方法;尝试通过具体的算法结构,计算算法的时间复杂度和空间复杂度,并对算法进行定性或定量评价。

实验2:线性表。包括线性表的顺序表示和实现、线性表的链式表示和实现等实验。通过实验,掌握顺序表和链表的存储结构定义;实现基本操作算法的描述和分析;进一步理解实现复杂操作的C语言程序的结构,从而更深入理解结构化程序设计的方法;与此同时,加深理解C语言中函数和结构体的结构、语法和使用方法。

实验3:栈和队列。包括栈、队列和递归算法等实验。通过实验,掌握顺序栈和链式栈、顺序队列和链式队列的存储结构定义;掌握栈和队列基本操作的过程及实现的方法;理解递归算法的思路、使用条件以及设计方法,并且了解由递归算法到非递归算法的转换过程中栈的作用;通过实例,进一步加深对栈和队列特点的理解,并区别这两种结构在解决实际问题时的区别,从而更合理地选择适当的数据结构解决实际运用。

实验4:串。包括串的3种常见的存储结构定义、在具体的定义下串的基本操作和实现。通过这个实验,加深理解串这种常见的数据结构的特点和存储结构定义方法;掌握串的基本操作算法的描述,并根据算法的结构评价算法;理解串操作的实现方法,理解一个合理的存储结构定义对具体操作实现的重要性,并注重提高算法的健壮性,从而能更好理会一个好算法所需要的各种综合因素。

实验5:树和二叉树。包括二叉树及其基本操作、哈夫曼树和哈夫曼编码等实验。通过实验,掌握二叉树的不同存储结构定义,并理会在具体的应用中采用合理的存储结构的思路;理解二叉树的先序、中序及后序三种遍历的递归与非递归算法实现过程,加深理解递归算法的设计思路,体会栈在递归算法中的作用,以及在非递归算法中栈和队列的作用;理解哈夫曼树的特点和存储结构的定义思路、哈夫曼树建立的算法和实现,并在此基础上体验哈夫曼编码的特点和设计过程,弄清实现哈夫曼编码程序的结构,从而加深对C语言中字符串和指针的理解和灵活运用。

实验6:图。包括图的表示和实现、图的应用、贪心算法等实验。通过实验,掌握图的各种存储结构的定义方法,从而更进一步理解如何根据实际问题设计合理的数据结构;掌握图的两种遍历方法,即图的深度优先搜索和广度优先搜索,并根据这两种操作的实现过程确定算法中所需要采用的辅助数据结构;能根据实际问题选择图的类型,并采用合理的存储结构,理解解决最小生成树、拓扑排序、关键路径和最短路径等实际应用的算法描述,并能根据算法写出相应的程序代码。根据贪心算法的核心思想理解贪心算法的特点,并学会设计简单的贪心算法。

实验7:查找与内部排序。包括查找、内部排序等实验。通过实验,掌握查找表的特点,并能根据具体的查找方法定义合理的查找表的存储结构;掌握各种查找表的实现思路,能根据查找思路写出算法的描述,并对算法进行评价;掌握哈希查找的特点和影响哈希查找的因素,从而构造合理的哈希函数、采用适当的解决冲突的方法,加深理解C语言中指向函数的指针的具体应用。通过实验,熟悉各种排序方法的特点,并能根据具体的实现方法定义合理的待排序数据的存储结构;掌握各种排序方法的实现思路,能根据排序思路写出算法的描述,并对相应算法进行时间复杂度和空间复杂度计算;体会各种排序算法在最好情况下和最坏情况下的算法评价,并能根据待排序数据的实际分布,制订相应的排序方法。

实验8:数据结构与算法实验总结。全部实验完成后,要求学生回顾所有实验内容,进行一次系统的概括、评价和总结,以巩固通过实验所了解和掌握的数据结构与算法相关知识和技术。

附录:算法描述绘图工具Visio实验。学会在Visio环境下制作算法的程序流程图和N-S图等。

各个实验练习的难易程度不同,实验练习之间的难度不断增加,循序渐进,学生在实验中遇到困难,还可以搜索更早的实验来帮助解决问题。每个实验完成后,要求学生根据个人感受完成实验总结;师生通过“实验总结”和“教师评价”部分,交流对学科知识、实验内容的理解与体会。

4认识与提高

分析表明,学生在“数据结构”等课程中产生的学习困难,首先来自于他们对所学知识缺乏必要的感性认识,而我们在教学中采用“先做后说”的方法,把根据学科理论知识精心设计的实验实践环节与学科理论教学相融合,抓实验实践教学促进学科理论知识学习,较好地解决了学生的认知困难,符合特定的学生对象,取得了很好的教学效果。“通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。”

数据结构与算法范文第4篇

关键词: 数据结构与算法;课程;质量标准;人才培养;综合性地方本科院校;SMART原则

中图分类号: G42 文献标识码:A 文章编号:1009-3044(2015)13-0160-03

Abstract: In this paper, course quality standard of data structure and algorithm is researched under the guidance of talent training objectives of comprehensive local undergraduate college. The SMART principle and guiding ideology are put forward by combining with the characteristics of this course. The overall goals of this course quality standard are made clear. The teaching requirements of this course are given. The implementation of this course quality standard is normalized. Thus, the course quality can be improved and the talent training objectives can be achieved.

Key words: data structure and algorithm; course; quality standard; talent training; comprehensive local undergraduate college; SMART principle

1 引言

《数据结构与算法》是计算机专业的核心基础课程,其任务是培养学生问题求解技术与抽象方法的能力,同时也是促进学生掌握程序设计语言和程序设计方法的重要课程。该课程教学内容和方法,重点难点等方面已形成了较为成熟的体系[1-2],但是与综合性地方本科院校的定位相结合时,就突显出以下问题:

1)教学内容的实用性、系统性不突出,理论内容和实际应用结合不紧密,导致该课程质量标准和培养目标之间存在一定差距。

2)课堂教学措施和效果难以准确评价,培养的人才是否符合市场需求也未可知。

针对上述问题,本文将根据《数据结构与算法》课程的地位,结合综合性地方本科院校人才培养目标,采用SMART原则[3-4]作为指导思想,建立一套完善的课程质量标准,并将其贯穿于该课程的整个实施过程,以达到预期的效果。

2 SMART原则

SMART原则是目标管理的经典理论,本文将其与综合性地方本科院校[5, 6]《数据结构与算法》课程质量标准问题的内涵相结合,提出如下原则:

S=Specific(明确性):即要用具体的语言清楚地说明要达成的综合性地方本科院校《数据结构与算法》课程质量标准。

M=Measurable(可衡量性):即所设计的课程质量标准应该是明确的,而不是模糊的。应该有一组明确的量度标准,作为衡量是否达成目标的依据。

A=Attainable(可达成性):即所设计的课程质量标准能够被执行人接受,如果仅仅靠一些行政手段,利用权利的影响力一厢情愿地把所制定的课程质量标准强行实施,结果总是适得其反的。

R=Relevant(相关性):即所设计的课程质量标准与综合性地方本科院校其他目标应该是高度相关的。如果实现了某个单一目标,但与其他的目标完全不相关,或者相关度很低,那这个课程质量标准即使被达到了,意义也不是很大。

T=Time-bound(时限性):即所设计的课程质量标准必须在时限范围内达成和实施,否则失去了应有的现实意义。

3 课程质量标准

3.1 指导思想

本文为综合性地方本科院校设计的《数据结构与算法》课程质量标准依照以下指导思想进行:

①方向性:该课程质量标准的建立要坚持正确的导向,要与教育教学的总目标相一致,评价标准要与国家或上级部门公布的标准相一致。指标的设计应努力反映现代教学理论和评价思想,要超越但又不脱离实际现有的教学水平、教师水平和技术水平。

②科学性:课程质量标准的各个环节都必须能反映综合性地方本科院校的发展目标和教学规律;构建一个科学合理的课程质量标准系统,同时要保证各个课程质量标准之间的独立性,尽量减少冗余,坚持科学性,遵循科学的教育理论和统计学方法。

③客观性原则:课程质量标准的建立要以真实的资料为基础,对课程质量做出客观的价值判断,必须以客观事实为基础,克服课程质量标准选取过程中的主观随意性和情感因素。各项指标应采用量化的形式,所设计的标准应符合一定的数学模型,同时为避免机械化,应在全面的资料收集的基础上,进行标准的建立。

④可行性原则:该课程质量标准要符合上述的SMART原则,在实施时要综合考虑到人力、物力、财力、时间等各种制约因素。

3.2 目标与标准

3.2.1 质量总目标

根据教育部教指委提出的计算机专业《数据结构与算法》课程教学基本要求,依据综合性地方本科院校人才培养应具备的知识、能力、素质要求[7, 8],提出《数据结构与算法》课程质量目标,如表1所示。

3.2.2 确定课程教学要求

根据上述质量总目标,将《数据结构与算法》课程的教学内容划分为3个模块,并将每个模块分解成若干教学单元,明确各教学单元的主要教学内容和目标,如表2所示。

3.2.3 课程质量标准的实施

要确保课程质量标准得以实现,关键在于有切合实际的教学措施及实施规范。课程质量标准作为课程教学的指导性文件,应针对课程的教学文档、教学实施、教学反馈三个方面进行全程规范,本文给出《数据结构与算法》课程质量标准的实施规范,如表3所示。

在反馈环节中的评课,包含了学生评课、专家评课和企业评课。学生评课是学习完本课程的学生在学习了本课程的后续课程后再对本课程的有效性做出评价。专家评课则是由本领域内的专家对本课程的全部实施环节的规范性和有效性进行评价。企业评课是只由相关的企业专家,或者是录用了本专业毕业生的企业的负责人,对学生学习了本课程是否能学以致用做出评价。

4 结论

《数据结构与算法》是一门逻辑性强、理论与实践紧密结合的课程,对提高学生程序开发能力和培养算法设计与分析能力都具有重要意义的课程。综合性地方本科院校以培养应用型人才、服务地方建设为目标,这就要求课程质量标准的设置应更关注学生的整体素质培养,以及社会对学生能力和素质的需求。本文通过对《数据结构与算法》课程质量标准进行研究,制定了该课程的质量标准和实施规范,明确了综合性地方本科院校《数据结构与算法》课程的定位,促进课程的教学的有效实施。

参考文献:

[1] 吕亚荣, 缪相林. 数据结构与算法实验教学的改革与探索[J]. 教育教学论坛,2014,3(18):23-29.

[2] 刘馨月, 张宪超, 于红. 数据结构与算法核心课程建设[J]. 计算机教育,2011,6(4):65-68.

[3] 周彦斐. 运用SMART原则优化项目教学过程探究[J]. 闽西职业技术学院学报,2013,15(4):94-96.

[4] 陆如萍. SMART原则在教学目标设定中的应用探究[J]. 现代基础教育研究,2013,1(2):196-199.

[5] 王志英. 地方本科院校转型应用技术类型高等学校途径探讨[J]. 现代企业教育,2014,16(3): 430-432.

[6] 廖诗艳. 质性评价:地方本科院校教学质量监控的路径[J]. 教育探索,2014,7(5):66-68.

[7] 强俊, 周鸣争, 汪军. IT人才培养模式创新体系研究[J]. 电脑知识与技术,2013,1(1):100-102.

数据结构与算法范文第5篇

关键词:数据结构;课程体系;实践教学;课程群

1背景

数据结构与算法是计算机类专业的一门核心基础课程,是计算机、软件工程等电子信息类专业的必修课。本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法;介绍了常用的多种查找和排序技术,并对其进行性能分析和比较,内容非常丰富[1-2]。本课程的教学目标是加强学生对数据逻辑关系的分析与认识,培养学生数据抽象的能力,通过理论分析与编程实践相结合,增强学生求解复杂问题的能力以及控制算法复杂性的能力。

在计算机科学中,数据结构不仅是程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统等系统程序和各种大型应用程序的重要基础[3]。数据结构与算法是计算机类专业部分专业课的先导课,如操作系统、编译原理和数据库原理等,因此它为后续的专业课程学习提供必要的知识和技能储备[4]。数据结构与算法课程一直以来都是本学科的核心专业基础课程,而且正逐渐发展成为众多理工科专业的热门选修课。只有学好了这门课,才能在今后的计算机专业课程的学习中游刃有余。因此,本课程在国内同类课程中有较明显的先进性和示范性。

根据新世纪对人才培养的要求,教学应重在学生能力、素质的培养,尤其是思维能力、实践能力、创新能力的培养。多年来我们致力于数据结构核心课程的建设,从完善课程体系、加强团队建设、深入教学改革和丰富教学资源等各个环节不断探索和实践。从提高学生的学习兴趣和加强实践环节教学方面入手,在教育教学方面持续、深入地改进教学方法,开展教学研究,提高教学质量。

2完善课程体系

首先,完善以“扎实基础,强化实践,引导创新”为培养目标的课程体系。计算机类专业核心基础课程体系主要由离散数学、面向对象的程序设计、数据结构与算法、操作系统、编译原理、计算机组成与结构、数据库原理7门课程组成,用于支撑计算机科学与技术、软件工程、网络工程、信息安全、数字媒体技术5个计算机科学相关专业的教学。

我们将课程群的理念引入计算机专业基础类课程教学,建立了以数据结构为核心的计算机类基础课程群,如图1所示。课程群以培养综合运用计算机基础知识能力为目标,打破课程间的壁垒,强化课程联系。本课程群以数据结构为核心,将数据结构的一些基本内容如链表、排序等渗透到“C/C++程序设计”课程中;将编译原理、数据库原理等需要使用数据结构内容的部分在数据结构课程中以应用的实例进行讲解,从而将相关课程的授课内容形成统一的整体。

在实践环节我们强化数据结构对程序设计语言的训练及解决相关课程问题的训练。除各门课程有单独的实践课程外,独立设置贯彻整个教学环节的实践课程,将数据结构课程群中各门课程较为关联的综合大作业进行归并整合。自身实验课程注重双基训练,但大实践课程要求对整个数据结构课程群教学经验丰富、能够精确把握该课程体系要点的教师进行授课,在教学中能够结合本学期相关课程设置大作业,在讲授中能够根据学生的具体情况进行诱导性教学,使学生通过完成大作业来更深刻地认识学科体系的全貌,强化学科综合素质的培养。

以数据结构课程为中心构建计算机类专业的核心基础课程体系,将与计算机科学相关专业的专业基础课程教学打通,在课程、课件、教材、师资队伍等多方面进行统一的规划和建设,以不同的着重点组织课程教学内容、进行大学生计算机实践能力和创新能力的培养。该体系打破了原有实验教学附属于理论课程的模式,理论教学与实验教学既相对独立、又相互联系,改变了单一的知识验证的实验模式,增强综合应用设计和创新实践内容,全面提高学生的实验实践技能。“扎实基础,强化实践,引导创新”培养目标体现了当前计算机类专业教育的发展趋势,走在国内高校的前面,在全国各类会议作专题报告近30次。

3加强团队建设

目前我院数据结构与算法教学团队共有5位主讲教师,其中教授2人,每50名学生配一名助教(博士或工学硕士)。该教学团队主要由30~40岁的年轻教师组成,尽管精力充沛,工作热情很高,但教学经验尚有欠缺。团队建设是本课程建设的重中之重,要把提高教师的综合素质和教学科研水平,强化教师的责任心放在首位。坚持教学与科研相结合,以国家自然科学基金项目为依托,为提高教学质量,不断提高科研水平和能力;以国家特色专业建设项目为依托,加强教学研究,以理论指导教学实践,吸取好的教学方法和经验,不断改进教学方法和手段,迅速促进教学团队成长。

在青年教师培养方面注重教学和科研能力的同步培养。要求青年教师在首次上课之前听课助课,培养基本教学能力;实行集中备课,统一课件,互相监督,保持教学一致性和教学内容一致性;定期召开教学研讨,及时总结教学经验方法,教授言传身教;以特色专业建设项目为依托,鼓励青年教师开展教学研究,以部级项目为依托开展科研课题研究。青年教师成长迅速,已具备一定的科研能力,教学效果良好,学生满意超过90%;获得校教学质量优良奖,青年教师讲课竞赛二等奖,多媒体课件二等奖等多项奖励,已经成为学院的业务骨干。

4深化教学改革

4.1不断探索新的教学模式

1) 实践性教学。

实践是获得真知的根本源泉,主动探索真知是研究型人才的基本素质,我们在基础课中的创新能力培养主要体现在,让学生在自由的实验环境中积极实践、主动探索,自己发现新的知识和理论。如图2所示,在实践环节建设方面,建立书面作业,上机作业和课程设计3个层次的实践教学环节,以通过书面作业形式消化理解教学内容;通过上机作业培养动手能力,将课程单元知识转化为实际技能;通过课程设计培养解决实际问题的能力,融会贯通本课程的知识。

为了满足强化实践的教学要求,本课程团队经过多年实践,精选、整理了包括卡内基梅隆大学、斯坦福大学、麻省理工学院等国内外著名大学教授布置的实践作业,结合我们的教学要求,每学期给学生布置18道有一定创新性的上机题目。这些题目既反应了数据结构教学的基本知识,又来源于实际应用。达到了理论和实践的完美结合。本课程实践教学和理论教学环节的学时比例为1.5∶1。经我们多年实践,这个比例符合我国高等教育实际,达到了良好的能力锻炼目的,值得推广和借鉴。

2) 研究型教学。

在研究性理论教学方面,以教学大纲为主线,整理数据结构领域的经典论文,以提出问题为课堂教学的第一步骤,引导学生思考,将科学家的研究方法和研究思路融入课堂教学中。依托科学研究项目,提出本学科领域的最前沿课题,鼓励学生思考并解决。对有明显创造性的成果可以在教师指导下撰写学术论文。

将研究型教学融入数据结构实践教学课堂,鼓励学生从解决问题的角度研究如何设计数据结构与算法,在传授基础知识的同时注重创新性思维方式的培养,发现问题和解决问题能力的培养。

4.2全方位的课程改革

课程建设的核心是提高教学质量。为提高教学质量,我们从教学内容、教材、教学方法和手段、考试方法、实践教学等方向进行了全方位的改革。

1) 教学内容改革。

课程组参考国内外其他院校本课程的教学大纲和优秀教材,对数据结构课程的教学大纲进行了多次修订,逐步稳定了理论教学的教学内容、教学要求,细化了教学目标,明确了教学任务、教学内容、教学重点和难点、不同知识点的掌握程度。理论教学采用以共性化课堂教学为主,并利用辅导答疑和实践教学组织以学生为主的个性化教学,培养学生创新能力,辅助课堂教学。在教学过程中采用启发式教学方式,即注重学生基础理论知识的掌握,也注重学生分析问题、解决问题等基本能力的培养。

为了配合理论教学,我们也多次修订了实验大纲,使实践内容更加符合专业的发展和其他各方面的要求,并且与前序课程和后继课程很好地衔接。在实践环节中注重学生能力的培养和科学的开发方法的培养。实践教学内容采用梯度组织,具有不同的难易程度,方便学生巩固学习和拓展知识。

2) 教材选取。

目前本课程使用教材为高等教育出版社出版的《数据结构与算法》,许卓群、杨冬青等编著。该教材除了讲授基本数据结构外,突出作为面向对象程序设计的基础概念――抽象数据类型,强调算法与数据结构的密不可分性、封装性等;在处理知识面的宽度和知识点的深度上,既满足作为基础课的要求又达到一定的水平,完全适合本专业对人才培养的要求,是普通高等教育“十五”部级规划教材。目前课程组已经开始着手准备根据我们自己的教学特点、专业要求等实际情况自主编制一套教材。

3) 教学方法改革。

(1) 启发式教学:学生的主动性是学习,我们在教学过程中注重启发学生的思维,采用循循善诱的方式引导学生自己发现问题,并逐步解决问题,培养学生思考问题、分析问题和解决问题的能力。这极大调动了学生的主观能动性,培养了学生分析和解决问题的能力。

(2) 共性化与个性化相结合教学:从教学形式上,我们积极探索新的教学方法,以便能够调动和发挥学生的主观能动性。具体有以教师为主体的课堂教学、习题课等共性化教学环节,也设置了答疑p质疑等教学环节,引导鼓励学生通过实践和自学获取知识。共性化与个性化相结合,既可以起到教师主导作用,也可以满足学生个性学习的需求。

(3) 理论与实验相结合:数据结构课程主要介绍数据的逻辑结构、物理结构以及算法。算法的思想需要通过一种程序设计语言加以描述并在计算机上实现。我们在重视理论教学的同时,也很注重实验课,注重学生灵活应用知识能力的培养。理论与实验相结合,可以使学生更好地理解“数据结构”的思想与概念。

5丰富教学资源

建立本课程网上课堂及在线智能教学系统。网上课堂设计的目的是能够给不同层次、不同需要的学生提供帮助,提高教学质量。根据网络教学环境的要求,

系统主要包括课程概况、师资队伍、教学资源、实验指导、教学录像、课程扩展、课程论坛等多个模块。系统主要具有以下特点:

1) 在线学习。

知识内容结构化,主体结构采用网页形式组织教学内容,以单元、章、节等知识点为中心组织教学,以关键词或标题为线索进行任意的查找。各知识点在整体上搭建框架式结构,思路明晰;在细节上环环相扣,前后关联紧密,便于学生更好地理解和掌握知识要点。

2) 动画演示。

以数据结构部分的讲授为例,这部分内容包含许多的算法,其描述大多数采用类高级语言的形式进行,有些算法无论是时间复杂性或是空间复杂性都比较高,采用动画的形式将算法的执行过程和思想呈现给学生,使学生很容易理解这一过程,再配上教师的解释做旁白,可产生与上机亲身实践和跟踪执行相似的效果。

3) 在线测试。

用数据库对练习题和模拟题进行有效的管理,在学生进入到考核子系统后,能交互式进行试题的选题与答题。当学生提交答卷后,系统又能对答分进行自动评判,并给出相应正确的答案和综合得分。

4) 课程扩展。

为更好地促进教学,本课程在巩固基础知识,提高实践能力的基础上,对学有余力的同学扩展了本课程的内容。引入了卡内基梅隆数据结构教学网站,这是一套全英文系统,上面提供了丰富的工程性题目训练,更加注重数据结构算法在实际中的应用,让学生开阔了思维和眼界;还为学生提供了ACM竞赛以及大连理工大学程序设计竞赛的模拟题库,通过这些略有难度又很新颖的题目进一步提高学生的学习兴趣,培养其解决实际问题的能力。

6结论

在近几年的课程建设实践中,我们的任课教师认真组织教学内容,与实际相结合,积极探索有效的教学方法,利用多媒体技术动态演示复杂数据结构的变化,并补充学生比较感兴趣的知识,拓宽学生的知识面。逐步完善和充实现有课件,做到内容充实,画面生动,具备声像效果,收到了很好的教学效果。作为计算机科学的核心内容,数据结构与算法的理论研究及应用研究一直在不断发展,在以后的工作中要注重研究型教学,鼓励学生从解决问题的角度研究如何设计数据结构与算法,并将学科领域经典研究成果和最新研究成果及时地反应在课程教学中,相信数据结构与算法这门课的教学效果和教学质量在我们持续深入的教学改革中会越来越好。

注:本文受教育部第二类特色专业建设项目――软件工程特色专业建设项目资助。

参考文献:

[1] 严蔚敏,吴伟民. 数据结构[M]. 北京:清华大学出版社,2002.

[2] 殷人昆. 数据结构(用面向对象和C++描述)[M]. 北京:清华大学出版社,2007.

[3] 殷人昆,邓俊辉. 清华大学“数据结构”精品课程建设[J]. 计算机教育,2006(5):20-22.

[4] 钱红兵,唐发根. “算法与数据结构”课程教学体系的建设[J]. 计算机教育,2009(17):65-66.

Development of the Data Structure and Algorithm Core Course

LIU Xinyue, ZHANG Xianchao, YU Hong

(School of Software, Dalian University ofTechnology, Dalian 116620, China)

Abstract: Regarding the theory-touch-practice characteristic of the Data Structure and Algorithm course, this paper points out that the development of the course should constantly consummate the curriculum, energize team building, deepen teaching reformation and amplify teaching resources. Starting with cultivating students’ interests, we focus on development of students’ thinking, programming and innovation, thus the teaching quality is enhanced.

数据结构与算法范文第6篇

关键词 算法与数据结构 理论教学 教学技巧

中图分类号:G424 文献标识码:A

Discussion on Algorithms and Data Structures Theory Teaching Skills

ZHOU Zhanglan

(College of Computer Science, Yangtze University, Jingzhou, Hubei 434023)

Abstract In the "Algorithms and Data Structures" course, theoretical teaching is very important. In order to obtain a limited teaching good teaching effect is not easy. This understanding of knowledge points respectively, classroom inspiration, knowledge and consolidation of four aspects of the introduction of certain teaching techniques introduced in order to achieve the full content of classroom teaching, active classroom atmosphere, enhance students' interest in learning.

Key words Algorithms and Data Structures; theory teaching; teaching skills

算法与数据结构是计算机专业重要的核心课程之一。该门课程中涉及众多复杂而抽象的概念、算法,多数学生表示学习起来感觉较为枯燥。对主讲教师来说,如何让学生在有限的理论课堂教学中掌握所有知识并灵活应用是不容易的。当然,现在有很多教学手段可以达到增强教学效果、吸引学生注意力的目的。比如,在教学过程中引入精美的PPT课件、动态教学演示系统等。但是,这些手段都只能起到辅助教学的作用。教师在充分利用这些教学工具时,更应该发挥操控者灵活处理问题并解决问题的能力,以达到更加完美的教学效果。本文就课堂教学中的几点经验进行总结,以供探讨。

1 生动的语言,形象的比喻——知识点的理解

算法与数据结构课程中的知识点,尤其是每章涉及的重要概念和算法对于初学的学生而言不太容易接受。为了使学生能在课堂教学中尽快地理解和掌握这些知识,教师在教学中运用生动的语言和形象的比喻往往能够起到较好的作用。首先,关于上课的语言问题。作为一门专业课程,特别是计算机专业的核心课程,教师的授课过程总体来说应该是严谨的。专业课教师是不可能把授课对象当成小学生,然后用活泼的语气配合可爱的动作来讲解的。因此,这里提到的“生动的语言”包含两方面的内容。一方面指教师授课的语气,不要让整堂课总是一板一眼像作报告一样,在重点需要强调的地方适当加重语气,或者停顿后再次强调,抑扬顿挫的语气更能使学生提高注意力和关注度。另一方面是教师的肢体语言,在加强语气的同时配合相应的手势等肢体动作。当然,这方面与教师的个人授课风格有很大关系。

其次,形象的比喻。本课程在学习中涉及的知识点较多,学生首先要在对概念的充分理解的基础上,才能进一步学会灵活应用。为帮助学生更好地理解有关概念,可以引入生活中常见的问题做比喻。下面以在课堂上讲解链式存储结构与顺序存储结构的区别为例,说明引入适当的比喻有助于学生对两者的理解。由于链式结构不需要预先指定存储空间的大小。因此,插入和删除等操作都较为容易,特别是插入操作不存在扩容问题。而顺序结构则需在初始化阶段申请指定大小的存储空间,只有在申请成功之后才能进行其它操作。在进行插入或删除操作时都可能要移动其它元素的位置,而且当进行插入操作时,若初始空间不足还会出现需要扩容的问题。为了帮助学生理解这两种存储结构的特点,可以引入这样的比喻:顺序存储就像上课之前需要申请教室,有多少个学生就需要有一个能容下所有学生的教室。当然,在进行具体配置时要求教室的空间只能大而不能小。比如,上课的实际学生人数为60人,分配的教室为100座,而且一个学生对应一个固定的座位。当加入的听课人数超过100人时教室里的座位显然就不够用了,为了满足需求需要更换一个更大的教室。函数realloc能将已分配内存区的大小改为指定大小,①可以用来实现这一扩容操作。链式结构则不然,在进行具体配置时其空间就像是一个露天会场。进入会场的每一个人都自带一个小板凳,当人走时小板凳也被同时带走。只要不存在会场空间不够(相当于内存分配单个结点空间失败)的情况,容纳的人数是没有固定限制的。现在再来分析一下两种存储结构在操作上的不同。顺序存储的空间分配是固定的,就像教室里的固定座位。当有一个同学需要插到某一个位置坐下时,若此位置已坐人,其他同学则需要通过陆续移动为他腾空一个座位;而链式结构则不同,由于每个人都自带小板凳,只要会场有空间就能容纳新来的人。新来的人只需要把要插入的位置告诉排在其前面的人就可以了。当然,不是所有的重要知识点都能找到合适的比喻,这需要教师在备课时多思考,并在教学中灵活运用。

2 恰当的提问——课堂启发

在授课过程中,活跃的课堂气氛需要教师和学生之间的良性互动,而提问是一个很好的实现互动的方法。但是以什么方式提问、怎样提问还是有一定讲究的。首先,关于提问的方式。对于大学课堂来说,点名回答或自愿回答都可能会出现学生不配合的情况,毕竟大学生和中、小学生是不同的。因此,教师需要预先做好自问自答的准备。提出问题后,要留给学生一定的思考时间。若在这之后有学生能主动给出较好的解决方案,则应给予及时的鼓励和赞扬;反之,教师需要自己给出一个粗略的解决思路,将疑问留给学生并促使学生继续思考。其次,关于提问的内容。提问需要占用课堂教学时间,因此提出的问题应当是最重要、最具有启发性的。比如,以单链表基本操作插入算法②为例:

Status ListInsert_L(LinkList &L,int i, ElemType e){

p=L; j=0;

while(p&&jnext;++j;}

if(!p||j>i-1) return ERROR;

s=(LinkList)malloc(sizeof(LNode));

s->data=e; s->next=p->next;

p->next=s;

return OK;

}

对于算法中“if(!p||j>i-1) return ERROR;”这条语句的作用很多同学在初学时并没有真正了解,只是在具体实现时生搬硬套。为了引起学生的注意,教师可以在上课时现场运行此算法,并在去掉此语句后输入数据进行验证。例如,给i赋一个不超出线性表长度的合法的值,这样不影响输出结果,提出这句是不是可有可无的问题,然后留下疑问让学生去思考。当然,在下次解答时要对这类问题进行总结,强调错误处理在编程中的重要性。

3 有趣的例子——知识点的引入

在专业课程的教学中就其知识点来说是较为枯燥的,为了让学生在刚开始学习新内容时就能激发出学习的兴趣,可以通过引入具体实例来达到目的。例如,以循环链表的使用为例。在讲授什么是循环链表之前,先给出一个“约瑟夫问题”游戏的例子,通过这个游戏提出问题:若使用已经学过的单链表是否合适。如果不合适,具体在什么地方不合适。然后引入循环链表的概念,并以此例子来说明循环链表的意义和具体的操作方法。另外一个比较典型的例子是用铁路调度站表示“栈”问题,这也是一个很好的利用生活中的实例来引入知识点从而引起学生兴趣的例子。尤其是在对“栈”的先进后出特性讲解时具有很好的效果。当然,例子的引入要恰如其分才能起到正面作用,过于简单或不合适的引用反倒会引起学生的反感,甚至成为笑话。

4 编程演示——知识点的巩固

在算法与数据结构课程中涉及到了大量的经典算法,比如最短路径、关键路径等。对于学生来说掌握其原理就可以知其应用。但是,对有些需要灵活使用的知识点仅讲解原理是不够的。为了能让学生深刻理解并熟练掌握,可以在课堂上编程逐步演示其实现过程。比如,“树”这一章的内容涉及的概念较多,它又是学生学到的第一种非线性结构,相比之前的线性表实现起来更复杂。因此,教师在初次讲解时很有必要在课堂上将二叉树的创建过程动态地演示给学生,这其中包括顺序存储和链式存储。当然,演示过程最好不是已经写好的完整的程序或演示系统成品,而是采用边讲解边书写的方式,使学生更容易了解编程的过程。为了节省课堂时间,可以先写好程序框架,比如程序包含的头文件、所需结构体类型、主函数、输出函数等在讲解过程中简单带过,而重要函数的核心代码则边讲边写。这样不仅可以增强学生的学习兴趣,促使学生自己去编程实践,更重要的是可以让学生非常清楚地了解实现的过程。当然,这很考验教师的编程能力,因为在课堂上临时写很有可能因为一时大意使得程序运行出错而陷入尴尬的境地,从而影响课堂教学的完整性和完美性。但教学的目的不是让教师去展示个人风采,而是讲授知识。从另一方面来讲,学生也是宽容的。教师偶尔的一次失误不仅不会影响其权威性,反而更能让学生感受到亲切而真实。

算法与数据结构作为一门重要的专业课程,要想取得良好的教学效果还需要多方面的配合。当然,作为主讲人的任课教师对课程的教学起到了决定性的作用。除了依据授课对象的特点合理安排教学计划、教学内容外,把握好有限的理论课堂教学,利用各种方法和手段将理论知识讲解清楚,使得教学内容生动、课堂气氛活跃、学生学习兴趣浓厚是很重要的。这不仅能帮助学生更好地掌握本门课程的理论知识,更能为学生在后续学习中进行具体实践打下良好的基础。

注释

① 谭浩强.C语言程序设计(第二版)[M].北京:清华大学出版社,1999:387.

数据结构与算法范文第7篇

关键词:数据结构;算法;教学策略

数据结构与算法是计算机专业的一门核心课程,不仅是程序设计的基础,而且是设计和实现编译原理、操作系统、数据库系统等系统程序和大型应用程序的重要基础。本课程主要研究非数值计算的程序设计问题中所出现的计算机操作对象、数据之间的关系、数据的操作、算法复杂性分析等内容,教学的突出难点是知识的抽象性和动态性,学习过程也是复杂程序设计的训练过程,理论性和实践性均较强。由于学生基础知识不牢固,再加上课程本身内容抽象,有一定难度,学生普遍反映该课程“难懂、难做、难用”。针对这个问题,本文从教学方法、学习方法入手,进行了教与学的分析和探讨。

1教学存在的问题

1.1先导课程不扎实

数据结构与算法课程的先导课程有高等数学、高级程序设计和离散数学等。学生在学习该课程前必须能够较好地掌握这几门课程。例如,算法分析的研究必须要以一定的数学理论为基础;非线性结构的分析必须用到图和树的基本知识。另外,数据结构中的算法大多由类C、C++或C语言描述而成,虽然C语言在高级程序设计课程中已经学习过,但由于学生刚刚开始接触高级程序设计语言,难度较大,用起来就比较困难。尤其是指针、结构体部分是C语言中学习的难点,而这些又是在数据结构中频频出现的用法,学生遇到算法时往往感觉很吃力,实验课也遇到很大困难。在数据结构课堂教学中,老师往往要花一部分时间在C语言的复习上。尽管如此,学生仍然模糊不清,教学效果不理想,久而久之,有些学生甚至失去了学习兴趣。因此,先导课程掌握不扎实,给数据结构课程的教学埋下了隐患。

1.2课程内容抽象复杂

课程主要介绍两部分内容,一是数据结构,二是算法。数据结构部分包括线性结构、树形结构和图形结构,教材都用抽象数据类型描述,内容抽象不生动,加之学生C语言基础不牢固,理解类C语法困难,因此学起来比较吃力。而算法部分在数据结构基础上展开,包括排序算法、查找算法等,是栈、图、树等数据结构的综合应用,虽然这部分有很多实例辅助,但这些算法涉及的知识较多,都是基于数学模型及其基本操作基础上的研究,而且主要是基于算法思想的研究,不易理解,因此相当一部分同学学习到这里时,心理上感到恐惧,难度非常大。

1.3实践能力缺乏

数据结构与算法是一门理论与实践并重的课程。课程的教学要求之一是训练学生进行复杂程序设计的技能和养成良好程序设计的习惯,其重要程度决不亚于知识传授。对涉及的题目,要求学生要能用相应的数据结构和算法解决,提高分析和解决问题的能力。因此在整个教学过程中,完成上机实习是个至关重要的环节。假设每周授课学时为4学时,那么学生每周至少应有4个机时同步实践算法。但是,在实际教学中,实验平均每周1.2机时左右,缺少的时间只能靠学生课后自觉完成,但是多数同学不能完成。由于实践辅助不足,理论课上的算法也就变成了“纸上谈兵”,学生学得肤浅,也比较枯燥乏味,对刚刚接触这门课的学生来说,总有一种不知所措的感觉,教师在讲授这门课时也是困难重重,成绩平平。

2提高教学效果的思考

2.1重视前导课程的复习

牢固的前导课程知识是学习数据结构与算法的前提条件。离散数学是计算机科学的数学基础,所提供的训练十分有益于提高概括抽象能力、逻辑思维能力、归纳构造能力,有益于培养学生严谨、完整、规范的科学态度。因此,学好离散数学将为后续课程的学习打下扎实的基础。在教学中,教师可以对部分前导课程内容加以复习,这样学生一方面感受到前导课程的重要性,一方面又建立起前导课程同数据结构的内在联系,对学生学好数据结构起到积极的作用。

另一门非常重要的前导课程是高级程序设计,其中C语言的结构体和指针是描述存储结构的基础,灵活地运用指针可以处理各种复杂的数据结构。在教学中,教师要从注重语言语法转变为注重学生编程能力的培养,要统筹安排各部分内容的授课时间,保证指针、结构体和函数等内容有足够的教学时间。由于C语言学习一年后才开设数据结构与算法,因此在开展数据结构教学时,要给学生复习C语言的知识,并布置复习任务,尤其是与数据结构相关性大的部分。在教学过程中,教师可以结合学生的学习状况和相应算法,再适当补充必要的C语言知识,抓住两门课程的衔接点实施教学。例如,要重点复习数组、结构体、指针等在程序中的具体应用,用一周的时间回顾C语言知识,让学生上机实验。

2.2理清知识体系脉络

数据结构与算法的知识点虽然比较多,但其主体知识框架是非常清晰的。大多数教材都以数据的逻辑结构为主线,顺序介绍线性结构、树形结构、图形结构和文件结构,介绍每种数据结构时都讨论其存储结构及相关算法。例如对于线性表,如果考虑到存储,可以分为数组方式存储和链表方式存储;考虑到运算的特殊性,则可以分为栈、队列、串、数组和广义表。对于一些比较重要的算法,再列出单独的章节来讨论,例如排序、检索、存储管理等。每个章节之间既相互独立,又相互联系。教学中,教师要抓住主线,理清其内在联系,对整个内容进行有机组合,合理安排,了解课程的知识框架和各种结构的关系后,从简单到复杂、循序渐进、逐步深入地实施教学。

对于每个章节的内容,也应按照一定的流程展开学习。例如,首先掌握每章节的基本概念,再熟悉该结构的抽象数据类型定义和主要操作的实现方法,然后要理清算法实现的思路以及算法实现的框架,最后通过上机调试进一步掌握该算法。

学生对学过知识的印象是分散的、片面的,无法将知识衔接起来,举一反三。这就要求教师在教学过程中承前启后、不断总结、及时复习、注重理解。以链表学习为例,在线性表章节学习了单链表、双链表及循环链表,它们三者是相互关联、层层深入的。而后面章节中树的链表表示法、图的邻接表和逆邻接表表示法、链地址法解决哈希表冲突都是链表的具体应用。在授课的时候,教师应注意复习前面的内容,把有联系的内容相互串联起来,使学生形成一个完整的知识体系。

在教学过程中,教师不必拘泥于教学大纲的内容,可以对教学内容进行有机整合,并不断吸收新内容、新知识和考研内容。可以对教学内容进行适当的拆分和重组,做到突出重点、细化难点。

2.3重视课堂教学的趣味性

数据结构与算法的内容比较抽象,在讲授第一节课时,教师应首先强调应用,通过介绍数据结构的实际应用激发学生的学习兴趣。例如,针对学校的学生管理系统,如何实现学生信息的快速查找;一家人出门旅游,如何选择线路才能最节省开支;一个复杂的工程,如何管理才能实现最短工期;智能汉字输入法中怎样实现常用字的前置;还有经典的农夫过河问题、猴子选大王问题、迷宫问题等,这些问题趣味性比较强,能激发起学生探究如何解决这些问题的愿望以及学习数据结构相应知识的愿望。兴趣激发起来了,就形成了一个良好的开端。

数据结构与算法范文第8篇

关键词:数据结构;案例教学;教学设计

数据结构与算法是教育部规定的高等学校计算机科学与技术专业的一门重要的专业主干课程。它是介于数学、计算机硬件和计算机软件三者之间的一门核心课程,是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础,在计算机专业课程设置中起着承上启下的作用。由于该课程的理论性强,数据结构复杂,算法知识抽象,很多知识的讲解使用传统的“粉笔+黑板”的模式难以把问题表述清楚,教学难点不容易突破。为弥补传统教学方式的不足,解决数据结构与算法教学过程中的困难,我们在教学中引入了案例教学法。

基于各种理论和相关实践,人们对案例教学法的界定也各有侧重。舒尔曼(Shulman)认为,案例教学法是利用案例作为教学媒介的一种教学方法[1]。在教育学中,人们将案例教学法定义为教学中的案例方法,是指围绕一定的教育目的,把实际教育过程中真实的情景加以典型化处理,形成学生思考和决断的案例,从而提高学生分析问题和解决问题能力的一种方法,它既包括了一种特殊的教学材料,同时也包括了运用这些材料的特殊技巧[1-2]。简言之,案例教学法就是利用案例作为教学媒介的以提高学生综合能力为目标的教学方法[2]。针对传统教学法中存在的问题,在基于案例的教学方法的指导下,结合我院学生实际,贵州师范大学数计学院数据结构与算法课程团队的老师们提出了“精选典型案例―设计生动课件―激活课堂教学”的三阶式教学设计观点,在实际运用中很好地调动了学生学习的积极性,激发了学生的求知欲,使教师的“教”与学生的“学”做到了思想上的统一,从而实现以教师的“教”为引导达到以学生主动地“学”为目的最终目标[3]。

1传统教学过程中存在的问题

笔者教授数据结构与算法课程已有十年的历史。对该课程的教学在多年的努力中逐渐走向了成熟,完成了从教学技能型教师到教学研究型教师的转变。经过多年的观察和近年来的教学实践研究,我们发现所有计算机专业的学生都知道这门课程的重要性,也迫切希望能学好此课程。每当给一个新班级上第一节数据结构与算法课时,总能感受到学生们的学习热情,看着同学们全神贯注的样子,责任感、使命感、自豪感和工作激情一下子就涌遍全身。但两三周后,同学们的脸上就再也看不到那样的表情了,课堂上取而代之的是一种困惑、没有学习积极性、盲目无奈的眼神,自我感觉讲得非常成功的课也提不起学生们的兴趣。这种让人担忧的现象引起了我们的高度重视,学院出资建立了数据结构与算法的课程教学团队,团队教师从教学中存在的问题入手开展了数据结构与算法课程的教学改革研究工作。研究发现,传统教学过程中表现出来的问题根源主要来自于以下三个方面。

1.1来自学生“学”的问题

学生的学习动机和学习兴趣是最关键的问题,内因是解决问题决定性的因素。学生们所表现出来的学习热情呈急速下降趋势的原因有来自心理的,也有来自课程内容和学习方法等方面的,具体表现为:1) 觉得算法理论太抽象,逻辑性太强,难理解、难掌握,产生了畏惧感;2) 内容多、概念多,学习中难以把握整体内容,学完后不知道到底学了些什么;3) 感觉在课堂上思路跟不上,难以消化;4) 不知道学习算法在实际中有什么用,逐渐失去了学习兴趣;5) 不重视上机实验,觉得能读懂算法和书面编写的算法就可以了[4]。

1.2来自教师“教”的问题

1) 教学难度大。目前,数据结构中的算法大都由C、C++语言进行描述。首先,学生对C或C++语言中的函数、指针和结构体、类等知识点本身理解就不够,一下子跨度到数据结构,学生难以接受。其次,本课程要求学生在理解数据逻辑结构、存储结构等基本概念的基础上建立相应的算法,并掌握对数据以及数据之间关系的处理方法。但是这些基本概念和数据在内存中的表示等知识非常抽象,学生很难建立起概念模型[5]。

2) 教学方法有待改进。在课堂教学过程中,过于强调教师讲授的作用,由于教师占用了大量的课堂时间进行讲解,学生只是被动接受,忽视了学生主观能动性的发挥,没有注重培养学生独立自主的学习兴趣和能力,导致很多学生学完本课程后不能掌握数据结构的实质,知识零散,不具备总结并贯穿所学知识的能力,不能把所学的知识和方法应用到实际问题中去,不会分析问题,不会将抽象问题建立数学模型[6]。

1.3其他方面的原因

先行课程不扎实。高等数学、程序设计和离散数学等为数据结构与算法课程的先导课程。要想学好数据结构与算法,首先要求学生能够较好地掌握这些先导课程,具有一定的学习基础。其中,程序设计课程的学习质量对数据结构与算法课程学习的影响最为明显。由于教学条件、非高考科目等原因,大多数学生进大学前都没有接触过程序设计。因此,第一次学习程序设计时,对计算机语言的许多约定理解得不是很透彻,用计算机解决问题不可能得心应手,更谈不上把所学的知识融会贯通。由于其前导课程掌握不好或没能熟练掌握,导致学习数据结构与算法课程困难是一个比较普遍的现象[7]。

另外,教学学时数少也是一个重要的客观原因。许多高校由于教学改革,对包括本课程在内的许多专业课时都进行了压缩。针对涵盖面广、抽象复杂的课程内容,有些教师为了赶进度不得不仅限于知识点的介绍,没办法深入讲解,帮助学生加深理解。

2三阶式教学设计

针对目前数据结构与算法课程教学中存在的问题,近年来我们团队提出了三阶式教学设计的观点,在教学实践中取得了很好的效果。

三阶式教学设计是将教学设计分为“精选典型案例―设计生动课件激活课堂教学”三个阶段来完成。第一阶段:根据教学内容精选典型的教学案例;第二阶段:将已确定使用的教学案例设计制作成表现力强、生动直观的多媒体课件;第三阶段:研究在实际教学中如何将传统教学与多媒体课件有机结合,适时地进行动态演示,充分调动学生的兴趣,激发学生的求知欲,提高他们的积极性和主动性。

2.1精选典型案例

案例是案例教学的核心,案例选编是一项重要的工作。要选择真实、基础、本质的东西作为教学内容。在选择案例时要注意2个问题,一是要根据教学内容选择案例,也就是说案例中只涉及学生已学过或即将学到的知识;二是根据学生的素质情况,选用难易相当、繁简相宜的案例,切不可好大喜功,贪全求深[8]。

教学案例既可直接选用传统的典型案例,也可自行编写。例如,在讲解栈的应用时,我们直接选用了迷宫求解典型案例。即:使用顺序存储结构下的栈通过“穷举求解”的方法求迷宫中从入口到出口的一条简单路径[9]。

2.2设计生动课件

数据结构与算法范文第9篇

关键词:数据结构;算法;换位思考法;问题求解

数据结构与算法是计算机科学与技术专业的核心基础课程之一,同时,它也是算法分析与设计、操作系统、软件工程、数据库概论、编译技术、计算机图形学、人机交互等专业基础课和专业课的先行课程。本课程主要以抽象数据类型为主线,研究常用数据结构的逻辑结构、存储结构及其所支持的运算操作;研究能够解决实际问题的经典算法;学习基本的算法分析方法。它为学生后续课程的学习以及进行计算机软件的设计和开发打下良好的基础。

1教学过程中存在的问题

数据结构与算法课程是计算机专业教学的难点。在教学过程中,我们发现学生对这门课不仅感到入门困难,而且难于驾驭,其主要表现有以下几点。

1) 高职高专学生的先导知识学习储备不足。由于高职高专的教学以“理论够用”为教学原则,因此,学生掌握基础理论知识的程度无法与本科院校学生相比。例如,数据结构与算法需要学生具备结构体类型和指针的知识,甚至能够掌握内存模型的运行机制,而对于高职高专学生来说,其先导课程C语言程序设计属于非重点或选学内容。

2) 概念过多,不利于高职高专的学生掌握。本课程涉及的基本结构包括顺序表、树、图,以及查找、排序等算法内容。特别是树和图两项内容包含大量概念和理论,其中许多必须掌握的内容使学生产生畏难情绪。

3) 高职高专学生在实践课中没有养成阅读英文文档的习惯。学习编程的最好方法是阅读和查看MSDN,但高职高专的学生英语底子差,不太愿意阅读英文文档,这影响了实践课的教学效果。

从高职高专院校的教师角度来看,存在以下问题。

1) 高职高专院校的老师的教学模式过于单一,较少传授学生解决现实问题的方法。在数据结构教学过程中,高职教师一般将授课重点放在讲授数据的基本结构上,选择的案例只能用于数据结构算法的验证和说明[1]。这种教学模式对高职学生非常不利,因为,仅从基本结构这个单一的角度进行教学,只能使大多数学生在学习过程 “依葫芦画瓢”,一旦遇到问题就束手无策,乃至产生畏难和厌学情绪。很多学生常常觉得教科书的内容与具体的项目设计相距甚远,给人一种无从下手的感觉。在学完数据结构与算法课程后,学生既不能灵活运用所学知识,也难以实现从数据结构基础知识的掌握到实际应用的飞跃,这与高职院校“实用为主”的教学原则不符,也不利于应用型人才的培养。

2) 高职高专院校的老师的教学手段丰富,但是往往不涉及具体问题的分析,以及基于问题提出对应的解决方法,只是一味地追求直观效果。有些老师甚至根本不讲数据结构的抽象表示,在数据结构算法的处理上也不考虑应用场合,而是直接提供代码给学生。当然,这样做似乎对初学者有一定好处,但无助于学生培养正确的思考方法,另外,它让学生只注重实现程序,而不考虑如何进行算法设计以及怎样选择合适的数据结构来表达自己的算法思想。我们认为,在“够用为度”的教学原则下,教师只能在教学内容上进行适当的删减,而不能仅局限于“简单地教,简单地学”。

3) 对于高职高专院校而言,很多老师不具备完整的教学体系思想,不知道如何处理数据结构、算法和实现代码之间的联系和区别。有些老师对课程内容的理解不够深入,特别是没有把理论与实际应用问题联系起来。这势必造成学生不能理解学习数据结构课程的意义,不能形成对课程内容的整体概念,也不知道学习这门课程有什么用,不知道这门课程在专业体系中的位置。对于高职学生而言,数据结构为什么存在?在项目实践中如何灵活应用?这些问题如果不得到解决,那么在高职院校开设这门课程就变得毫无意义。

2教学改革中的几点建议

对于高职高专院校的学生来说,提高他们的学习兴趣至关重要。虽然高职生的基础知识薄弱、学习动力不足、自信心不强,自我管理以及自我约束力较差,但是,他们思想比较活跃,动手能力和社会适应性较强。因此,他们更需要老师耐心、正确的引导。对此,我们可以从以下几个方面进行改进。

2.1激发学生的学习兴趣

“兴趣是最好的老师”。培养学生的兴趣和维持前期的学习热情,并让学生在以后的项目实践中主动运用本门课程中学习到的知识,这是每个高职教师的责任和义务。我们知道,在这门课程中存在很多经典算法,而每一个经典算法的背后都有一个计算机界的传奇人物[2]。例如KMP算法中的D.E.Knuth,最短路径算法中的Dijkstra,等等,他们每个人都有一个传奇人生,上课时,教师可以通过讲述他们对计算机发展所作的突出贡献,鼓励学生,激发学生的学习热情。而在实践课程中,我们主要采用“换位思考法”,锻炼学生独立编程能力。梁肇新在《编程高手箴言》一书中提到:我就是程序,程序就是我。学生在上实践课时,很多程序细节问题都搞不清楚,这严重挫伤了学生的学习积极性。由于这些编程问题不可能在上课时被一一解答,所以,学生只能通过平时积累和应用,逐步提高自己的动手能力。上这门课时,教师要多鼓励学生把自己想象成“编译器”,不要只是简单地把它作为一个工具,而要把我们的编程工具“人性化”,编程过程只是我们在和一个“法官”聊天而已,而这个法官又无比“公正”。如果把自己想象成“编译器”,在学习语法时就可以很好地进行“换位”思考,知道自己需要什么,如何做才能编译和调试成功,学习兴趣也会随之提高。

2.2选取合适的教学内容

高职院校在开设数据结构与算法课程时,考虑到学校和学生的特殊性,总课时一般安排为64个课时,理论和实践各32个课时。内容多、课时少这对矛盾如何解决?如何在比较短的时间内培养学生独立解决问题的能力?这都是值得研究和探讨的问题[3]。

众所周知,本门课程包括表、树、图3种数据结构,而每一种数据结构又包括3个方面的内容――逻辑结构/存储结构/操作实现;还包括两类典型算法――查找/排序。这么多教学内容不可能在一个学期内完全教授给学生,所以,我们对教学内容进行了适当的删减,以便重点突出。在不影响高职院校教学原则的前提下,我们将教学重点放在线性表结构和通过时间复杂度分析选择合适的数据结构这两部分内容上(如图1所示)。对于非线性结构这部分内容,我们着重

讲解概念,具体用法可以留给学生作为课外作业。这种选择可以使学生养成良好的思维习惯和正确的学习方法,以求达到“运用之妙,存乎一心”。

2.3巩固先导课程的基础

在先导课程C语言程序设计中,学生没有系统地学习结构体和指针类型,也没有掌握动态内存分配的知识,所以,在本门课程教学中必须首先弥补以前的不足,但我们又面临新的问题,即系统学习与学时数不足的矛盾。对此,我们有如下建议:讲解在运行期时程序在内存中的分布区域,以及各个内存区的作用就足够学生理解本课程知识(如图2所示)。图2中模型[4]的讲解适合贯穿整个实践课程的教学过程,把这个模型讲深讲透,让学生彻底掌握,有利于高职学生独立思考和解决问题能力的培养。这个程序内存分布模型可以很好地满足高职院校的教学目标,让学生在具备较强编码和调试能力的同时,又具备解决实际问题的思想和技术。

2.4传统和现代教学手段相结合

高职院校一般硬件设施齐全,教学条件优越,给教师和学生提供了现代化的教学环境。不可否认,现代教学手段具有生动、直观和信息量大等特点,对于提高教学效果有促进作用,例如,多媒体教学课件(PPT课件和Flas等)和丰富的网络资源,等等。从本人多年的教学实践来看,现代媒体对提高某些课程的教学效果作用显著,但对于理论性很强的数据结构等课程而言,只能起到辅助作用。事实上,美国数据结构教学仍以讲授为主[5],所以,传统教育手段对本门课程不可或缺。在本门课程中,讲解三种数据结构的概念和性质时,可以多用PPT等现代教学手段;讲解算法的动态变化时,多用黑板+粉笔头的方式演示其动态变化过程[6-8]。

2.5问题驱动教学法

福州大学吴英杰等老师[9]在该校引入面向问题的教学模式,取得了良好的效果。在高职院校采用该教学模式,选择的问题必须具有代表意义,足够简单而且能够帮助学生快速入门。从图3可知,在传统的教学模式下,教师只是按照“逻辑结构存储结构编程实现”的流程讲解,学生并不能理解数据结构的意义。如果采用问题驱动的教学方法,教师必须按照“问题定义算法设计选择数据结构”的流程讲解,这种讲解方法可以帮助学生很快抓住数据结构的精髓,了解算法与数据结构之间的关系。在教学实践中,我们选择了3个典型问题:最大子序列和问题、二分搜索问题和快速排序问题。选择这3个问题的根本原因在于它们只需要用顺序表或数组就可以实现;第1个问题的引入在于其历史发展过程符合我们的思维习惯,就是一个不断深入理解问题,不断优化的过程;第2个问题的引入在于90%的计算机专家不能在2小时内写出完全正确的二分搜索算法;第3个问题的引入在于快速排序算法的实现只能选择顺序表或数组实现,而不能选择链表来实现。通过上面3个典型算法的实践课,高职学生能够很快地掌握验证和优化程序以及选择合适数据结构实现算法思想等能力。

2.6调整实践内容,提高学生能力

如果实践课只是使用枯燥的控制台程序界面,许多学生很快就会失去学习的兴趣和钻研的动力。实践课应该生动、活泼、有趣,因此,我们在实践课中引入简单游戏开发项目,例如走迷宫和5子棋等游戏。这些游戏都用到了顺序表等简单的数据结构和查找等算法知识,完全满足高职院校的教学要求。在教学实践中,我们一般提供游戏的整体框架代码,要求学生独立完成算法设计和代码实现。我们之所以这样做,一是因为实践课只有32个课时,没必要让学生设计软件的整体框架;二是因为不能让学生产生“程序=软件”的错误思想。

2.7改变考核方式

数据结构与算法课程一般采用最终卷面成绩的考核方式。根据高职院校的教学原则,应加大实践课在最终成绩的比重。通过实践,我们发现阶段性成果

的展示和分阶段打分在教学中有良好的教学效果,通过这种考核方法,在平时即对学生从严要求,高职学生的综合能力得到提高,潜力也能得到充分挖掘。

3结语

作为一所高职院校,我院在数据结构与算法教学改革与实践中取得了一系列丰硕的成果。我院ACM- ICPC代表队在2007、2008、2009年度亚洲区现场赛中曾获得优胜奖,2007、2008年四川省大学生程序设计大赛中曾获得二三等奖。同时,计算机科学与技术系的普通学生的出勤率和及格率得到提升,学习兴趣也有所提高。

数据结构与算法课程尽管难教难学,但如果采用正确有效的教学方法+生动活泼的学习方式+严格管理的考核方式,仍然可以取得良好的效果。

参考文献:

[1] 周泽辉. 浅谈高职学院数据结构课程的算法驱动教学[J]. 科教文汇(中旬刊),2009(3):121-122.

[2] 苏前敏. 计算机科学技术史的独特教育功能探讨[J]. 上海工程技术大学教育研究,2007(1):20-23.

[3] 卢洁,冯家勋. 理工科课程教学整体改革探索[J]. 高等工程教育研究,2009(2):137-139.

[4] 钱能. C++程序设计教程[M]. 2版. 北京:清华大学出版社,2005:145-149.

[5] 严莉,杨宗凯,刘三 . 关于高校教师与网络教学的研究综述[J]. 电化教育研究,2009(4):39-42.

[6] 蔡敏,郑尚志,梁宝华. 数据结构课程教学改革之我见[J]. 计算机教育,2009(4):50-51.

[7] 张桂芬,李海滨. 数据结构实验教学的改革与探索[J]. 高教论坛,2008(3):103-104.

[8] 周玉林,赖鑫生. 数据结构教改中的问题研究与探讨[J]. 上饶师范学院学报,2008(3):84-88.

[9] 吴英杰,王一蕾,王晓东. 面向问题求解的实践教学模式:算法与数据结构实践教学改革[J]. 计算机教育,2007(7):29-31.

Suggestions of Teaching and Learning Data Structures and Algorithms on the College

FAN Jun-qing1, CHEN Wen-fei2, XU Xue-feng3, YU Xin-qiao3, HOU Zong-hao3

(1. School of Computer, China University of Geosciences, Wuhan 430074, China; 2.Department of Computer Science, Wuhan

University, Wuhan 430072, China; 3.Department of Computer Science, Chengdu Neusoft Vocational Institute of Information

Technology, Dujiangyan 611844, China)

Abstract: This paper discusses some problems existing in the process of teaching and learning Data Structures and Algorithms. Based on the practice and exploration of teaching reform for many years, some existing viewpoints and methods are analyzed critically in the teaching and learning procedure, and some issues are suggested to raise attention of experts and teachers. We hope that these suggestions would give the curriculum positive reference and promotional significances on the teaching reform.

数据结构与算法范文第10篇

关键词:数据结构;算法;教学改革;实践

中图分类号:G424 文献标识码:A 文章编号:1009-3044(2014)32-7677-02

Abstract: Data Structure and Algorithm is the core course of computer specialty, and plays a decisive role in the employment of students. This paper analyzes the teaching situation of the course at present, and summarizes some urgent problems to be resolved. The reform measures response to the problems above are described and practiced. This paper has certain reference meaning to teaching of Data Structure and Algorithm and the associated computer courses.

Key words: data structure; algorithm; teaching reform; practice

“数据结构和算法”课程涉及数据在计算机中的表示、组织与处理,以及相应的算法设计和算法性能分析,为计算机软件开发人员提供必要的专业基础知识和技能训练,同时也是计算机应用相关学科所必须掌握的课程。通过本课程的学习,使学生熟练掌握计算机程序设计中常见的各种数据的逻辑结构、存储结构及相应的运算,初步掌握算法的时间分析和空间分析的技术,并能根据计算机加工的数据特性运用数据结构的知识和技巧设计出更好的算法和程序,培养了大家数据抽象能力、算法构造性思维方法能力及逻辑思维能力,并进一步培养基本的良好的程序设计能力。其中的知识与方法,无论对学生进一步学习计算机领域的其他课程,还是对今后从事研究、应用开发及技术管理工作都发挥着重要的作用。但本课程理论性强,算法抽象,理解困难,不易掌握。该文针对高职的实际情况,对“数据结构和算法”课程教学改革进行了探索和实践。

1 教学现状分析

“数据结构和算法”课程历来被看作是计算机专业的教学难点。多年来,学生普遍感觉此课程学习困难、难以理解、不好掌握。主要有如下几个原因:1) 学生文化基础普遍偏差、参差不齐。学生入学成绩分数相对较低并且相差悬殊,对问题的分析能力、逻辑思维能力较弱,缺乏正确的学习方法。2) 自我管理和自我约束能力不强、缺乏学习的积极性和主动性。大学学习给予同学们的自学空间较大,管理方面也不如中学那样严格,从而导致学生上课听不懂、下课不愿学。3) 没有端正的学习态度。高职学生受到高中时个别老师的误导,以为上大学玩玩也可以顺利毕业,找到工作。同时也受到大学期间个别老师的误导,以为期末划划重点,最后突击,背背题目就可以过关。课上上网、玩手机、打游戏等等,课下不投入精力。4) 学生的计算机科学理论有所欠缺,对理论化的教学方法感到吃力。高职计算机课程主要以实用为主,课上理论讲授较少或几乎没有,学生对理论内容有畏难情绪,难以接受。5) 学生的前导课程基础不牢。学生普遍程序设计课程掌握的不好,没有养成独立的思维和良好的学习习惯,缺乏实际动手能力或动手能力不强。6) 实验内容设置不合理。实验大部分是验证性的,学生不需要自己去考虑各种可能的解决方案并找到最合适的方法,上机编程变成了简单的文字输人。7) 教师现场指导顾此失彼。由于学生人数相对较多,程序代码开发过程中学生问题各异,在课程有限的时间里辅导不能及时到位。8) 考核机制不完善,课程成绩主要是根据学生上机的出勤和提交的实验报告情况,再与期末考试结合给出,平时激励不到位,考核不合理。

2 教学改革与实践

通过上面对目前教学中存在问题的分析,我们明确了传统的课程教学已经不适应新形势的要求,实践动手能力欠缺,思维僵化和编程能力不强的学生,没有就业竞争力。这就要求数据结构和算法课程教师结合高职的实际情况,从数据结构的教学特点出发,明确教学目的,制订合理教学方案,强化学生解决问题的思维能力和实际动手能力,提高学生的编程能力,真正提高教学效果,最终提升学生的就业竞争力。针对以上问题,该文给出了如下的教学对策:

1) 针对高职学生文化基础普遍较差,学习习惯不好,自我管理和自我约束能力不强,缺乏学习的主动性等特点,我们在数据结构课程教学过程中引入了趣味教学,并加强教师与学生间的沟通。趣味教学旨在改变传统的教学方法和教学手段#活跃课堂气氛,把枯燥、抽象的知识通过某种有趣的、学生易于接受的方式表现出来,从而达到提高学生学习效率和教学质量的目的,它适合于任何形式的教学过程,特别适用于高职教育教学[1]。堆栈,是仅能在一端添加、删除对象的数据结构,我们可以以自助餐厅里的弹簧托盘举例,如图1所示。先来分析托盘的原理,在弹簧托盘上新增托盘后,整叠托盘重量增加,导致下面的职称弹簧被压缩,而整叠托盘的高度仍保持在一个固定的位置。拿托盘正好与此相反。之后让大家分析思考使用Java语言如何实现这样一个弹簧托盘。由于这个例子贴近生活,学生往往会有想法,课堂气氛活跃起来,能够开动脑筋,动起手来编码。实现了基本的弹簧托盘后,在引导学生一起实现一个自动弹簧托盘,让它能够给出目前的使用状态,比如有多少个托盘,托盘太多超过负荷或者没有托盘了要自动提示警告信息,让托盘变得只能起来,也就是实现我们讲授的堆栈。通过这样带有趣味性和贴近生活的例子,来调动课堂的活跃气氛,激发了学生的学习兴趣,提高学生学习的积极性和主动性,学生能够积极的预习、复习相关知识,逐渐养成良好的学习习惯。教学是一个双向互动的过程,教师在教学的过程中要从学生的实际情况出发,采用学生容易接受的教学方法讲授教学内容,才能形成良好的师生关系。教师课前备课准备好“问题”,课上通过问题引导学生积极思考,踊跃发言,将传统的“一言堂”编程“群英会”,激发学生学习的兴趣,鼓励学生之间的交流与沟通,营造融洽的课题气氛。只有这样学生对课程知识才更容易接受和掌握,才会取得良好的教学效果。

2) 针对学生没有端正的学习态度和对理论题目有畏难情绪的问题,在课堂上直接引入往届学生面试的试题或从《Java面试宝典》等书籍中挑选合适的例题来给学生讲解或让学生独立完成,比如图2中所示的题目。这个题目对高职学生有一定的难度,由于畏难情绪,大部分学生不愿意思考解答,对这种题目很是反感。但当你和学生们讲清是以后找工作的面试题时,他们明显产生兴趣,注意力一下集中起来,再加上老师在黑板上上画图分步讲解,能收到很好的教学效果。如果能将往届学生请入课堂现身说法,再加上平时课堂上对相关公司对需求人才的知识结构的宣传讲解,整个教学就能产生比较理想的效果。通过这样找工作面试直接相关的例子,来吸引学生课堂的注意力,激发学习兴趣,提高学生学习的积极性和主动性,让学生自发的产生学习的动力。

[在一个单链表中,若删除p所指结点的后续结点,则执行____。

3) 针对学生的前导课程基础不牢问题,加强对Java语言课程内容的复习和逻辑思维能力的训练。数据结构与算法课程的学习是一个承前启后的过程,如果没有学好Java课程,本课程的学习效果必将大打折扣。数据结构的算法中大量使用Java语言中的字符串、程序结构知识和集合类等编程基础知识,数据结构课程学习过程中主要就是运用这些知识点以及相关的逻辑思维能力来分析、解决问题。对于大部分刚学完Java语言的学生来说,在Java语言的运用和逻辑思维能力还不强的情况下直接切入主题,他们就会感到茫然。为了解决这个问题,在开课之初,利用一、两次课的时间来复习Java语言的相关知识,并引导学生训练课程中使用到的基本技巧和思维方式。这样才能为数据结构与算法课程的学习打下良好的基础。

4) 针对课程的实验内容设置问题,教学中要努力做到让实验内容尽量与工程实际紧密结合。数据结构是一门紧密结合实践,解决现实世界问题的课程,因此合理设汁实验对于学生解决实际问题的能力的提高有很大帮助[2]。教师在教学过程中一定要注重课程内容的实用性,并强调数据结构和相关算法的灵活应用。本人在教学过程中栈结构应用选取了迷宫问题作为教学考核案例,队列结构应用选取银行排队仿真系统作为考核案例,串处理应用选取文本编辑器作为考核案例,图结构的实现和应用选取旅游线路安排系统作为考核案例。通过贴近实际的案例,学生学到实用开发技能,并训练了将理论结合到实际项目开发中去的实用技能,才能取得较好效果。

5) 针对教师现场指导不到位的问题,我们采用分组教学模式。有学生组成4-6人为一组的学习小组,针对学生对所学内容不同的掌握程度,对学生区别对待,选拨知识掌握较好并有一定组织能力的优秀学生作为组长,让组长辅导组员,让优秀学生在帮助

别人解决问题的同时提高自己的能力,让他们带领组员共同开发,当组长不能解决时,再由老师解答。这样往往由于进取心和好胜心的趋势,作为组长的同学更能认真、踏实的学习,进步明显。而对与学习稍差一些的学生适当降低要求,并且让组长及时指导,增强他们学习的信心,他们也能迅速跟上。这样就照顾到了全班学生的不同学习情况,能让所有同学都能稳步提高。

6) 针对课程考核不完善的问题,我们采用多样化的考核方法。在数据结构与算法课程教学过程中实用了全方位、多角度的考核方式。我们把职业素养、实际操作、技能比赛相结合,把学院期中、期末考核与认证考试考核相结合,强调项目实践能力。考核时间由期中、期末这样的点拉长为过程考核的线,过程性考核与结果性考核相结合。考核主体由个人变为个人与小组考核相结合,并且自评、互评与教师评价相结合。多样化的考核让学生更充分的利用了在校时间,促进了学生的学习。

3 结束语

数据结构这门课程不论对学生学习还是教师教学都有一定难度,优秀的教学方法和高效的实施方案值得我们去研究。教学改革不是目标,而是一个过程,需要在教学过程中通过不断地探索、总结,形成一个集教学内容、教学方法、教学手段和考核方式等完整的教学体系,提高学生运用数据结构的知识分析问题、运用相应的算法动手编程解决问题的能力,努力提升课程的教学效果。该文分析了目前数据结构与算法课程存在的问题并给出了教学改革的举措并进行了实践,取得了一定的效果,下一步我们将本文的教学改革成果应用于移动教学平台上,期待能发挥更大的作用。

参考文献:

[1] 王剑, 钟元生, 罗成, 等. 高职数据结构课程趣味教学的实践[J]. 职教论坛, 2010(17):31-32.

[2] 申华, 肖莹莹. 数椐结构课程的实践性教学模式[J]. 计算机教育, 20l2(4):103-105.

[3] 唐玉媛. 高职院校数据结构课程教学研究[J]河北师范大学学报:教育科学版, 2009,11(04):127-129.

[4] 蔡红. 高职数据结构课程教学改革探索[J]. 中国职业技术教育, 2011(14):87-89.

[5] 陈广. 高职“数据结构”课程教学改革研究[J]. 教育与职业, 2011(27):35-36.

[6] 刘越畅,钟秀玉,钟志初,陈世基. 数据结构课程工程化实验教学的探索和实践[J]. 实验室研究与探索,2012,31(8):339-341.

上一篇:大数据时代范文 下一篇:数据类型范文