欢迎访问发表云网!为您提供杂志订阅、期刊投稿咨询服务!

数据结构课程设计大全11篇

时间:2022-09-21 04:09:47

数据结构课程设计

数据结构课程设计篇(1)

中图分类号:TP312.1-4 文献标识码:A 文章编号:1007-9416(2012)10-0212-02

1、课程教改的原由

我院C程序设计课程与数据结构课程是分上下学期开设的,将C程序设计课程作为数据结构课程的前导课,综合两门课程的教学效果,发现具有以下弊端:

首先,在C程序设计的讲授过程中,教师和学生会花大部分时间在基本概念、程序结构、数组上,而数据结构的学习必须以函数、指针、结构体为基础,这样导致学生在数据结构的学习上不能得心应手。

其次,两门课程分上下学期分开学习,导致教师在讲解数据结构时还要花时间复习C语言的内容,这样就使得数据结构课程的学时不够用。

最后,数据结构部分内容对于高职高专学生来说,学习难度大、实际应用不上。

基于以上原因,我院教师觉得两门课程的改革势在必行,于是,为了有更好的教学效果,缩短学时,提出将两门课程合并。同时这两门课程的教学内容相互关联也使这两门课程的整合具有了可能性和必要性。

2、课程整合设计的理念和思路

我们根据市场对高职人才的需求,着重培养学生的实际动手能力,把高职学生的培养模式与课程紧密结合起来。在整合过程中,合理地分配学时,注重内容的新颖和信息量,重新构建课程知识体系,重新制定课程标准,重新设计教学内容,编写适合本校学习学生的教材、实验指导书、课件。同时我们秉承“以知识学习为基础,以素质培养为目标,以能力训练为本位”课程建设理念,设定了课程改革的大致方向。具体表现在以下三个方面:

(1)将知识融入到任务中。知识是学生可持续发展的坚实基础,是学生能力提升的坚强后盾。学习知识的最有效途径是应用知识,做到“学以致用、用学结合、边学边用”。我们围绕知识教学为中心,选择富有特色的教学实例,通过任务驱动、案例促进知识学习。

(2)将素质的培养贯穿到整个教学过程中。在课程建设和教学过程中,强调学生形成良好的编程风格,具有良好的职业道德、严谨的思维能力;通过课堂实例的讨论,使学生具备良好的团队合作能力、较强的表达能力和良好的心理素质,激发学生的创新能力;通过作业和思考题的布置,培养学生自学和自我增值的能力。

(3)基于能力训练的项目设计。针对完成项目的过程,将程序设计能力分解为编写流程图能力、阅读程序的能力、按流程图写程序能力、调试程序的能力。我们在教学项目实践中设置了多个能力点,在项目设计时,要求每个项目实现过程的完整性,尽量覆盖每个能力点的训练。

3、课程整合措施

3.1 教学内容的整合

整个课程的教学内容以C程序设计内容为主线,将数据结构的内容渗透、溶入C程序的教学内容中,对于数据结构的内容以“必需、够用”为度。具体的教学内容包含:

(1)C语言和数据结构的基础知识:C程序编辑与运行环境、算法、流程图、数据类型、常量、变量、表达式与运算符,数据结构的基本概念和术语。

(2)顺序程序设计:格式、字符输入输出函数,顺序程序设计的应用。

(3)选择结构程序设计:关系与逻辑运算符、If、Switch语句。

(4)循环结构程序设计:while、do-while、for、break与continue语句的格式及其应用。

(5)函数:函数的定义与调用、函数的嵌套与递归调用,变量的作用域与存储类型,编译预处理。

(6)数组和结构体:数组和结构体的定义及应用;线性表的顺序存储结构,顺序线性表的创建和输出;顺序线性表中的排序、查找算法。

(7)指针和链表:指针的定义及其在程序中的应用,指针变量作为函数参数的使用方法;链表的表示和实现。

(8)栈、队列和树:栈、队列、树及二叉树的定义及存储结构、应用。

(9)图:图的基本概念、图的存储结构、图的遍历 、最小生成树、最短路径与最短距离、拓朴排序。

3.2 实验设计思想

C程序设计和数据结构都是实践性很强的课程,因此在理论教学的同时,还要合理安排上机实践。两门课程整合后,根据以往实验教学的经验,重新安排各种实验,以巩固、加深教学内容。实验形式较以往的单一形式不同,为验证型、纠错型、引导型、设计型,实验内容做到循序渐进、由浅入深,有利于学生阅读、调试、设计程序能力的提高。例如:在学习顺序结构设计时,教师安排一个设计型实验,由键盘任意输入一个四位的正整数,编程求各位数字之和。学习选择结构设计时,将实验改为由键盘任意输入一个四位的正整数,编程判断并输入它的位数以及各位数字之和,要求学生用“选择结构”编制程序。学完循环结构程序设计后,将其改为引导型题目,要求学生用“循环结构”实现。

顺序结构程序如下: 选择结构程序如下:

#include #include

void main( ) void main( )

{ {int x,a,b,c,d,sum;

int x,a,b,c,d,sum; printf(“请输入一个四位的正整数:“);

printf(“请输入一个四位的正整数:“); scanf(“%d”,&x);

scanf(“%d”,&x); if(x>=1000&&x

a=x/1000; {a=x/1000;

b=x%1000/100; b=x%1000/100;

c=x%100/10; c=x%100/10;

d=x%10; d=x%10;

sum=a+b+c++d; sum=a+b+c++d;

printf(“\n各位数字之和=%d\n”,sum);} printf(“\n各位数字之和=%d\n”,sum);}

else

printf(“\n输入的数字有误!\n”);}

通过完成不同类型的实验,有目的的、分层次地培养学生的实践能力,使学生学会从实验过程中获得启发,获取知识、积累经验。

在课程学习结束后,进行2周的课程设计。课程设计是由指导教师根据本门课程的教学目标和能力训练的要求选择设计一个项目,该项目的内容不仅涵盖了C程序设计与数据结构课程理论教学的主要知识点,同时能够提高学生应用C语言与数据结构的知识解决实际问题的能力。

3.3 教学方法探讨和手段设计

首先,不管学习什么样的课程,兴趣是最好的老师。在过去的教学过程中,发现大部分学生抱怨程序设计太难、不好学、难读、编程无从下手等问题。因此,针对学生的这种情况,调动学生学习的兴趣和积极性显得尤为重要。经常用学生生活中的小实例来结合课程的教学,让学生明白C语言和数据结构离我们很近,而且很有用。再者,采用“启发、引导”教学方法。在授课过程中,引导学生提出问题、分析问题、划分程序模块、算法设计,最终编写出程序。这种教学方法能够很好的吸引学生的注意力,调动学生的学习主动性。最后,有效利用现代化教学手段辅助教学:一是精心制作课件,制作Flas,使用多媒体进行教学。二是有效的利用实训室和教学软件进行一体化教学,边讲边做,增加互动教学过程,提高学生的动手能力。三是借助职教新干线、BBS等网络平台进行网络互动交流。

4、结语

整合之后的课程以C程序设计内容为主线,将数据结构的内容溶入其中,根据需要对课程内容进行相应的调整。整合后的课程更注重学生阅读程序、调试程序、编写程序能力的培养。当然,肯定还是存在一些问题,需要在今后的教学实践中不断地修正和完善。

参考文献

[1]谢莉莉,李勤,傅春等.“C语言与数据结构”课程的教学改革实践[J].北京:计算机教育,2009(7).

数据结构课程设计篇(2)

数据结构是计算机类专业的核心专业基础课之一,主要讨论数据的合理组织和有效存储、处理以及算法的正确设计、分析和评价,课程本身概念抽象、方法灵活、强调逻辑思维能力、难度较大,同时课程实践性强,实验是该课程不可或缺的重要环节[1-4]。通常数据结构课程实验是由教师将问题描述和基本要求作为实验题目给出,但又绝不是让学生拿到实验题目就直接上机进行编程调试,而是要通过在实验中贯穿软件工程的方法和原理,严格按照分析、设计、实现、测试等软件工程过程并结合具体的实现语言来完成实验,培养学生养成良好的实验习惯。下文针对课程实验特点和目标,结合软件工程思想、面向对象语言Java,在课程的实验组织、过程设计、保障等方面进行了一些探索。

1课程实验特点和目标

由于面向对象方法已经成为目前系统开发和程序设计的主流方式,而Java语言是一种目前使用最为广泛的面向对象程序设计语言,因此不少计算机类专业的数据结构课程采用了Java语言描述。作为是一种完全面向对象的程序设计语言,Java在提高程序的复用性和安全性时,在不同类的资源配置方面,较面向过程的程序设计语言有更高层面的要求[3],通过Java语言表现各种数据结构、实现相关算法是数据结构课程的难点之一,这给语言基础薄弱的学生完成实验带来很大困难,迫切需要在目标、过程、方法等各方面精心组织和设计实验。

如图1所示,作为课程教学的重要组成部分,课程实验的目标主要围绕数据结构与算法、软件分析与设计、程序实现与验证、抽象逻辑思维等方面展开[4-7],即:①以数据结构和算法为核心,帮助学生加深对数据结构的理解;②以软件工程思想为基础,反复练习包括软件分析与设计在内的软件开发过程,培养分析问题、解决问题和程序设计的能力;③以面向对象的Java程序设计语言为工具,提高学生利用Java语言实现和验证算法的能力;④在理解掌握数据结构、应用软件工程思想、熟练使用Java语言的同时,还要培养严密的抽象逻辑思维能力。

上述实验目标师生都提出了更高的要求,为了更好地达到上述目标,并帮助学生在学习过程中充分发挥主观能动作用,围绕课程在数据结构、软件开发、程序实现、逻辑思维各个方面的目标,进行了课程实验的设计,主要包括切实可行的实验任务组织、科学合理的实验过程设计、结合多种方法的严格过程保障等方面,如图2所示。

2实验任务组织

根据课程实验特点和目标,对实验任务进行了精心组织,主要是针对不同基础和层次的学生进行了任务的划分,如图3所示。

2.1基本任务

对于所有的学生,不管其基础或层次如何,都必须完成一定的基本任务,那就是用程序验证各种逻辑结构的基本实现和算法,在实验的总体结构中实现函数的编写、测试、调试、验证,通过这一验证过程达到加深理解各种数据结构和算法、掌握基本教学内容的目的,这也是传统的数据结构课程实验所要求的任务。

2.2基础强化

部分学生学习基础较差,特别是Java语言的编程能力不足,对类、接口、封装、多态、方法调用等的认识较模糊,需要在基本的Java语言以及基本的方法功能理解、方法编写及调用等方面加强实验,通过对基本数据结构和算法与对应程序的反复阅读、编写、测试等训练,达到提高对Java程序结构、语法以及Java方法在程序设计中作用的认识。

2.3能力提升

针对基础较好、学习兴趣较浓的学生,为提供其发挥能力的空间,有效提高其学习兴趣,提出一些要求更高、具有一定挑战性的任务,要求能进行分析、设计并实现、测试,包括:完成比教材里典型基本功能更强的拓展功能,开拓学生的思路,如统计线性表中给定值的元素个数;使用已学的逻辑结构和物理结构完成一些扩展任务,提高学生分析问题、解决问题的能力,如统计二叉树的结点个数;灵活应用编写的方法,实现不同的功能要求,培养学生对实验总体结构配置、方法外特性的认识,如利用队列和堆栈实现单链表的逆序排列。

总之,在课程实验组织中,做到有对整体结构加以介绍的说明;有给学生完成实验的思路提示;对有一定难度的任务还给出具有参考价值的实现作为参照。这样,根据课程实验目标和学生的基础、兴趣设计客观、可行的实验要求和过程,符合人们认识事物的特点,避免了因为要求难度太大挫伤学生的学习热情。

3实验过程设计

如果仅仅依靠传统的验证型实验,学生只是将课本中算法的对应程序敲入计算机,运行一下程序、验证一下结论而已,基本上没有涉及到问题思考、分析分析、总体结构设计、程序设计等软件工程所强调的工作,而如果教师没有严格要求、反复强调、严格考核,多数学生都不做预习准备工作,更不用说养成分析、设计、比较和总结的习惯,结果是学生来作实验了,但不了解实验的目标、流程、问题产生的原因,实验效果、课程学习效果大打折扣。

3.1实验过程的规范

首先严格规范实验流程,让学生反复体会从接受任务到分析、设计、编码、测试的软件开发过程[5]。在最初的两三个实验时,由教师根据实验题目指导学生一步一步完成图4所示内容:①问题描述,即实验要解决问题的描述;②基本要求,即实验要达到的具体要求;③测试数据,即设计能达到测试目的的测试数据;④算法思想,即描述解决相应问题的算法思想;⑤类划分,即分析问题所需的类,并给出类的逻辑功能描述;⑥源程序,即有充分注释的参考实现源程序清单;⑦测试情况,即程序的测试情况以及必要的分析和说明。由于数据结构实验尚未要求进行较强功能软件的开发,故上述过程中虽然涉及了软件工程思想和软件开发过程,但一般并不强调过分详细的需求分析、概要设计、详细设计等步骤,也不必要求提供详细的使用手册。在随后的整个课程实验过程中,对学生严格要求、反复强调必须严格遵守图4的实验过程,并采用抽查等方式保证其严格执行。

3.2关注点的分离

为了将数据结构与Java语言、软件工程有效结合,要求在课程的实验过程中也始终与理论教学中一样,按图5所示的三个典型步骤来解决所遇到的数据结构和算法问题:①抽象,即分析问题需求,抽象出一个解决该问题的适当的数学模型(抽象数据类型ADT);②接口设计,即对应地设计一个规格说明来描述ADT应支持的操作,并将这个规格说明用Java接口来表示;③实现,即选择合适的数据结构和算法来实现上述Java接口,最后对各种不同实现的代价进行分析和比较。这样的步骤清楚地区分了ADT的接口与实现,体现了软件工程中分离关注点的重要原则[6],同时很好地利用了Java语言在抽象、封装等方面的优势。

4实验保障措施

通过已有的实验过程发现,仅有实验任务组织和实验过程设计是不够的,还必须要有良好的动手习惯培养、基本知识积累以及编程能力提高等作为保障措施,才能较好地达到所提出的课程实验目标。

4.1动手习惯的培养

部分学生没有动手的习惯,实践教学中应注重培养学生的动手习惯,特别是培养记录、画图、打草稿等基本的动手习惯,避免学生对知识把握不准、似是而非。如在讲解、演示或讨论时,让学生跟随教师动手在草稿纸上画图、记录,讲解完立即就刚刚所学内容的部分关键步骤再抽查学生重新讲解,并要求辅以图、表等(当然抽查也可以在下一次课进行),如果存在问题可以由其他同学纠正,最后由教师进一步分析、总结,让学生深刻体会动手习惯对知识学习所起的巩固作用。

4.2简单知识的积累

部分学生不注重积累那些功能简单的小算法,实践教学中教师应注重培养学生对简单知识的理解、记忆、积累,经常抽查,在面对那些较为复杂的数据结构和算法时,充分分析、分解其中涉及到的基本知识点之间、算法之间的联系,提示学生注意类的小型化、原子化,只有长期注重对基本知识点的理解、记忆和积累,才能避免遇到问题时无从下手,避免理论与实践脱节。

4.3编程能力的提高

由于前导课程如C语言、Java等掌握不好、认识不深、基础不牢,不少学生编程能力较弱,缺乏把数据结构和算法转化成代码实现的能力,部分学生甚至不能把一些简单的算法转换成完整的程序,以及缺乏基本的排错能力,都大大影响了这些学生学习这门课的积极性和效果。

为了使实验过程清晰并降低实现的难度、提高可操作性,要求学生一开始所设计的ADT不一定功能很完备,只要具有那些典型的、能初步表现问题需求的基本功能即可,随着上述步骤的一作结束,根据问题的需求,进一步完善现有的ADT及其实现。让学生既在运用中逐步体会了软件工程原理和应用,又对通过不断运用Java的基本知识,提高了编程能力。

另外,加强现场指导、交流、沟通,及时发现学生的困难,有针对性地帮助学生提高认识、解决问题,以及实验完成后进行分析总结,集中讨论实验中的一些普遍问题,都是提升实验效果的有力措施。

5结语

基于实验在数据结构教学中的重要地位,精心的任务组织、科学的过程设计和严格的保障措施是十分必要的。一段时间的运行表明,上述做法对于促进学生在学习过程中充分发挥主观能动作用,增强对数据对象特征的理解、数据组织方法的掌握、软件开发过程的熟悉、程序实现技能的培养以及抽象逻辑思维能力的提高等方面都起到了积极的作用。

参考文献:

[1] 杨红宾. 数据结构课程改革探讨[J]. 教育与职业,2009(32):131-132.

[2] 沈根海. 高职院校数据结构实验教学的探索[J]. 电脑知识与技术,2008(33):1427-1428.

[3] 张济础,杨亚莉. 高职院校“数据结构Java语言描述”课程的实验设计[J]. 计算机教育,2010(1):64-65.

[4] 杨晓波. 浅析数据结构课程教学中的实验环节[J]. 甘肃高师学报,2003(5):49-50.

[5] 朱战立. 数据结构Java语言描述[M]. 北京:清华大学出版社,2005:295-299.

[6] 周大庆. 实用数据结构教程Java语言描述[M]. 北京:人民邮电出版社,2007:1-2.

[7] WEISS M A. Data structure and problem solving using Java[M]. London:Pearson Education,2006:1-5.

Experimental Design of Data Structure Course Using Java

LI Gang, HUANG Tongyuan, ZHANG Xiaochuan

数据结构课程设计篇(3)

1.学生在初学这门课时,不知道学习的方法,不了解学习的原因和目的。

2.在学习过程中,一旦遇到了难以解决的问题,部分学生就会产生畏难和厌学情绪,学习兴趣下降,大部分学生常常觉得教科书中的内容与具体的算法设计题相距甚远,无从下手。

3.学生对所学过的知识把握不准,动手编程能力较弱。在课程学习结束以后,不知道自己到底学了些什么。

4.课程中部分知识点和算法难于理解,没有考虑知识点之间、算法之间的联系。

5.在大学扩招以后,学生的基础参次不齐,尤其对于高等职业类学生,他们属于高招录取第三、四批的学生,基础较差,水平参次不齐,有的为对口生,有的为文科生,有的为理科生。在目前的教学中不能体现个性教学,不能真正按照每个学习者实际情况进行教学。

从已有的与“数据结构”课程有关的研究论文可以看出,不少任课教师在教学方法、教学媒体、学习方法上进行了积极的探索,对“数据结构”教学质量的提高起到了很大的推动作用。但是,我们也看到,大多数论文是教师感性的教学经验,是从微观上对“数据结构”教学经验的总结和教学建议,缺乏从整体上、从理性思维上对“数据结构”课进行设计。要想真正实现课堂教学的高质量、高效率和最优化,仅靠单方面的、局部的改革是不可能实现的。

针对这种情况,我们认为,有必要按照一种教学设计理论对“数据结构”课程做一次系统化、完整的教学设计,并力争做到以下几点:

1.学习者能够积极参与到学习活动中,在活动中锻炼他们的各种思维能力,而不是机械地记忆“数据结构”课程里的一些抽象概念、复杂算法。

2.构建一些真实的问题情境,学习者在问题情境中学习兴趣得到激发,学习动机得到了维持;结合已有的知识和生活经验,经过细致观察分析,能够找到解答问题的有效办法,从而能够主动地建构自己的学习经验。

3.尊重学习者的个体差异。在“数据结构”课程学习中,充分考虑学习者的个体差异,每个学生都能够根据自己的实际情况去选择适合自己的目标、活动、资源、工具,能够做到学有所需,学有所长。

4.通过“数据结构”的学习,能够影响学习者的学习态度、情感和意志,促进学习者性格的养成,能够培养学习者协作能力、实际动手的能力和解决实际问题的能力。

二、高职“数据结构”教学设计理论与实践研究

依照杨开城博士提出的“以学习活动为中心的教学设计”理论,我们对高等职业教育中的“数据结构”进行了理论实践研究。

1. 教学问题分析

为了确定“数据结构”科目中的教学问题,而不是感性的、模糊的认识,在具体的课题研究过程中,我们对河南省鹤壁职业技术学院计算机专业2002级学生在“数据结构”科目教与学的过程中所存在的教学问题进行调查、访谈,并进行总结、分析,最终确定真实存在的教学问题。

根据“以学习活动为中心”的教学设计理论中的问题归因理论,我们对“数据结构”课程教学中所出现的问题归纳如下:

生理因素方面

部分学生时间安排不好,在“数据结构”课堂上感到困倦、疲乏。

学习准备方面

“数据结构”课程的先决课程C语言知识掌握不牢,大部分学生对指针类知识点不熟练,学习复杂算法时有困难。

学习活动方面

(1)较多的学生只看书,学习方法单一。

(2)教学只采用了讲授、演示法,教学形式单一,学习活动单一。

(3)学习目标不明确,学习活动有时过难,有时过易,对同学缺少吸引力。

(4)教师指导不力,学生之间没有有效的互助行为。

(5)针对某种目标的学习活动的量不足。

学习环境方面

(1)学习资源匮乏,不能满足需求。

(2)学习工具对学习活动的支持不足。

(3)教学媒体单一,学习内容设计不良。

学习动力方面

(1)学习动机水平低下。

(2)部分学生意志力薄弱。

(3)兴趣低落。

(4)缺乏群体动力。

学习时间不足

理论课与实践课时安排不合理,实践课太少。

2.学习者特征分析

高职大学生文化知识基础较差,文化素质、文明修养也相对较差;学习动力不足,理想、信念不高,自信心不强;自我管理,自我约束力较差;但他们思想比较活跃,动手能力、专业技能、适应性较强。高职生虽然在学习成绩方面不如普通高校的大学生,但他们活跃的思维和爱动、爱表现自己“才华”的天性在大学里“暴露无疑”。由于社会、家庭等各个方面压力较小,在选择职业时,他们更加务实,找个工作先干着,不行以后自己当老板。所以,高职生与同等学历的大学生相比,他们更容易被社会接纳,发展前景也较好。

3.学习目标分析

在对“数据结构”课程进行学习目标分析的时候,采用的是一套知识技能领域学习目标分类体系进行分析,如表1是《数据结构》第六章的目标分析,表2为知识点与教学目标相关性分析。

其他章节也严格按照以上的方式进行严格的目标分析。

表1 学习目标描述

表2 知识点与教学目标相关性分析

4.学习内容分析

本课题对“数据结构”课程学习内容所采用的分析方法是“绘制知识网络图”的分析方法,又称为知识建模分析法。这种方法主要是绘制知识点之间的关系,不仅能用于学习内容的鉴别和序列化,而且有助于学习活动设计。

依照知识网络图的绘制方法,对“数据结构”课程的每一章节进行了分析。

5.学习活动的设计

学习活动是旨在完成特定学习目标而进行的师生操作的总和。学习活动的设计中,最为关键的就是活动任务的设计,在设计每章的活动任务时,我们采用“知识网络图――知识组块――活动任务”的流程来设计,其中知识组块是一组关系紧密的知识点群。根据“数据结构”课程的知识网络图,我们对该课程各章节划分的各个知识组块,最后得出每个章节的学习活动。

6.教学方案的实施

根据以上形成的教学设计方案,我们进行了实际的运作。

实施对象、时间、目的:

实施对象:正是由于操作对象的不可重复性,这次方案的实施对象为河南省鹤壁职业技术学院计算机专业2004级的学生

实施目的:了解在教学方案实施过程中,教学问题是否再次出现,借此来判断教学方案是否有效

实施时间:2005年3月至2005年7月。

7.教学方案的评价

对学习结果的分析

教学方案实施结束以后,我们对参于“数据结构”课程学习的鹤壁职业技术学院计算机专业的2002级、2003级的学生进行了学习成绩分析,具体分析如下:

条件:

(1) 2002级学生45名,2003级学生60名。

(2) 2002、2003级“数据结构”授课教师、实验辅导教师没有改变。

(3) 2002、2003级学生学习“数据结构”前的基本水平基本一致。

(4) 2002、2003级“数据结构”课程考试方案和形式都没有改变,实验成绩占30%,笔试成绩占70%。

(5) 2002级学生上课时没有采用学习方案,2003级学生上课时采用新的教学方案。

结果如图1所示。

2002级学生“数据结构”成绩比例2003级学生“数据结构”成绩比例

图1 2002、2003级学生学习结果分析图

依据图1我们可以得到,在90-100分的比例上,2003级学生比2002级学生高2%,在80-90分的比例上,2003级学生比2002级学生高6%,在70-80分的比例上,2003级学生比2002级学生高4%,从这些比较数据整体看来,2003级学生整体学习成绩比2002级学生要好一些。

课堂观察和实验室观察总结

一学期的课堂观察和实验室观察结束了。在课前,大部分学生都能自觉地进行预习,很少有人迟到。在进行“数据结构”课程学习时,绝大多数学生能积极投入到课堂的具体学习活动中去,大家非常喜欢小组合作学习,有什么问题自己先解决,解决不了的,小组在一块儿商量,小组解决不了的,再请教老师。每次上课时,学习目标明确,条理清晰,每节课可以看到学生提问、小组协作、气氛活跃。在实验室里,从整个学期的实验课来看,大多数同学每次实验都在认真的编写、调试程序,看不到以前经常发生的在上实验课期间打游戏、上网的现象。

同学们的学习积级性得到了很大的提高,编程能力进一步增强,自信心也得到了增强。

授课教师的反思总结

在2003级计算机专业“数据结构”课程的学习过程中,相对02级学生,上课期间的睡觉现象少多了,很多同学都能积级参与到教学中来,在学习中,他们感觉自己成为学习的主体。在进行课程内容的时候比较顺利,以前困扰学生的基础差的问题,他们通过小组合作学习解决了。

在学习环境上,给学生提供了较为充分的学习材料――网络学习材料、学习活动手册、FTP服务器等,学生对这门课感到满意。

三、存在的问题及展望

高等职业教育计算机专业中“数据结构”课程的教学设计经过四学期的研究、实践,终于结束了,在课题结束之际,回过头来看具体的设计、实践过程仍存在以下一些问题:

1.在具体的知识网络图的绘制中,各种知识点的归类对于普通教师来说,稍显复杂。绘制知识网络图也是如此。

数据结构课程设计篇(4)

摘要:介绍数据结构课程设计辅助教学平台的设计过程,说明其构建思路、系统结构和实现方法,阐述该平台集内容提供、多媒体资料库浏览、流媒体播放和交流互动于一身,采用Adobe Flex、PHP、MySQL、Apache和Flash Media Server等技术,以纯Flash方式展现,指出使用该平台可以更好地发挥教师引导、启发、监控教学过程的主导作用,同时又能充分体现学生作为学习过程主体的主动性和创造性,有利于教师启发教学和学生自主建构知识体系。

关键词:数据结构;课程设计;教学平台

0 引 言

数据结构是计算机相关专业的核心基础课程,根据教学大纲安排,各章节安排相应教学内容的验证性上机实验,还设置针对课程内容的综合设计实验环节,这是考查学生理论联系实际动手能力的重要环节,对锻炼学生发现问题、解决问题的能力也很有裨益。数据结构课程设计实验步骤如下:需求分析――选择并构造合适的数据结构――功能函数设计――具体编码实现――运行测试――完成课程设计说明书。在传统的教学安排中,实验过程由学生独立完成,教师的作用主要是答疑、过程监督和成果验收等方面,这种强调学生的“学”而忽视教师主导作用的教学过程虽然会涌现出一些优秀的作品,但也存在一些问题:一是学生自由度过大,容易偏离课程设计教学目标;二是部分学生由于缺乏专业训练,没有形成正解的思维方法,拿到题目无从下手,只能生搬硬套基本数据结构;三是代码编写不够规范,可读性差,也不注重文档的整理;四是存在照抄他人课程设计的现象。

数据结构课程设计是个综合性实践环节,不仅需要数据结构知识,还是对计算机程序设计语言、离散数学和软件工程等课程的综合运用。学生的自主学习和教师的主导学习相结合十分重要,为更好地发挥教师引导、启发、监控教学过程的主导作用,结合当前互联网应用开发的主流技术,我们设计实现了数据结构课程设计辅助教学平台,用于指导和帮助学生完成课程设计。

1 设计过程

1.1 目的与思想

数据结构课程设计辅助教学平台的主要目的包括:①通过优化学生自主学习环境,完善学习策略,充分发挥教师引导、启发、监控教学过程的主导作用;②为学生自主建构知识体系创造条件,使学生系统掌握数据结构课程内容、锻炼和提高编程能力,充分体现学生的主动性、创造性并得到成就感。设计思想主要体现在:①充分发挥互联网作用,互联网应用已成为学生课余生活的重要组成部分,教师应因势利导,利用互联网对学生进行指导和辅导;②要激发学生的兴趣,兴趣是最好的老师,教学平台的界面要美观大方和简洁明朗,注重多媒体组件的选择和使用;③学习环节的设计要贯穿整个课程设计过程,覆盖不同知识层面的学生;④注重新媒介和新技术的使用,紧跟时展步伐;⑤尊重互联网规律,在知识大爆炸时代,微课堂、“短平快”是主流,注重化繁为简和突出重点。

1.2 内容构建力,规范编程风格并实践软件工程。

(5)注重沟通交流,授人以渔。平台中开设释疑解惑栏目和课程设计论坛,预留微信公众账号,学生可以提出问题及求解,促进和强化师生间、学生间的互动交流,从点点滴滴中积累学习。

2 实现过程

(1)教师可结合数据结构实验环节的特点,挑选综合性强、涉及知识面广、适合学生自主创新的经典案例,由教师制作成设计分析讲解、代码编写讲解和运行测试讲解等分段视频,学生根据需要可自主点播。教师通过引导和启发,开拓学生思维,鼓励学生自主构造更合理的数据结构,实现更完善的功能。平台选取的案例均可用多种数据结构实现,适用于不同层次的学生,同时也考查学生对于算法设计、内外排序、文件存取和实现效率等各方面知识点的掌握情况,是对学生综合能力的考验。

(2)为了使学生能够学以致用,教师可通过咨询社会上相关领域的工程师、系统分析师和从业人员并对历届毕业、就业的学生进行问卷调查,在资源选择和案例讲解中注重理论联系实际,着力从项目管理、软件工程、测试驱动开发等方面传授从业经验,为提高学生的就业能力打下坚实基础。

(3)在教学资源的运用上,教师可提供视频、音像、文档、幻灯片、表格、图形图像和电子书籍等多种媒体形式,涵盖数据结构课程设计涉及的C语言程序设计、C++语言、算法设计、离散数学等资源内容;尊重原创者的版权,培养学生的版权意识,对所有引用的资源均详细标明来源及版权信息。

(4)注重有教无类,使不同能力水平的学生都能从中汲取养分。对于初级水平的学生,通过学习视频讲解、参考优秀作品和阅读教师点评,找到完成课程设计的入口,自主完成课程设计;对于能力强、学有余力的学生,通过查看共享资源和在自主探索中挑战自我,锻炼驾驭问题的能

2.1 系统架构

数据结构课程设计辅助教学平台的系统架构如图1所示。

数据结构课程设计辅助教学平台Web服务器采用Apache服务器,以纯Flex技术实现,数据库采用MySQL,由PHP从数据库中读取数据形成XML文件提供给Flex使用,用户通过浏览器以HTTP协议访问该平台。媒体播放采用两种形式:一是普通的媒体文件,均以Flash形式提供,包括幻灯片、课件、文档和书籍等;二是流媒体,通过FMS( Adobe Flash Media Server)流媒体服务器以RTMP协议向客户端推送。相对于下载后观看的网络播放形式而言,流媒体的典型特征是把连续的音频和视频信息压缩后放到网络服务器上,用户可以边下载边观看。采用流媒体方式和流媒体服务器还可以减轻服务器的访问压力,使得平台能够同时处理更多的用户视频点播请求。

2.2 技术特点

(1)平台是一个典型的富互联网应用(richinternet application,RIA),RIA的好处在于比用HTML能实现的接口更加健壮,反应更加灵敏,可视化特性更加出色。RIA的实现技术包括Ajax、Flex和Silverlight等,本平台使用的是Flex技术。Flex结合了音频、视频和实时通讯,用户体验极佳,具备桌面应用程序的用户交互感和传统网络应用的部署便利性。

(2)平台开发坚持跨平台、跨浏览器的特性,使用技术及组件包括Adobe Flex、Apache、PHP、MySQL、Adobe Flash Media Server等,均具备良好跨平台特性,后台服务器支持Windows、Linux和Unix等不同操作系统。平台以纯粹的Flash形式展现,具备良好跨浏览器特性,只要装有Flash Player的浏览器都能够正常浏览,支持所有主流浏览器,如IE、火狐、UC、Chrome等,客户端支持Windows、Linux等主流操作系统,同样也支持移动互联网以及基于Android、iOS的平板电脑、手机等便携设备。

(3)平台中使用到的视频、音像、文档、幻灯片、表格、图形图像和书籍等统一转换为flv格式文件,用户只需要通过浏览器就可以在线查看上述各种形式的媒体资源,不需安装任何其他插件或应用软件(如Word、Excel、Powerpoint等),充分考虑了客户端的跨平台和多样性。

(4)视频点播和视频直播中采用了FMS(Adobe Flash Media Server)流媒体服务器,该技术是主流的视频传播实现技术。通过FMS,流媒体文件将通过RTMP协议向客户端推送,图像压缩率更高,播放流畅清晰。与下载视频文件到本地后观看的网络播放形式相比,流媒体的典型特征是用户可以边下载边观看,浏览速度快,播放中支持拖拽和定位。此外,FMS还具备良好的可扩展能力,可根据用户群规模增加边缘服务器(edge server)迅速提高访问能力。

(5)流媒体视频讲解中充分利用了电子黑板软件,结合数位板硬件,在多媒体教学结合“板书”讲解,既“现代”又“传统”,让教师能够把握教学的主线,学生有充分的消化时间,弥补了多媒体教学中的不足。

(6)设计细节上注重界面设计,功能分区清晰、导航明确、操作简便、提示信息丰富;而Flash的动态特点可以增强平台的动感效果,使得颜色搭配赏心悦目、色调把握得当并以CSS样式表统一平台的风格,提高学生的使用兴趣。

2.3 功能模块

平台目前具备7个模块,分别是首页、影音中心、堂件集萃、资源共享、自主探索、优秀作品和释疑解惑,如图2所示。

1)首页模块。

首页模块(如图3所示)是平台的门面,介绍平台的目的和特色,展示最新的信息和媒体介绍。首页分为4个功能区域:1是新闻区,用来最新的通知、相关信息、教师布置的作业等;2是最新媒体资源展示区;3是平台的菜单导航区;4是网络资源链接区。

2)影音中心模块。

影音中心模块(如图4所示)集中展现平台中所有的媒体资源,包括flv形式的流媒体视频,Flash形式的教学堂件、幻灯片,Flash形式的文档、表格、书籍、代码和资料,分为3个功能区域:1是资源类目区,以树型结构展示;2是媒体放映区,支持各种格式的文档(如图5所示),也能进行视频点播和在线视频直播;3是资源区,显示当前类目对应的视频、幻灯和文档资源。

3)堂件集萃模块。

堂件集萃模块(如图6所示)以图像列表方式展现理论课堂教学和案例视频教学中的堂件,每个堂件均配有标题、所属类目、内容介绍等文字信息。所有堂件都是以Flash的形式展现,支持声音、动画、切换等功能(如图7所示)。

4)资源共享模块。

资源共享模块汇集教师和学生提供的电子书、国内外经典数据结构教材等信息资源和学习辅助材料,每个文档均注明资源名称、来源、所属类目、内容介绍、版权信息等情况。该模块以文字列表形式展现,通过点击单条记录可在线阅览相应文档。所有文档资料均采用FlashPaper形式提供在线阅读,不需安装其他插件或软件。

5)自主探索模块。

自主探索模块提供一些课程设计实践环节要求之外的、富有挑战性的课题,方便学生开拓思维、勇攀高峰、锻炼挑战自我能力,促进学生自学。

6)优秀作品模块。

优秀作品模块提供历届学生的优秀作品,这些作品均完成得较为出色且富有创新性,具有参考价值,可供广大学生下载和学习。每个作品都包含作者信息,详细注明题目要求和设计内容,有些还附有教师点评。

7)释疑解惑模块。

数据结构课程设计篇(5)

《数据结构》课程是高职计算机专业重要的专业基础课。该课程通过学习程序设计中常用的基础数据结构,介绍一些重要的程序设计思想,提高学生的逻辑思维能力和编程技能,培养学生的分析问题、建模与解决问题能力。同时,该课程的学习内容能够促进学生对后继课程的学习内容的理解。例如,高级编程语言C#或Java中有一些库函数实现了对集合元素排序的功能。而这些功能正是以数据结构课中介绍的排序算法为基础的。

根据我们多年的教学经验,在高职计算机专业的课程体系中,数据结构普遍被学生认为是比较困难的一门课程。造成困难的原因大致有以下几个。首先,由于高职计算机专业学生就业的特点,决定了高职学生很少从事基础和底层程序设计,或者从事与数据结构以及程序设计相关的理论研究。因此,数据结构课的学习内容在工作中直接应用的机会很少。这导致部分学生甚至教师对学习数据结构课的必要性存在疑惑,对该课程重视程度不足。其次,数据结构课的概念和算法抽象,理论性强,对学生逻辑思维能力要求高,学习的门槛较高。最后,高职学院学制较短,导致一学期内的专业课程密度高,学生学习时间不足。

现有的高职教材或本科应用型教材例如参考文献[1-4]的内容编排,多沿袭自传统本科数据结构课。一般依线性结构,树结构和图结构的顺序编排,逐次介绍各种数据结构,给出其定义,详细介绍其物理存储结构和基本性质,并穿插其应用的一些例子。其覆盖的知识面广,内容和体系较为完整,条理清晰。但是由于高职计算机专业数据结构课程学时较少,其专业学习的实践性强,学生逻辑思维能力稍弱等特点,这种沿袭自本科教学的授课内容组织方式不完全适合高职学生。虽然针对课时偏少的情况,一般高职课本会对本科课本作一些删减或简化,但其内容构成仍没有本质上的改变。因此,课程内容的选择、组织与编排增加了高职学生学习数据结构课的难度,而未能解决上述造成困难的几个问题。

我们认为,数据结构课程能够训练学生的逻辑思维能力,促进学生深入理解与专业相关的基本编程思想,且其内容与多门后继专业课程相关,因此对计算机专业的学生而言,学习数据结构课的必要性毋庸置疑。而针对高职教育学时少,实践性强的特点,对课程大纲、课程标准、教学内容和教学方式进行改革,使得高职学生能够更好地学习该门课程,改进学习体验,改善学习效果,则势在必行。数据结构课的改革,结合当前高职教育改革的方向,在课程设计方面应该以突出能力培养,以项目为载体,以任务训练岗位职业能力,以及知识理论实践一体化为原则[5-6]。

本文总结了我们在高职计算机专业数据结构课上进行的教学设计改革。我们在课程中引入任务驱动教学方式,设计若干项目供学生在课堂上练习,以项目覆盖课程的各知识点,通过项目引入相关的概念,并作讲解。在课堂教学方式上,以解决问题,完成项目代替抽象的理论教学。由于避免了繁琐的基本概念讲解,缩短了理论教学用时,学生能够投入更多的时间与精力到编程实践练习。而通过练习,能够更好地理解抽象的概念。我们的课程改革,应用于计算机应用专业两届学生的教学实践中,取得了良好的效果。

2 教学项目设计实例

数据结构课程的主要内容大致可以分为三部分,即线性结构、树结构和图结构。其中,线性结构包含了几种重要的数据结构,如栈、队列、数组和串等。树结构的内容一般以最常用的二叉树结构为主。图结构是最为复杂的结构,涉及算法的内容比较多,如图的最短路径算法,图的最小生成树算法和图的连通分支算法等。除此以外,课程还包括查找和排序算法等重要内容,这两类算法同时涉及线性结构和树结构。通常还会介绍递归、指针等重要的编程思想和内容。

我们的教学项目设计思路,是选取相对简单而具有代表性的算法题目,结合一些应用的背景,构成我们的项目,内容力求覆盖基础的数据结构,如线性结构、队列、栈和二叉树等。学生通过完成项目中的一个个任务来学习数据结构的抽象概念。有些方向内容丰富,我们从中选取少量相对简单,然而具备代表性的例子作为任务,使得学生更易上手,尽快建立对一些抽象概念的认知。例如查找和排序操作既可以在线性结构上,也可以在树结构上进行。但我们不考虑树结构,仅仅以线性结构上的问题组成我们项目。又如从图结构的多个算法求解问题中,我们选取容易理解的连通分支求解算法作为教学项目。

作者从事高职计算机应用专业的数据结构课教学。该课程的学时大约为4学时×16周,一般在一年级第二学期开设。根据课时和学生的具体情况,我们在一学期的课程中为学生设计三至四个项目,并主要以学生完成项目的情况作为学期总评的依据。以下以我们为2014级学生设计的项目为例,对课程教学项目设计作一个详细介绍。

我们一共设计了四个项目,具体如下。

迷宫:以一个n×m的{0,1}-矩阵表示一个迷宫。其中,0表示可以通行,1表示有障碍,左上角和右下角均为0,分别表示入口与出口。编写程序判断此迷宫是否存在一条从入口到出口的路径,如存在则输出该路径。

二叉树的构造和遍历:对教师以绘图形式给定的一棵二叉树,编写程序构造该二叉树并输出该二叉树的前序、中序和后序遍历的结果。可以结合一个具体应用进行教学。例如,可采用二叉树的一个典型应用,即表达式的几种表示法。教师输入一个表达式,学生根据其建立一个二叉树,并通过三种遍历方式输出表达式的波兰表示法,逆波兰表示法和中缀表示法。

(1) 查找和排序:对教师给定的一个有序整数序列,编写程序接收用户输入的一个整数,使用二分查找法在序列中查找该整数。对教师给定的一个无序的整数集合,使用插入排序、冒泡排序和选择排序中的至少两种为该集合排序。此问题的一个典型的应用情景是学生的考试分数排序。

(2) 图的连通分支:某班级有n位同学。现组织外出旅游,并拟将全班同学分成若干小组集体行动。现在给定一个图表示本班同学之间的朋友关系。其中以结点表示同学,且若两位同学为朋友关系,则对应的两个结点以边连接。请根据朋友关系将全班同学分成若干个小组,使得有朋友关系的两位同学在都同一个小组中。此题目等价于求朋友关系拓扑图的最大连通分支。

可以看到,这四个项目均具有丰富的理论意义和具体的应用背景。它们覆盖了现有数据结构课本的大部分知识点。表1中列出了数据结构课的大部分知识点以及它们被各个项目覆盖的情况。课程中常见的数据结构,除了串以外,大部分为我们设计的项目所覆盖。同时我们的项目还覆盖了递归,指针,广度优先搜索和深度优先搜索等重要的程序设计思想。

为了引导学生分步完成练习,我们还为比较困难的项目设定预备任务。预备任务不同于一般的习题。它们有一定的独立性,可以提出来作为一个习题,但是又与我们的项目有机地结合在一起,可以认为是相关项目的一项任务。

对于迷宫问题,我们设定以下两个预备任务。

(1.1)写一个栈结构处理程序。每一个栈元素是含有3个整数(这里规定栈元素由3个整数组成,是为了迷宫项目做准备,见下文)的一个结构体。写出栈的初始化,入栈,出栈和判断栈空的操作。在main函数里面建立一个这样的栈,测试它。比如说,入栈若干个元素,例如 (1,1,0) 和 (2,2,0) ,然后出栈,并依照出栈顺序打印这些元素。

(1.2)围障。给定一个以n×m矩阵表示的迷宫,用全一把原迷宫包围起来,创建出一个新的 (n+2)×(m+2) 迷宫。打印出新的迷宫。

迷宫问题采用栈结构存储回溯的结点,每一个栈元素存储迷宫内一个结点的x、y坐标和回到该结点以后下一个可以探索的方向,共3个整数。第一个任务栈处理程序既是一个线性表的练习,也为迷宫问题准备好要使用的栈。我们允许迷宫第一行、最后一行、第一列和最后一列除了出、入口以外,还有其他0元素。但是这些0元素实际上不是在所有的方向上都可以通行。在第二个任务中,我们在迷宫四边添加全1,称之为围障,围障能够使得迷宫求解程序中的一些条件判断大为简化。该任务可以看成一个矩阵练习,并为我们即将探索的迷宫作了初始化。

对于图的连通分支问题,我们也设定了两个预备任务。

(4.1)图的表示。用矩阵表示教师用绘制方式给定的图,并在屏幕上打印出图的结点和边。具体内容包括定义和初始化一个矩阵,表示一个图,输出图的结点列表和图的边的列表。其中,图的结点以数字0,…,n-1 编号,图的每一条边以 (x,y) 的形式表示,x和y是边的两个端点的编号。

(4.2)队列的操作。编程实现一个整数队列的初始化,入队和出队的操作。程序里面定义和初始化一个整数队列;然后入队至少三个元素,按顺序打印出队列里面的所有元素;再出队至少两个元素,又按顺序打印出队列里面的所有元素。

第一个练习非常基本。它完成图在程序中的表示,学生学会把一个图转换为一个矩阵,同时从矩阵中读取出图的顶点和边。第二个练习是为了对图作广度优先遍历时使用队列结构作准备,同时也是一个线性表的练习。

3 教学内容的组织与课堂教学实践

依授课时间顺序,我们的教学内容组织为

一、线性结构;

二、预备任务(1.1)和(4.2):队列和栈;

三、项目(1)迷宫问题,包括预备任务(1.2);

四、树结构;

五、项目(2)二叉树遍历;

六、项目(3)查找和排序;

七、图结构;

八、项目(4)图的连通分支,包括预备任务(4.1)。

教学内容的组织以线性结构、树结构到图结构为主线索。

在线性结构部分,对线性表的基本概念作一些介绍后,我们布置预备任务(1.1)和(4.2),通过这两个练习介绍栈和队列的概念。同时,向学生介绍项目(1)迷宫问题和项目(4)图的连通分支,并说明预备任务(1.1)和(4.2)跟这两个项目的关系。在完成了预备任务(1.1)和(4.2)以后,布置项目(1)迷宫问题。迷宫求解问题的讲解,重点要解释清楚深度优先搜索的思想。

接下来是树结构的内容。我们介绍树结构相关的一些概念和重要性质。然后布置项目(2)二叉树遍历。二叉树遍历有先序、中序和后序三种方式。除了树结构内容,我们以递归方式实现二叉树遍历程序,通过这个项目向学生介绍递归思想。所以,此项目教学的重点之一是讲解递归的原理。教师可实现其中一种遍历方式作为例子,而让学生完成其他形式的遍历。如前所述,为了帮助学生更好理解二叉树的思想,可结合二叉树的典型应用,即表达式的三种不同表示方法来讲解。

随后的内容是线性表的查找和排序。完成项目(3)查找和排序方法。其中,查找算法以线性表的二分查找为例,讲解的时候我们与顺序查找作对比。二分查找必须应用于有序数组,而对于无序的数据则只能采用顺序查找,这说明了数据结构对算法设计的影响。

排序算法种类繁多([7]),其中部分高效算法的时间复杂度能够达到O(nlogn)。但是这些算法对学生而言有相当难度,我们仅选取时间复杂度达到O(n2),而实现思路相对简单的几种算法作为项目的内容,教师可以在课堂上部分或全部实现要求的排序算法,然后让学生再重新自行完成。

最后是图结构部分。我们首先介绍一些和图相关的概念和基本性质。然后以(4)求图的连通分支为教学项目。项目(4)直接以一个实际问题的形式提出,揭示出图算法的强烈应用背景。在求解算法中,我们要求学生掌握使用广度优先搜索来访问图的结点。广度优先搜索的实现需要以队列作为待搜索结点的存储结构。因此,项目又结合队列的设计、实现与应用进行。有助于对理解线性表的相关知识,掌握其应用。

数据结构课程设计篇(6)

文章编号:1672-5913(2013)18-0058-04

中图分类号:G642

0 引言

通过观察和对比,国际一流大学学生参与课堂发言和课后研讨的积极性要远远高于复旦大学学生,而参与研讨对于促进学生深入理解课程内容,培养学生在立题、思辨和协作方面的能力十分有益。为此,复旦大学软件学院开展了数据结构与算法设计类课程国际化建设工作,主要目标是研究如何在课堂教学中采用研讨型方式,在实验环节中采用协作型项目,并针对中国学生的特点,探索如何引导学生提出问题和参与讨论,以提高课程教学效果,缩小与国际一流大学差距的教学方法。课程建设教师团队的主要人员首先通过全程旁听美国麻省理工学院数门相同或类似的课程,认识与国际一流大学在教学手段和效果方面差距的同时,分析中美学生在提出问题、参与讨论方面表现差异的原因。然后通过与学生座谈方式收集整理中国学生不愿意在课堂上发言和参与研讨的主要原因和相应对策。最后介绍复旦大学软件学院根据课程国际化教学课题的研究成果进行教学方式调整和开展课堂教学实践的情况。

1 麻省理工学院在课程教学中促进学生参与研讨的先进经验

在开展数据结构与算法设计课程国际化建设过程中,课程建设教师团队的主要人员利用在美国麻省理工学院(MIT)参与研究工作的机会,在一年内全程旁听了Design and Analysis ofAlgorithms、Web 3.0、Economics 0f Information、Software Construction 4门课程,并且参加了MIT的IFF(International Faculty Fellow)国际大学教师培训项目。IFF是由MIT发起组织的、致力于提高国外高等院校教师的科研能力、培养研究生水平和授课技能的项目。在上述过程中,教师团队人员对于MIT在促进学生参与课程相关内容研讨方面的举措印象深刻,并将值得借鉴的教学方式和方法进行了归纳。

(1)学生参与课程相关内容的讨论需要相关知识的准备,只有将相关知识积累到一定的程度,学生才会自然而然地愿意对相关问题进行讨论,而课程教材和课堂讲义对知识积累是远远不够的。MIT在课程开始时就由任课教师提供课程相关的文献阅读列表,阅读完这些文献所需要的时间大约为课程授课时间的3倍左右。对比复旦大学类似课程的文献阅读要求,发现中国学生在完成课程相关文献阅读量方面远远少于国际一流大学的学生。

(2)每一门课程除了提供网站用于下载课程相关的资料外,还有课程的BLOG便于学生和教师在线交流。利用这样的系统,教师往往规定在课程授课期间,学生至少针对数个课题(完成相关文献的阅读后)在BLOG上发表自己的观点。由此促进学生围绕相关课题开展讨论,这样的方式也为那些不太愿意在众人面前发言的学生提供阐述自己观点的机会。

(3)MIT的教室一般都是阶梯教室,这样既可以让每一位学生能够清楚地看到任课教师各种面部和身体语言,也使授课教师能够看到所有的学生,时刻了解学生对课堂内容的各种反馈。学生座位之间留有通道,授课时教师会在整个教室里走动,确保能够走近每一位学生的身旁,让每一位学生感受关注和重视,这样也让学生感到亲切随和。实践表明,这样做更能让学生畅所欲言。

(4)教学内容融合任课教师的研究成果。任课教师对于自身的研究内容一般都有较深的认识和理解(甚至有些理论和技术是世界首创),讲解过程中能够广征博引,相关难点都能够娓娓道来,所以往往更为生动有趣,可以激发学生的提问热情和学习兴趣。教师只有在相关领域内具备一定的科研水平才能更好地讲授相应的课程内容。

(5)在讲解有关技术内容时,会邀请业界一些著名人物走进课堂为学生讲解其擅长的话题。以MIT互联网方面的课程为例,任课教师会请IBM、Google、Microsoft等著名科技公司副总裁或技术总监级别的人物为学生讲一堂课(有时是远程视频连线,教室配有大屏幕高清投影和高速网络),之后一般设有学生提问环节。这样的课程很受学生欢迎,学生提问也非常踊跃。

综上所述,在课程开始前精心为学生挑选各章节相关的阅读文献(分为必读和选读部分)、建设课程BLOG促进师生间交流、将研究内容融入课程内容等教学方式和方法都值得借鉴,并且通过一段时间的准备加以实施。但是中国学生不愿意上课发言和参与研讨也有其成长环境中文化背景的影响,例如,追求标准答案的应试教育、谨守中庸之道处事态度等。而美国学生从小就让他们不断地进行发言和表达的训练,从幼儿园开始,每天都会让小孩子轮流讲一下昨天发生的事情。参加各种活动和社团也是如此,久而久之,养成了愿意并且善于表达自己观点的习惯。所以对于我们的学生,不仅要营造让其发言的环境和气氛,也需要有意识地利用各种机会培养他们发言的习惯。

2 学生不愿意在课堂上发言和参与研讨的主要原因及改进建议

课题组对两个班52名学生针对不愿意在课堂上发言和参与研讨的问题进行面谈,每位学生面谈时间为20~30分钟。学生不愿意在课堂上发言和参与讨论的主要原因可归纳为:害怕回答错误后造成对自己不利的影响(特别是教师随后会给出答案的情况)、没有养成积极发表自己观点的习惯(与成长的文化和环境有关)、担心积极发言后被别人说爱表现、课堂上没有能够很好地营造出各抒己见氛围。调查过程中同时也听取了学生对让他们能够积极主动发言的一些建议和意见,归纳为以下几点。

(1)讨论的问题应该是一些不存在对错的开放性问题。

(2)可以先由教师开题和启发,然后找到学生感兴趣的几点展开讨论。

(3)教师要营造随和的课堂气氛,需要有一个破冰的过程,让学生放松不害怕。

(4)可以采取分组讨论然后再由学生总结发言的方式。

(5)提出一些学生比较熟悉且有启发的问题比较容易让学生展开交流。

(6)发言和讨论适当增加一些平时成绩(但也有学生担心别人认为他为了成绩而发言,所以增加成绩的比重也不宜过高)。

(7)不要仅对一个学生提问,要求其他学生可以随时补充。

(8)对于有标准答案的问题,可以采取按座位顺序点名提问回答的方式。

综合以上学生的意见和建议,为了让学生积极参与课堂发言和研讨应当尽量营造轻松随意的课堂气氛,提出的问题也应是开放性的(即没有标准的答案),任课教师要善于引导和组织课堂讨论,在提出问题前给予必要的讲解和启发。

3 教学方式调整和课堂教学实践

通过借鉴国际一流大学和国内名师的先进教学经验,针对中国学生,特别就数据结构与算法设计课程的教学方式提出了一些方案和措施,并且进行了相应的课堂教学实践。虽然这些方案和措施还有待进一步完善和改进,但是课堂教学效果和学生参与研讨和发言的意愿明显提高。具体的方案和措施包括以下几个方面。

3.1 尝试诱导式、研讨式和互动式教学方式

任课教师要改进之前以灌输式知识传授的教学方式,尝试采用诱导式、研讨式和互动式教学方式。教学过程中一般首先给出实际的应用问题,然后要求学生尝试提出解决问题的算法,其他学生需对提出的方法进行评价,提出不足之处和改进方法,然后通过讨论这个算法的缺点,引出克服这个缺点的其他算法,最后对解决相同问题的不同算法进行比较和归纳。适当增加学生对相关重要文献的阅读量,并且根据阅读和调研结果进行课堂讨论。以NP完全性问题教学为例,由于学生还没有学习计算理论方面的课程,对于理解NP问题和NP完全性问题有一定的困难。首先任课教师介绍旅行商问题,接着让学生尝试寻找有效地求解算法,在教师引导下讨论得出结论:在现有计算机体系结构和运算能力的基础上,一定规模的旅行商问题目前不存在找到最优解的计算复杂性为多项式的算法;然后指出存在一类这样的问题,并且任取这类中的一个问题,再任取这类中的另一个问题,则一定存在多项式时间复杂性的算法,即可以把前者转变为后者。如果存在解决前者的多项式算法,必定存在能够解决后者的多项式算法;最后指出目前仍然没有找到多项式算法来解决这类问题,同时也不能证明这样的多项式算法不存在。为了让学生加深对上述问题的体会并且熟知典型的NP问题,将学生分成9组,每一组给出一对问题,其中一个属于P(多项式)问题,一个属于NP问题。要求学生调查这一对问题在应用中出现的实例和变体,然后设计可行的解决方法。并且要求每组以课堂演讲的方式向师生介绍他们的调查结果,听取报告的教师和学生可以随时进行提问,要求做报告的学生回答。教学实践表明,此举加深了学生对NP完全性问题的认识和理解。

3.2 从解决实际问题出发,培养学生提问和思辨的能力

对于每个知识单元,首先提出若干个实际应用中的问题,在提出可行的数据结构与算法前,引导学生进行讨论,并且提出自己的解决方案。通过分析学生所提出的各种方法,比较之前已学方法,归纳出新的数据结构与算法的特点和用途,最后在深入剖析和讨论的基础上进行扩展和综合。

3.3 借鉴国际一流大学的教学内容和方式,弥补与国际先进授课水平之间的差距

数据结构与算法设计课程的教学内容和方式借鉴了美国麻省理工学院的同名课程,并尝试进行诱导式、研讨式和互动式教学。课程的教材、讲义、作业、实践和考试全部使用英文,外教采用英语授课。将世界顶尖级学者撰写的经典著作Introduction to Algorithms作为课程的教材,并且根据中国学生的生活经历和背景文化,对部分案例进行相应的增补和改写。

3.4 以应用为导向,培养综合型人才

目前计算机学科方面的教学,一般从计算机基础知识和编程原理开始,经过若干中级课程,直至大学三、四年级,学生才可能涉足整个软件系统开发的全过程,这样往往造成“只见树木,不见森林”的情况。学生已经学习了构成软件系统所需的知识和技术,但是难以针对某一现实应用,将所学较好地综合起来。在大学低年级时,以完整系统开发和应用为目标,让学生在专业学习的早期就能够了解和体会实际应用的复杂性,掌握并实践综合集成各项技术的方法和手段。学生只有较早地了解整个软件系统的开发与应用,才能在今后创造性地综合运用所学,成为既有较高专业水平,又对现实应用有敏锐洞察能力的复合型人才。

3.5 以科研带动和促进教学,将最新技术的发展成果融入教学内容中

数据结构与算法的基本内容虽然相对稳定,但对已有数据结构与算法的扩展和结合,特别是解决新的应用方面的发展却日新月异,知识更新和演化速度较快。数据结构与算法设计课程组的教师在现有教材的理论体系和教学内容的基础上,及时了解和把握技术发展的新动向,将最新的理论创新和技术进步充实到教学内容中,每年都增补紧跟学科发展的新内容。此外,任课教师会指导学生参与自己的科研项目,或者推荐学生进入其他教师的实验室从事相关的科研活动。

这些方案和措施的实施,使得数据结构与算法设计课程能够在较短的时期内形成科研和教学并线、讲解和演示并重、理论和实践并行的特色。课题组教师不断用科学研究和国际学术交流的成果充实课程的内容,使课程能够充分体现目前算法理论和应用方面最新的发展和动向。在教学中始终坚持理论与实践相结合的原则,从经典案例引出科学问题,并强调对学生逻辑思维和动手能力的培养。

数据结构课程设计篇(7)

0、引言

数据结构是高等学校计算机科学与技术相关专业的一门必修基础课,对于训练学生进行复杂程序设计和养成良好程序设计习惯具有重要作用。它上承计算机导论、程序设计语言、离散数学等基础课程,下启算法设计与分析和计算复杂性理论,是数据库、软件工程、编译原理、操作系统等计算机专业核心课程的先修课,只要学生毕业后还从事与计算机软、硬件开发相关的工作,数据结构的知识必然会或多或少地用到。此外,该课程中的很多结构和算法也是更高层次的计算机应用技术领域,如人工智能、模式识别、机器学习、网络信息处理、多媒体技术等课程的根基所在。

目前,数据结构课程的教学多以传授知识、描述抽象数据结构及其存储和算法为主,并辅以一定的上机实验。由于该课程知识点较多,且相对独立,许多学生在学完该课程后,大都能看懂数据结构的算法描述却无法针对实际问题设计相关的结构和算法。案例教学是一种非常有发展潜力的教学模式,在课堂教学中,如果能够设计有具体应用背景及可满足不同层次学生需要的综合性案例,并指导学生对其进行积极的思考、分析、讨论和编程实现,将会极大地帮助学生深刻理解问题的原理和本质,起到举一反三、融会贯通的效果。

1、数据结构课程教学中的主要问题

数据结构是一门实践性很强的课程,其内容涵盖了线性表、栈、队列、数组、串、树、图、查找和排序等许多知识,目前的教学主要强调不同类型数据的逻辑结构、存储结构和基本运算的实现。由于不同类型的结构之间相对分离,知识点相互独立,学生在学习的过程中并不能很好地将课程的内容连贯在一起形成一个整体。另外,课堂教学中的举例一般只偏重于某个具体的知识点,使得课程综合性不够,而且与实际应用联系不够紧密。学生在学习该课程的过程中并没有学以致用的体会,兴趣不够,也没能形成融会贯通、举一反三的能力。虽然该课程也安排了一定量的实验环节,但一般只是将所讲述内容的伪代码翻译成高级语言,或是模仿课堂教学的例子完成一些简单的问题。因此,课程实验只是对教学内容的一个简单验证,并没能教会学生应用所学知识解决具体问题的思路和方法。

2、数据结构教学中案例的设计原则

案例教学是一种非常有发展潜力的教学模式,在激发学生学习积极性和实际应用能力等方面具有较好的效果。在数据结构课程的教学过程中,如果能够把有联系的内容相互串联起来并构成与实际应用相结合的综合性案例,启发和引导学生从不同的角度和深度进行分析、讨论和编程实现,将有助于学生形成比较完整的知识体系,并通过解决实际问题激发学生学习的兴趣和信心。

精心选择的具有综合性和启发性的案例是案例教学的核心和关键。在设计和选择数据结构教学案例时要注意如下原则:

1)案例要结合教学内容。

案例中应主要涉及学生已学过或即将学到的内容。如果案例中所需的很多知识学生都不具备,他们会感到力不从心或无法下手,从而失去学习的信心和兴趣。

2)案例要考虑学生的个体差异。

案例应设有多个难度等级,不同程度的学生通过自身的努力,可以解决到不同程度的问题,也便于教师一步步地启发学生去分析和思考。

3)案例要难易适当、简繁相宜。

案例太简单,无法引起学生足够的重视,起不到讨论、分析和思考的效果,也不能满足程度较高学生的学习需要;案例太难太复杂,会使学生望而生畏,也不便于教师在有限的课堂时间内进行充分的分析和讨论。

4)案例应尽量与实际应用相结合。

通过简化的实际应用,能培养学生的学习兴趣和信心。“知之者不如好之者,好知者不如乐知者”,如果学生能够通过自己的努力解决了实际问题,他们会有一种由衷的成就感,其自信心和学习的动力会得到极大的增强。

5)案例要有综合性。

能尽量将不同的知识点综合起来,起到融会贯通的作用。

6)案例在精而不在多。

案例的目的是鼓励学生综合运用所学的知识、激发学生学习的兴趣和信心。因此,案例一定要精心设计和选择,教师一定要参与讨论,层层剖析,逐步深入。

3、拓扑排序及其应用的案例设计

这里以图的拓扑排序算法及应用为例,详细解释了数据结构教学中案例的设计方法和过程。该案例综合运用了图的存储、栈、队列、优先级队列、插入排序等相关知识,具有较强的应用背景。

3.1 案例的要求

案例名称:图的拓扑排序及其应用。

案例要求:已知某专业所有课程及课程之间的先导和后继关系,假设所有课程在每学期都能提供学生选修,学生每学期最多只能选6门课。编写一个为学生安排培养计划的算法,使之能用最少的学期数修完所有课程。

输入规范:

第一行为N,M。N为课程总数,M为课程关系总数,课程编号从1到N。

下面M行,每行两个整数a,b。表示编号为a的课程是编号为b课程的前导课程。

输出规范:

第一行是最小学期数k。

以下k行分别是每个学期所修课程。如果有多种课程安排方式,取字典序最小的。

3.2 案例的分析

该案例要求编写一个算法,对给定的课程及其先导、后继关系,制定出学生的培养计划,具有较强的应用背景。该案例主要考察的是图的拓扑排序算法及其应用,同时也涵盖了栈、队列、优先级队列和排序等相关知识,具有较强的综合性。所谓拓扑排序是指将有向无环图中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若∈E(G),则u在线性序列中出现在v之前。它在任务安排、工程项目管理等领域都有重要的应用,是图结构上的一个重要算法。

对于上面的案例,如果不考虑学生选修课程的学期、每学期的课程数和课程安排的输出要求,该问题就是一个简单的拓扑排序问题。以课程为结点、课程之间的先导和后继关系为边,建立有向图并对图中的顶点进行拓扑排序即可。其实现非常简单,具体可参见文献中相关章节的算法(简称算法I)。该算法采用邻接表存储有向图,通过链栈来选择和保存拓扑排序过程中入度为O的顶点。文中已给出了详细的算法和实例,学生通过老师的讲解都能掌握和实现,这也是拓扑排序算法的基本要求。

显然,就本案仞j而言,直接应用上述算法并不能满足任务要求,需要对其进行进一步的改进。在这里需要考虑的问题主要有3个:(1)课程的排课学期及每学期选修课程数的限制;(2)在有多种排课方式时,输出取字典序最小的那个排课方案;(3)在最少的学期内修完所有的课程。

从上面的分析可以看出,该案例具有较强的综合性,且可以根据需要解决的问题分为多个层面。教师在课堂教学时,可以引导学生根据个人能力不同程度地分析和实现该案列。下面分别就这3个问题逐步进行分析,讨论算法的设计方案。

3.3 案例的实现

3.3.1 考虑开课学期和每学期选修课程数限制的算法(算法I)

由于题目中要求给出每门课程的排课学期及每学期选修的课程数最多为6门,所以在设计图的邻接表时,表头结点中除了课程的序号外,还应包括该课程的先导课程数和课程的排课学期。在建立图的邻接表时,应根据课程之间的先导、后继关系,自动计算出每门课程的先导课程数,并将每门课程的排课学期初始化为l,然后建立链栈保存先导课程数为0的课程。

为了确定每门课程的排课学期,在拓扑排序时,从链栈中取出先导课程数为0的顶点并输出之;然后从有向图中删除该课程所在顶点和以它为尾的所有弧,同时更新对应课程的先导课程数目。另外,如果某课程的先导课程数已为0(可以确定其排课学期了)且其排课学期小于当前课程的排课学期数加l,则将其更新为当前课程的排课学期数加l,具体分析如下:

q=ga[j].1ink;//q是指针,指示以j为尾的弧,j表示当前要排课程的序号

这样对表示课程及其关系的有向图进行拓扑排序后,即可确定每门课程的排课学期,它放在课程结点的term域中。

然而,题目中要求每学期的最大开课数目不超过6,所以还需要进一步对课程的开课学期进行调整,当某一学期的课程数目超过6时,将其调整到下一学期,后序学期的课程需要类似处理,这里不再赘述。

3.3.2 字典序最小的排课算法(算法Ⅱ)

由于题目中要求有多种课程安排方式时,取字典序最小的,所以需要对上面所设计的结构和算法进行进一步的完善。这里可以设计一个优先级队列来存放拓扑排序过程中先导课程数为0的课程。队列中课程的优先级为课程的排课学期和课序号,即排课学期越小的课程越靠前,排课学期相同的情况下,课序号小的课程优先。当某一门课程的先导课程都已安排后,可以采用简单的插入排序算法将其放到优先级队列的合适位置,以便在后序处理的适当时刻为其确定排课的学期。优先级队列的插入可仿照插人排序算法来实现。

3.3.3 修课学期数最小的排课算法(算法Ⅲ)

为了使所有的课程在最少的学期数内完成,在图的邻接表表头结点中再增加一个存储每门课程后继课程数的域。同时,将优先级队列中课程的优先级调整为课程的排课学期、后继课程数目和课序号。排课学期越早、后继课程数目越多、课序号越小的课程优先级越高,在队列中的位置越靠前。在拓扑排序过程中,当有多门课程可以同时安排时,应选择后继课程较多和课序号较小的课程优先安排,这样可以保证学生在最短的时间内修完所有的课程,且排课方式是所有可能方案中字典序最小的。

3.4 案例的测试

实例验证是保证所设计算法正确性的一个重要方面。在设计好算法并将其转换成程序后,还需要精心地设计一些典型实例来验证算法的正确性。我们为了验证上述分析的正确性,设计了如下的两个有向图,来对前面设计的不同算法进行验:证。

1)测试实例1(见图1)。

图1中共有12门课程,课程关系总数为16,算法(I)的输出为1、2、3、4、5、7、9、10、11、6、8、12;算法(Ⅱ)和(Ⅲ)的输出最少需要5个学期,第1学期的课程为1、9;第2学期的课程为2、4、10、11;第3学期的课程为3、6、12;第4学期的课程为5、8;第5学期的课程为7。显然,对于图1中的课程,算法(Ⅱ)和(Ⅲ)都能给出正确的培养计划。但算法(Ⅱ)并不能保证在最少的学期内修完所有的课程,测试实例2就说明了上述问题。

2)测试实例2(见图2)。

图2中共有9门课程,课程关系总数为8。算法(Ⅰ)的输出为7、1、2、3、4、5、6、8、9;算法(Ⅱ)的输出为:最少需要3个学期,第1学期的课程为7,第2学期的课程为1、2、3、4、5、6,第3学期的课程为8,第4学期的课程为9。显然,该算法能够保证每学期安排的课程不多于6门,在所有可能的方案中其字典序为最小,但它需要4个学期,时间并不是最少的。算法(Ⅲ)在拓扑排序时,考虑了课程的后继课程数,由于课程8的后续课程较课程1、2、3、4、5、6多,因此优先安排课程8,得到的培养计划为:最少需要3个学期,第1学期课程为7;第2学期课程为1、2、3、4、5、8;第3学期课程为6、9。

数据结构课程设计篇(8)

“数据结构”是高等职业技术学院(以下简称高职)计算机相关专业的一门重要专业基础课,重点讨论计算机数据处理领域的方法问题,具有概念较为抽象、方法灵活、强调逻辑思维能力的特点。对于高职学生来说,这是一门难度较大、实践性强的课程。

实验是本课程教学的重要组成部分,是帮助学生加深对教学内容的理解,提高学生利用程序设计语言实现算法,提密逻辑思维能力不可缺少的组成部分。由于Java语言是一种完全面向对象的程序设计语言,因此在提高程序的复用性和安全性时,在不同类的资源配置方面,较面向过程的程序设计语言有更高层面的要求,这给基础薄弱的学生完成实验带来很大困难,因此我们需要在要求上、结构上、方法上重新组织和设计实验。

1实验要求分析

1.1基本要求

掌握不同逻辑结构的基本算法,并通过程序加以验证。在实验的总体结构中实现函数的编写、调试,并通过调用测试验证其准确性。这是每个学生都必须完成的部分。

1.2提高性要求

(1) 编写在基本算法上进行修改的算法。

(2) 能够使用课程提供的逻辑结构和物理结构实现其他拓展性实验,如统计二叉树的结点个数等,开拓学生的思路,提高学生分析问题、解决问题的能力。

(3) 灵活应用编写的函数,实现不同的功能要求,如利用队列实现单链表的逆序排列,培养学生对实验总体结构配置、函数外特性的认识。

这部分实验主要针对基础较好的同学,为他们提供发挥能力的空间,有效提高他们的学习兴趣。[4]

1.3扩展性要求

部分学生学习基础较差,对类的认识较模糊,对函数在程序设计中的作用缺乏认识,需要在函数的作用、函数的编写及函数的调用等方面加强实验。

2实验作业的设计

2.1作业的说明和任务

说明:介绍实验使用的类及实验的结构构成。

任务:指明需要编写的函数及相应的调用要求。

2.2相关的类

提供完成实验所使用的类。

2.3作业主体

包括实验的总体结构及需要编写的函数,对于编写的函数只给出函数名,要求完成整个函数;在整个结构中以填空方式调用函数。对于提高性的实验部分,以文字、图示方式给出提示,加以引导。

根据课程的要求和学生的现状设计客观、可行的作业。一要以符合人们认识事物的特点加以引导,避免因为作业难度太大挫伤学生的学习热情;二要达到预期的实验目的。因此在作业组织中要做到有说明,对整体结构加以介绍;有提示,给学生完成实验的思路;有参照,对有一定难度的任务给出具有参考价值的函数。

3实验的实施

3.1实验准备

实验前开设实验指导课,说明和分析实验作业的构成、注意点及实验所涉及的类,介绍和分析与实验有关的算法。

3.2实验过程

加强现场指导,注意与学生的交流、沟通,及时发现学生的困难,有针对性地帮助学生提高认识、解决问题。为了提高实验效率,提示学生注意类的小型化、原子化,提高他们发现问题和解决问题的能力。

3.3实验结果分析

实验完成后进行总结,对实验作业进行分析,主要讨论实验中的一些普遍问题,不仅有对算法的分析,还有对实现算法所用的存储结构、实现过程的要素和环节的讨论,帮助学生总结实现算法的内在规律。[5]

4编写函数的提示举例

下面以编写函数rev()为例,实现将单链表中的数据按相反的顺序存储的功能。

提示:

4.1基本过程1

(1) 将单链表拆分成两个部分,附加表头结点单独列出,建立一个空的单链表(称为单链表1),其余部分构成一个无附加表头结点的单链表(称为单链表2)。

(2) 当单链表2不空时,取出第一个结点,插在单链表1的表头位置(即附加表头结点之后)。

(3) 重复②操作,直到单链表2为空。[3]

4.2基本过程2

当单链表不为空时,先将HL指向表头结点,即表头附加结点的后一个结点,然后将表头附加结点的next域设置为NULL,依次从单链表中取出表头结点,将其插入表头附加结点之后。[1][2]

以上过程如图1~图5所示。

图1初始情况

图2拆分成两个单链表

图3取单链表的第一个结点

图4插入第一个结点

图5插入第二个结点

5结束语

由于采用了以Java语言为算法的实现语言,“数据结构Java语言描述”课程对高职学生提出了更高的要求,而如何通过Java语言实现算法一直是本课程的一个难点。因此,要设计合理有效的实验环节,除了组织切实可行的实验作业外,还要加强引导、分析和总结,从学期开始的全程指导到逐步放手,帮助学生在学习过程中发挥积极的作用。由于本课程是我系近年来才开设的(以前采用C/C++语言描述),因此课程的实验组织还需要进一步完善。

参考文献:

[1] 朱战立. 数据结构-Java语言描述[M]. 北京:清华大学出版社,2005.

[2] Duane A.Bailey. 数据结构-Java语言描述[M]. 北京:清华大学出版社,2004.

数据结构课程设计篇(9)

关键词:研究型教学;实验教学;智力能力培养;教学方法;数据结构

社会的发展对当前我国高等教育提出了具体的要求,所培养的学生必须具备全面发展的素质,包括掌握科学的学习方法和具有会学习的本领,具备积极创新的能力和生动活泼的特征。这一特征,使得高校教育改革应该不断地向更高、更深刻、更全面的层次上发展。教学改革是教育改革中最为重要的一部分。如何创造良好的学习环境和条件,革新教学手段和方法,全方位地培养学生的智力和能力,关键是要转变教育观念,改革人才培养模式,改进教师的教学方式,增强学生学生的学习的主观能动性,积极采取启发式、研讨式等研究型教学方式。

但是在高等教育过程中对研究型教学的认识程度还不够高,开展的深度与广度都还不够,从而成为制约教学质量进一步提高的一个瓶颈而引起了各高校的普遍关注。本文结合我们开展研究型教学的实践,对《数据结构》课程的实验教学改革进行了一定的尝试,取得了初步的教学效果。

一、研究型课程教学的基本理念

国内研究型教学的实践,一方面是对国外先进教育方式的借鉴,另一方面也是对国内实施已久的高校学习与科技兴趣小组活动乃至启发式、讨论式、发现法教学方式等经验的系统提升。

1、赫尔巴特“主知主义”课程理论。赫尔巴特的课程理论被称为“主知主义”,它是以知识作用为本位的课程论,同时还明确主张学生从总体上对教师保持被动状态,强调教师的权威意志和主导责任。因而,人们把赫尔巴特视为“教师权威论”或“教师中心论”的代表人物。

2、杜威的“实用主义”课程。杜威主张教育要“以学生为中心”,要求教育的一切措施围绕着学生来组织,以促进学生的个性发展。他认为学生的学习不应是被动接受知识的过程,而类似科学家研究发现知识的主动探究过程。杜威的教育思想深刻地影响了20世纪初至当代的全部教学论的发展。教育家陶行知先生是杜威的学生,他将社威的教育思想引入我国,并在国内进行了卓有成效的教学实践,创立了“知行统一”的课程理论,至今对我国教育界仍产生着深刻影响。

3、研究型课程理念。研究型课程教学的基本理念是:对历史上传统的教育学派的“主知主义”、“教师中心论”和进步教育学派的“实用主义”、“学生中心论”中合理的部分加以有机的整合,扬弃其狭隘、刻板僵化的部分,注重发挥教师的主导责任和学生的主体作用。它以促进学生的个性发展为宗旨,以改变学生单纯地、被动地接受知识传授的学习方式为着眼点,构建一种开放的学习环境,为学生提供一个多渠道获取知识,理解自然、个人、社会等问题,并将学到的知识综合应用于实践的机会。它在帮助学生进行接受式间接学习的同时,形成一种对知识的主动式直接探索,以提高其解决实际问题的能力的研究型学习形式。

二、研究型课程教学的指导思想和教学原则

《数据结构》实验教学是一种验证型的教学模式,将课堂上所学的理论知识与计算机上机实践相结合,通过利用高级语言环境对书本上的算法进行验证,从而达到巩固理论知识的目的。而研究型实验教学的指导思想,不仅仅在于验证书本知识和巩固理论知识,而是更加重视理论知识的综合应用,强调整个过程的参与和学习,发挥学生学习的主动性,激发学生的学习兴趣和创造力,培养学生的团队精神和协作意识。因此,全面培养学生的智力和能力,是研究型实验教学的指导思想。

在上述教学思想指导下,在实验教学过程中必须坚持的教学原则是:

1、教师指导与学生动手并重。虽然有效快捷的学习离不开教师的指导,但指导只是一种手段。在现代教学过程中,教师的指导旨在教会学生学会学习,这不仅是今后终身教育的要求,而且只有学会学习,掌握了科学的学习方法,学习主体才会真正具有一种参与到教学过程中去的能力。

2、面向结果的教学和面向过程的教学并重。面向结果的教学是指教师在教学活动中以使学生获得令人满意的结论作为教学的直接意义,它是传统教学所强调的教学形式。面向过程的教学则是教师在教学活动中重视引导学生对知识形成过程的理解与实践,并在理解和实践中仔细体验获得这一知识的基础和条件,以及它与其他知识的相互关系等。从主动学习的角度看,面向过程的教学会给学生主体带来一种更高的价值。

3、一般能力的培养与创造品质的形成并重。学生能力的培养已成为现代教育的重心,然而在促进学生的一般能力有较全面提高的同时,教师应该对学生的创造能力的发展给予特别关注,因为创造品质已成为现代人素质结构中最重要的组成部分。

4、理论学习与实践活动并重。理论来源于实践,反过来又指导实践。只有坚持理论联系实际,才能有所发现,有所创造。

5、接受式学习与探究式学习并重。接受式学习是一种被动的学习过程,而探究式学习则是一种主动的学习过程,只有发挥了学生主体的积极性,才能使得学习收到事半功倍的效果。近年来,我们对《数据结构》实验教学的研究型教学模式的探究,正是坚持了以上这些教学原则。

三、研究型《数据结构》实验教学环节的设计与实施

研究型教学依据其内容的不同可分为认知理解类和实践应用类。研究型《数据结构》实验教学属于实践应用类。主要凭借算法构造思维方式,从具体操作规范入手,通过操作过程的构造实施,解决特定问题,理解、习惯、掌握算法思维方法是一个构造性、研究型方式的训练过程,其核心内容就是通过学习结构技术的过程,培养学生算法设计能力以及创造性思维,培养举一反三、触类旁通的能力,以达到提高学生应用知识解决复杂问题的素质能力和的目标。计算机的程序设计是一项创造性的智力劳动,让学生深刻掌握这一套算法构造思维方法,是实践环节所要解决的核心问题。因此,我们注重为学生创设智力发展的环境与条件,设置智力因素和非智力因素相结合的条件。我们根据研究型《数据结构》实验教学的指导思想和教学原则,考虑到培养计划的安排,我们对每一次实验课都进行了精心地策划,并要求写出实验报告。主要分为确立问题阶段、实践体验阶段和成果交流阶段等三个阶段来进行。这三个阶段并不截然分开,而是相互交叉推进的。实施流程通常为:“引出问题,建立假设”——“研讨探究,验证假设”——“得出结论,切磋交流”——“归纳总结,形成评价”。

⑴确立问题阶段。教师介绍上机环境及算法在相应数据结构中的地位和作用,包括使用的编程环境,在验证算法过程中需要注意的问题,讲解如何查找相关资料,并展示历届学生的实验报告样本。学生3—4人自由组合成立研究课题小组,选出组长;通过查找相关资料,扩展相关算法,提出研究课题,写出实施计划。在此基础上,教师组织各小组进行答辩,组长对研究课题的目的、背景资料、理论依据、技术方法、计划和目标等进行解答,并回答教师提出的有关问题。

⑵实践体验阶段。教师根据实验室条件、答辩情况和课题难易程度等,有重点地抽查6—7组作为本次实验教学课的指导对象,并强调在上机实践过程中的注意事项与具体要求,讲解实验报告格式和撰写方法,并要求各组人员进行具体分工。学生利用4节课的时间上机实践,并记录编程调试过程中的相关数据和出错信息。

⑶成果交流阶段。实验完毕得出结果后进行资料整理,并开始撰写实验报告。教师对各组的实验报告进行初审,提出具体修改意见。各组学生对实验报告认真修改和补充,做到报告格式化、标准化,并正式提交给教师再次审查,教师根据情况评定成绩,作为期末成绩总评的参考依据,并在课堂上组织学生交流实验感受及取得的成果。

通过实验实践内容的训练,突出构造性、研究型思维训练的特征,提高了学生组织数据与进行编写大型程序能力;更好地理解和掌握了算法设计所需的技术,为整个专业学习打下了良好的基础。学生通过完成《数据结构》实验课程的设计任务,不仅把设计优良算法与掌握面向对象的编程技巧结合起来,而且能培养综合运用所学知识来独立解决实际问题的能力,给学生发展个性化以更加广阔的天地。实验教学的改革与实践结果证明,贯穿于实验教学环节的研究型实验教学,使得理论教学与实验教学有机的整合,收到了良好的教学效果。

四、研究型《数据结构》实验教学在人才培养过程中的作用

1、研究型《数据结构》实验教学有利于学生的智力开发和能力培养。

教学的目的不仅要使学生获得知识,而且更要使学生获得智力的发展,要使学生掌握点石成金的方法。能力与智力是两个相对独立的概念,二者有区别,又有密切联系。二者之间不一定成正比例关系。智力属于认识活动的范畴,而能力属于实际活动的范畴。智力是保证人们有效地认识客观事物的较稳定的心理特征的综合,能力是保证人们成功地进行实际活动的较稳固的心理特征的综合。智力结构由注意力、观察力、记忆力、想象力和思维力5部分组成,能力结构由组织能力、定向能力、适应能力、操作能力和创新能力5部分组成。研究型《数据结构》实验教学是全过程的教学,从给定的算法到算法扩展、从选题到实验报告及其答辩的所有过程中,几乎都是以学生为主体开展活动,教师仅仅负责组织和教学引导。特别是在科学研究方法和科技文献的查找、科技报告的写作训练等方面,让他们在低年级就能得到很好地锻炼,为今后写好毕业论文打下了坚实的基础。所以,这种新型的教学方式对于全面培养学生的智力和能力是十分有利的。

2、研究型《数据结构》实验教学可激发学生的求知欲和创造力。

教师要善于采取相应的改革措施,创设智力发展的环境与条件,用生动的实践活动来巩固和强化学生的求知欲,激发学生的好奇心、兴趣、想象力和创造力。因为兴趣是推动学生求知欲的强大内在动力,兴趣往往是创造的先导,同时想象在人的智力活动中也占有极重要的地位。由于研究型《数据结构》实验教学与中小型软件开发结合起来,使学生们很感兴趣。他们本来对软件开发充满了好奇与想象,在学习了《数据结构》以后,有了一定的算法理论基础,可以根据自己的兴趣,充分发挥想象力和创造力,对软件开发进行有益的尝试。

3、研究型《数据结构》实验教学有利于培养学生动手动脑、理论联系实际的能力。

研究型《数据结构》实验教学要求学生动手动脑,手脑并用,既应用了已掌握的知识,又促进了思维力、理解力和创造力的发展。所以,我们认为知识与智力上的综合训练是发展智力的重要条件。在实验教学活动中,学生们不仅动手编制了相关的应用程序,而且还掌握了使用相关编程工具的方法,并通过实践和反复总结后,理解了对同一算法可以从多种不同的角度来实现的深刻内涵。

4、研究型《数据结构》实验教学能培养学生的团队精神和协作意识。

学生积极参加研究型《数据结构》实验教学活动,不仅促进智力和能力的发展,而且能很好地培养学生的团队精神和协作意识。由于我们的整个教学活动是以小组进行的,无论是在上机编程,还是在查阅资料、撰写和修改实验报告,各小组成员都能认真参与,并很好地配合组长工作,表现出良好的团队精神和协作意识。最后,当顺利完成实验报告并通过教师验收时,他们感到有一种来之不易的集体成就感和荣誉感。所有这些,使他们更加坚定了自信心,激发了学习兴趣,锻炼了能力,提高了智力。

当然,同传统的实验教学相比,研究型《数据结构》实验教学对教师的要求更高了,付出的也更多了,同时得到的也更多。因为这是一种过程的学习和参与,学生和教师都从中受益匪浅。因此,只要我们提高了对研究型实验教学的认识,端正了态度,掌握了科学的指导方法,就会去不断地创新,必将能培养出智力和能力全面发展的一流人才。

参考文献

[1]文辅相. 素质·方法·创新[J].高等教育研究,1999.

[2]陆国平,江莹,李松.研究型大学与思想库[J].高等教育研究,2001.

[3]沈显生,尹路明,李树美,杨捷频. 研究型野外实习教学的设计与实践[J].教育与现代化,2002.3.

数据结构课程设计篇(10)

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

1 引言(Introduction)

随着便携式移动终端的发展,“碎片化”时间的利用率越来越高,人们进入了“微时代”。“微课程”成了时代的产物。所谓“微课”是指按照新课程标准及教学实践要求,以教学视频为主要载体,反映教师在课堂教学过程中针对某个知识点或教学环节而开展教与学活动的各种教学资源的有机组合[1]。现如今各高校大力推动微课程,组织各种微课程比赛,调动教师的积极性,“微课”对于教师来说已不是一个陌生的名词。然而,目前的微课程只是针对一门课程当中的一个组成部分,仅是单独讲解某个知识点,没有形成一门完整的课,还没有完全发挥微课程的优势,并没有应用于真正的教学当中。

《数据结构》课程是计算机课程体系中的专业基础课程[2],作为程序设计的基础,数据结构课程不仅成为高校硕士研究生入取的必考科目,还是各企业招聘员工入职笔试中青睐的学科。如何让学生在课堂教学中对课程有更深刻的理解,并在复习考研和准备找工作中进行更好的自主学习,成为数据结构课程教学的研究重点,本文在分析数据结构教学现状的基础上通过对数据结构知识点的分析,构建合理的数据结构微课程框架,并将其应用于教学中,使得学生能更好的应用“微课程”进行学习。

2 数据结构课程的现状分析(Current situation

analysis of data structure)

数据结构课程是一门比较抽象的课程,而且学生本身知识储备不足[2],所以仅靠课堂上的讲解,不能使学生达到很好的消化吸收的效果。目前,很多高校也开发了网络教学平台,积极倡导教师和学生通过网络平台实现在线探讨交流,通过对网络教学平台的建设,如将大纲日历、教案、教学课件,教学视频上传到教学平台,使学生增加课下自主学习的意识,同时,老师在上课的时候也会给学生提供一些教学视频的网站,如清华教育在线等,然而,虽然教学平台的建设很完整,教师提供的教学视频也很不错,学生却很少好好利用网络教学平台或教师提供的网络视频进行自主学习。主要原因有三点:

(1)教师的课堂教学主要以集中讲授为主,并没有引导学生利用网络教学平台的资源进行自主学习,学生把网络教学平台当成了一个简单的提交作业、下载课件的平台。

(2)教学平台的内容过于繁多,视频基本上为课堂讲授的视频,即使有学生想课下自主学习,在看到45分钟甚至90分钟的教学视频也会打退堂鼓。

(3)教师提供的教学视频,如清华教育在线虽是名校老师讲解,但对于一般高校的学生来说讲解内容过深,没有针对性,很多学生觉得听不懂,打消了自主学习的积极性。

通过“微课程”的概念,专家学者认为“微课程”就是针对一个具体的知识点在短时间内(一般为10分钟左右)做简单明确的讲解,这种讲解不是泛泛的介绍,而是通过精心的设计,最终完成容量小,内容精的视频制作[3]。可以说,“微课程”的出现为我们解决数据结构自主学习难的状况提供了很好的解决方案。如何做到容量小,内容精成了“微课程”视频制作的关键,也是本文的研究重点。

3 基于微课程的数据结构模块化设计与实现

(Modular design and implementation of data

structure based on micro-lecture)

本文依据清华大学出版社出版的严蔚编的数据结构教材[4]进行知识点的划分,构建知识点的模块化,并将其应用在教学中。

3.1 数据结构相关知识点的分析与研究

数据结构课程研究的是数据和数据之间的关系,其基本分为四大类:集合、线性结构、树形结构和图形结构。在数据结构课程中,主要讲解的是后三种结构的逻辑结构、物理结构,以及相关算法的实现。在课程的最后讲解了利用已学过的数据结构解决基本的查找和排序的问题。

上述这些知识点中都具有一定的顺序性、关联性,但又相互独立。如果只是把课程讲解的内容分解成10分钟之内的小视频,除了时间上看着短了以外,没有改变课堂讲解的实质,没有做到真正意义上的微课程。在多年教学经验的指导下,本文要研究的是什么样的知识点适合做成微课程,让学生课下自主学习,课上共同讨论,培养学生自主学习的能力,并且在考试复习时通过温习微课程的视频可以更快的掌握主要题型的解决方法,节约复习时间。

微课程知识点的设定原则为5―20分钟可以被清晰地讲解,且尽量不涉及程序性的内容。栈和队列可以说是操作受限的线性表,其抽象数据类型和现实生活中的很多例子都有相似性,可以将其作为微课程的一个知识点,让学生自主学习。在树形结构中,如何在连续的存储空间中把非线性的东西表示出来可以在短时间内很经典的讲解出来,其链表的表示所以也非常适合做成微课程。二叉树的结构和树非常像,对二叉树的遍历,以及树和森林的转化都是比较独立的知识点,其方法不涉及难理解的程序,将这些放入微课程中。赫夫曼树是二叉树的重要应用,其构造方法可以放入微课程的知识点框架中。在图形结构中图的邻接矩阵表示法和邻接表表示法都可以作为微课程的一部分,深度优先遍历和广度优先遍历的算法虽然不易理解,但其求解方法的思想却可以通过微课程表达出来。最小生成树,关键路径,单源最短路径都是图里的应用,仅把问题的解决方法放入微课程中是比较好的选择。在查找中的折半查找和二叉排序树的构造都是独立的知识点,可以很好的用于微课程的制作。在排序中,会选择相对复杂一些的快速排序和堆排序,仅仅介绍排序的思想。微课程的知识点设定如图1所示。

3.2 翻转课堂辅助数据结构微课程的实现

学生在刚接触数据结构时会觉得特别的抽象,其基本概念和相关的术语并不适合让学生自主学习,线性表是学生接触的第一种线性结构,其逻辑结构,顺序存储和链式存储,以及插入删除等操作都非常的重要,但多数都是枯燥的程序,想让学生在短时间内掌握其精髓并不是一件容易的事,如果这个部分让学生自主学习很可能会打消学生的积极性,所以前几节课程并不适合做翻转课程。在学生已经对线性表有所掌握的情况下,可以将栈和队列的逻辑结构微课程要求学生自己学习,在课堂上进行讨论,在讨论的基础上讲解实现通过自主学习了解的各种操作的程序。树形结构是学生接触的第一种非线性结构,所以其逻辑结构需要在课堂上进行讲解,虽然树形结构的存储结构已经安排在微课程中,但由于是学生第一次接触,所以本微课程部分并不作为翻转课堂的一部分,学生在复习时可以通过微课程进行复习,以更好的掌握知识点。而二叉树的相关微课程可以要求学生自行学习,在课堂上根据学生学习的结果共同研究算法的实现。图形结构和树形结构都属于非线性结构,所以二者具有很多相似的地方,可以由学生自主学习课堂讨论,通过讨论的情况分析学生的掌握情况,因为微课程的内容简单,重要的算法实现还需要在课堂上详细讲解。经过前面的学习,插入和排序的内容无论是应用方面还是程序实现方面都由学生自主完成,通过讨论和测试考察学生的掌握情况。

经过和微课程相结合的翻转课程的设计,使学生习惯通过微课程进行学习,掌握自主学习的能力。

4 结论(Conclusion)

微课程的系统框架对微课程的制作起到了指挥棒的作用,在总体框架下进行各个微课程的制作,在制作过程中绝不仅仅是录制简单的视频,虽然仅仅是10分钟左右,但工作量绝不亚于一节课的准备,不仅要对微课程设计方案,制作电子课件,还要精心准备习题,并配合易理解的答案。只有一个完整系统的微课程,再加上与课堂的相辅相成,才能使得学生在课下自主学习时更有针对性,学生学的更明白,课上讨论也会更丰富,形成良性循环,真正实现了教师学生共同授课,共同讨论的多样化教学体系。

参考文献(References)

[1] 梁乐明,曹俏俏,张宝辉.微课程设计模式研究――基于国内

外微课程的对比分析[J].开放教育研究,2013,19(1):65-73.

[2] 董丽薇.“数据结构”课程教学方法的改进[J].沈阳师范大学

学报:自然科学版,2012,30(2):307-309.

[3] 刘名卓,祝智庭.微课程的设计分析与模型构建[J].中国电化

教育,2013,(12):127-131.

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

社,2012.

作者简介:

数据结构课程设计篇(11)

摘要:结合高等教育心理学中的学习迁移理论,对数据结构课程设计的教学进行了思考与教学实践。文章针对数据结构课程设计的教学目标制定、设计题目设计、考核方式等各个环节的特点与问题,阐述了学习迁移理论对数据结构课程设计的指导作用;在此基础上给出了所制定的课程设计题目及一些有代表性的学生作品欣赏;对课程设计与课程实验的区别进行了论述。对今后数据结构课程设计教学具有很好的参考和借鉴价值。

关键词:学习迁移;课程设计;题目设计;作品欣赏

0 引 言

数据结构是北京林业大学信息学院的计算机科学与技术、数字媒体艺术、信息管理与信息系统等专业的一门重要专业基础课,也是必修课。它的总学时为64学时,其中理论授课48学时,实验16学时,课程设计(实习)一周,通常安排在第3学期或者第4学期开课。数据结构也是软件开发与设计、计算机算法研究与实现等课程的基础,其主要内容包括线性表、栈和队列、串、数组和广义表、树、图、查找算法和排序算法等。数据结构课程设计通常是在数据结构的授课环节以及实验环节之后,单独安排学生用大约一周的时间来完成一个较大的作业,以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

学习迁移一般是指学习者已有的知识经验、技能等对另一种学习的影响。学习迁移是知识学习过程中普遍存在的。由数据结构课程实验到课程设计,是对数据结构基础知识到综合能力的一种自然过渡,这个过渡即为学习迁移。学生在课程学习过程中,如果能够很好地应用学习迁移,将有利于完善知识结构,收到举一反三、触类旁通的良好学习效果。可见,从数据结构基础知识到数据结构课程设计能力培养,是一种学习迁移的过程。因而,在课程设计的教学实施过程中,学习迁移理论对提高教师的授课质量和学生的学习效果起着非常重要的作用。

笔者对学习迁移基本理论进行了分析,并结合其在数据结构课程设计的实际教学实施过程中的体现,阐述了如何有效应用学习迁移理论来提高授课质量和学生的学习效率。

1 学习迁移基本理论

学习迁移是指一种学习中学得的经验对另一种学习的影响。迁移的基本过程是一个概括出新旧学习本质特征的过程。它是学习者运用已有的认知经验和技能,在对新的学习内容进行分析概括的基础上实现的。学习迁移有顺向和逆向两种,先前学习对后来学习的影响称为顺向迁移,反之则为逆向迁移。不论顺向迁移还是逆向迁移,都有正负之分。正迁移指一种学习对另一种学习起促进作用,反之起阻碍作用则为负迁移。按照迁移的方向来划分,可以分为水平迁移和垂直迁移。水平迁移指已习得的概念、规则或解决问题的方法等在同一抽象概括层次的新情境中的运用;垂直迁移指低级概念和规则向高级概念和规则的迁移。学习迁移理论主要包括以下几种。

(1)形式训练理论。该学说以官能心理学为理论依据,认为通过一定的训练,可以发展心的官能,从而将其转移到其他学习上去。

(2)相同要素理论。该理论认为原先的学习能够迁移到新的学习中去的前提条件是两种学习情境有相同的要素。并且相同要素越多,迁移的程度越高。

(3)泛化理论。泛化理论是指将在一种情境中得到的经验进行“泛化”并运用到另一种情境中去。因此在教学过程中,为使学生能够掌握学习迁移,应该让学生学会思考泛化。

(4)转化理论。支持该理论的心理学家认为学习迁移实际上是一个关系转化的问题。产生迁移的原因,是由于两者之间存在着相同的关系。我们平时强调通过理解而不是机械记忆来学习是因为理解可以转化到各种情境中去,减少知识的错误运用。

(5)学习定势理论。该理论指出迁移取决于通过练习而获得的定势或学习能力。通过练习某一种学习问题,可以帮助解决另一种不同的问题。

(6)认知迁移理论。该理论认为迁移的可能性取决于在记忆搜寻过程中遇到相关信息或技能的可能性。所以,如何增加学生在面临实际问题时提取所学知识的可能性尤为重要。提取的可能性与交互联结的数量直接有关,所以任何增加交互联结网络的“丰富性”的教育方法,对增加迁移的可能性均是有利的。

2 基于学习迁移理论指导的数据结构课程设计

依据前面对学习迁移基本理论的分析,以下将结合数据结构课程设计在教学目标、教学内容与基本要求、题目设计、考核方式以及学生作品欣赏等各个环节的特点与问题,阐述学习迁移理论对数据结构课程设计的指导作用。

2.1 课程设计教学目标

2.1.1教学目标

学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。根据形式训练理论的观点,学习技能的掌握是经过反复训练达到的,学生对知识的理解程度和技能的熟练程度越高,正迁移的可能性越大。因此实践教学环节非常重要。通过课程设计,一方面,使学生学会综合分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术;另一方面,通过课程设计中的算法设计和上机实践的训练,培养学生全面的数据抽象能力、综合的程序设汁能力等。通过此次课程设计主要达到如下目的。

(1)了解并掌握数据结构与算法的设计方法,掌握数组、链表、队列、堆栈、树、图、查找、排序等基本数据结构,具备初步的独立分析和设计能力。

(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

(3)提高独立分析和解决问题的能力。

(4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

2.1.2 教学实验中的迁移

教学实验侧重于帮助学生详细理解相应章节的知识点,具有针对性强、目的明确等特点。同时帮助学生树立起动手编程的信心,逐步提高学生对该章节所涉及算法的理解与动手能力。这是由基础理论知识到编程实践的一种迁移,是正迁移。我们以实验1(基于线性表的学生信息管理)为例,该实验要求学生重点掌握线性表的定义与线性表的基本操作,如建立、查找、插入和删除等。其实验内容详细地介绍了需要实现的每一个功能。同时,为了使动手能力差、基础薄弱的学生也能快速地掌握编程技术,教学实验通常会给出一些代码不完整的参考程序供他们参考,只需添加需要实验的线性表功能的代码即可。这样,使学生能够对前面学习过的理论知识的理解更加清晰、深刻,有利于学生扎实地掌握理论知识。可见,这是后面编程实践所获得的经验对前面所学理论知识的一种迁移,是逆迁移。按照泛化理论,我们需要把一种情境中得到的经验进行“泛化”并运用到另一种情境中去,应该让学生学会思考泛化。为此,为了满足编程能力强的学生的需求,实验要求中除了必做题目外,还安排了选作内容供他们选择实现,充分调动不同能力的学生的编程积极性。

与教学实验不同,数据结构课程设计强调的是学生综合运用知识点与基础算法,设计出较为复杂的用来解决实际问题的算法。题目要求往往只是提出对课程设计题目的描述,而非一条一条的具体功能,这就要求学生具有一定的分析问题的能力和学习迁移的能力,综合运用所学知识解决题目中所描述的问题。所以,课程设计强调培养学生综合运用知识来分析问题、解决问题的能力,这也是泛化理论的体现。

总之,课程设计的目标是使学生能将数据结构课程中所学的基本知识融会贯通,综合运用所学的知识解决相关的实际问题,能够把所学知识(包括算法和结构)在计算机上用编程语言加以实现,并且能够根据实际需求创建自己的数据结构和实现自己的算法。而学习迁移是实现这一目标的有效途径。只有在掌握好基础理论知识的基础上学会迁移,才能更好地解决问题、达成目标。

2.2 课程设计的内容及基本要求

合理安排课程设计的内容才能充分发挥其迁移的功效。从学习迁移的角度来说,合理安排课程设计的内容的标准就是使课程设计内容与课堂教学内容具有一定的关联性和一致性,这有助于学生在做课程设计的过程中巩固课堂所学知识,加深对知识的理解,重构教学内容的结构,为知识迁移提供很好的支撑。

课程设计的内容既要遵循基本的授课内容,又要从一定的高度上对基本内容进行抽象与发展,使之能够真实、准确地反映出由基础知识到综合运用能力的迁移过程。因而本文中课程设计的内容主要包括:①设计准备:理解实习任务,明确相关算法,搜集可用资源,熟悉实习环境。②方案设计:完成设计目标、设计路线的确定,并进行模块设计和任务分工。③代码编写:各模块代码编写、模块测试。④代码测试:模块组装、整体测试。⑤设计报告:完成设计文档,制作设计报告。

为了保证综合、灵活运用基础知识的迁移效果,课程设计有如下基本要求:首先,学生应该独立思考、独立完成。在课程设计过程中各任务的设计和调试要求小组独立完成,遇到问题可以讨论,但不可以拷贝。其次,要做好上机准备。每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。再次,按照课程设计的具体要求建立功能模块,每个模块要求按照以下几个内容认真完成,包括需求分析、概要设计、详细设计、调试分析、课程设计总结。最后,课程设计结束后需要对课程设计结果进行检查和演示,并提交程序源代码和文档文件、课程设计报告等内容。

课程设计过程中的编程环节是从程序设计语言课程到数据结构课程的另外一种重要的知识迁移,需要用面向程序或者面向对象的思想来完成数据结构中线性表等基本的结构定义以及操作。本文中课程设计需要重点注意的事项有:①注意备份源文件;②不要轻易删除代码,如需要修改,最好用注释方法来代替删除;③熟悉常用的调试技巧。

2.3 课程设计题目设计

为了促进学生正迁移学习,教师要科学合理地设计课设的题目,要建立在学生主动、适度、适量、适时且形式多样化的基础上,引导学生综合利用所学知识和经验,深入思考分析问题,学以致用。按照形式训练理论,我们需要通过一定的训练进而发展学生心的官能,从而将其前面所学知识转移到其他学习上去。为此,通过教学实验内容的训练,我们已经训练了学生在基础理论与基础编程中的能力,这些经验为先前知识的转移打下了坚实的基础。按照泛化理论,我们将在一种情境中得到的经验进行“泛化”并运用到另一种情境中去,需要让学生学会思考泛化。为此,与教学实验的细化要求不同,我们所设计的课程设计题目主要是给出题目要求的概括性描述,之后是一些要求与提示,还会有一些对题目中个别语句的解释,但不会给出参考的代码,全凭学生自己的知识组成以及算法设计来完成题目要求。我们从泛化理论出发,2011级数字媒体艺术专业的课程设计共8个题目,其中题目1-7具体给出所做题目的描述,同时为了发挥学生的学习积极性,允许学生自拟题目,给学生一定的自由发挥的空间,但是需要教师对自拟题目的难度以及实验小组的组成进行一定的把关。

2.4 课程设计成绩评定体系

课程设计成绩评定体系是对学习迁移理论在课程设计中应用的成果的一个重要体现,因而需要我们更客观、更公平地评价学生的实习成果。为了避免片面的评价,本文中课程设计将综合考虑小组成员各自完成的任务与工作态度情况、机房中源代码系统与PPT的演示与答辩情况、课程设计报告书的质量等,请三位老师分别对上述项目分别打分,最终按照一定的权值进行综合求和。为了体现编程实践、报告在课程设计最终目标中的知识迁移效果,规定源代码演示未通过、末提交报告等情况记为不及格。

3 学习迁移效果展示

学生最终的作品是学习迁移理论应用于课程设计成果的具体体现。课程设计过程中,每个小组对各自的题目进行了深入研究,从基础知识向深度、广度上进行探索与综合,经过团队协作,完成了各自作品。我们选取了3个具有代表性的作品向大家展示。图1展示了某小组学生完成的手机通讯录系统界面,该系统具有大多数其他手机通讯录系统所不具备的动态常用联系人标定功能。图2展示了某小组学生完成的贪吃蛇游戏。该游戏通过MFC设计界面,通过链表组织贪吃蛇的结构,完成了贪吃蛇游戏的功能,但没有处理蛇碰壁的情况。图3展示了某小组学生完成的电梯模拟系统。该题目是学生自选题目,该系统可以自动模拟电梯的不同运行情况,同时考虑了用户请求的优先级问题。自选题目使学生充分发挥自己的主观能动性,更好地将理论知识迁移到综合设计能力上来。

4 课程设计分析

本次课程设计以学习迁移理论为指导,为了调动学生的积极性,并适合不同学生的风格和能力,这次课程设计共出了7个指定题目供学生选择,如果学生有自己的想法,也可以自拟题目,充分发挥学生的主观能动性,同时要求学生以软件工程的要求来实现这次课程设计,从需求分析到概要设计,再到详细设计,最终是调试分析。