数据结构课程设计第1篇
关键词:数据结构;教学设计;教学目标;内容体系
中***分类号:TP3-0 文献标志码:A 文章编号:1674-9324(2013)08-0209-04
一、引言
《数据结构》是计算机科学与技术及相关专业的一门非常重要的专业基础核心课程,其主要研究内容是数据之间的逻辑关系和物理实现,即探索有利的数据组织形式及存取方式。有关计算机的各类软件的开发和设计,首先要考虑数据的表示,即使用何种类型的数据结构。因此,如何更好地解决实际问题,仅仅依赖几种计算机程序设计语言是不够的,还必须学习和掌握好数据结构的有关知识。当我们使用计算机来处理一个具体问题时,一般需要经过下列几个步骤:首先要从该具体问题抽象出一个恰当的数学模型,然后设计出解决此类数学模型的算法,再编写相应的程序并进行调试、测试,运行程序并最后得到答案,如***1所示。
早期计算机为解决问题而涉及的运算对象都是一些简单的数据类型,如整型、实型或布尔类型数据,所以一般把着重点放在程序设计的技巧上,而不必重视数据结构。随着计算机的发展,它的应用领域的不断扩大,涉及非数值计算问题的应用所占的比例越来越大,许多问题涉及到的处理对象不再是简单的数据类型,其形式更加多样,结构更为复杂,因此,解决这类问题的关键不再是数学分析和计算方法,而是要设计出合适的数据结构,以便更有效地解决问题。
二、课程说明
1.课程的定位。《数据结构》这门课程,是计算机理论与技术的重要基石,该课程一般是在大学二年级上学期开设,具有承上启下的重要作用,既要对前一年学习的软件技术进行总结提高,又要为后续专业课程提供基础。它贯通始终,是计算机科学与技术人才素质培养框架中的中坚课程,对学生的软件开发能力培养至关重要,也为学生今后的专业生涯打下牢固的基础。所以《数据结构》课程是计算机专业提高软件设计水平的一门关键性课程,它在整个课程体系中具有非常重要的地位。《数据结构》课程在计算机学科中与其他课程的关系如***2所示。
2.课程的教学目标。温州大学瓯江学院作为***学院,其定位为培养“应用性”本科人才,同时结合本课程的地位,因此,在本课程的教学中体现“基础性”和“应用性”。本课程的定位与目标是:①注重基础性:掌握基本数据结构的特点,了解数据结构与算法的关系;培养学生的算法设计与分析的基本理论知识和技能;培养学生设计及选择有效的算法、设计合适的数据结构的能力;增强学生发现问题、分析问题和解决问题的能力。②突出应用性:本课程强调理论和实践的统一,突出对学生的动手能力的培养。在对学生进行基本数据结构的理论、技术和设计等的知识运用和技能培养的同时,突出对学生进行将实际问题转化为基本数据结构和算法问题的分析能力。鼓励学生学以致用,用学到的知识来解决实际问题。
3.课程内容体系。数据结构课程的内容主要是围绕着数据的逻辑结构、数据的物理结构(数据在计算机中的存储方式)和选用合适的算法来实现对数据的相关操作展开。数据的逻辑结构有:线性结构、树形结构、***结构;数据的物理(存储)结构有:顺序存储结构和链式存储结构。在教学中引入抽象数据类型(ADT)观点介绍数据结构技术,采用算法时空分析来判断算法的好坏。在此基础上介绍数据结构的具体应用。数据结构课程的内容体系如***3所示。
我们把数据结构课程的内容划分为基础部分、数据结构与算法部分和应用部分。基础部分的内容有数据结构与算法的基本概念,抽象数据类型(Abstract Data Type,简称ADT)的表示,算法时空分析(算法复杂度)等。数据结构与算法部分是课程的核心内容。介绍各种基本数据结构的特点、ADT、各种存储实现方法、相关的操作的实现。应用部分主要介绍排序、查找(或检索)、索引和散列等经典算法。
三、理论教学设计
1.教学方法与手段。由于***学院的学生本身基础不够扎实,加上《数据结构》课程理论性强,内容抽象,学生在学习该课程的开始阶段,容易产生畏惧和茫然的情绪。为了提高教学质量,我们在对教学方法和教学手段等方面进行了有益的探索和尝试。要处理好多媒体教学模式与传统教学模式之间的关系。多媒体教学模式以其形象性、生动性和信息量大等特点已成为主要的课堂教学手段,但也存在一些不足,一方面影响教师的即兴发挥,而这恰是传统黑板教学的长处;另一方面,由于多媒体教学具有信息量大、呈现快速、表现直观、操作简便的特点,教学活动很容易出现“课件喧宾夺主”的不良倾向。笔者认为,在讲述如算法思想、编写程序时,采用传统的教学模式更能清晰地表达。因此,在教学中要综合使用多媒体教学模式与传统教学模式两种教学手段,以达到良好的教学效果。
2.把握课程的重点和难点。①课程的重点。基础部分:数据结构的有关概念术语、算法特性、算法描述和算法分析;数据结构与算法部分:线性表、栈、队列、串、树、二叉树、***等数据结构的逻辑结构、存储结构、相应基本操作的实现,这些基本数据结构的应用:一元多项式的运算、递归算法的设计和实现、哈夫曼算法的实现和哈夫曼编码的设计、最小生成树和最短路径的求法及实现;应用部分:顺序查找算法的设计,二分查找算法的设计,二叉查找树的创建、查找、插入和删除的算法的设计,散列表的建立和查找算法的设计;直接插入排序算法、冒泡排序算法、简单选择排序算法、快速排序算法、堆排序算法和归并排序算法的实现,这些排序算法的性能比较。②课程的难点。基础部分:抽象数据类型(Abstract Data Type,简称ADT)概念的理解和描述,算法时间复杂度和空间复杂度的估算方法;数据结构与算法部分:栈在递归函数中的应用,模式匹配KMP算法。***的遍历方法、Dijstra、Floyd、Prim、Kruskal等典型的***应用算法;应用部分:排序算法的复杂性分析,排序方法在各类实际问题中的应用。散列表的建立和查找算法的设计。
四、实验教学设计
1.实验类型。根据***学院应用型人才培养目标,注重培养实践动手能力,结合***的“面向21世纪教学内容和改革计划,保留少量必开的经典验证型实验,增开综合型、设计型实验”的精神,为了保证实验课的正常运行,完成实验教学目标,针对***学院学生普遍编程能力比较弱,C程序设计语言基础较差的情况,我们打算增开一些巩固C语言的课程预备型实验,保留了必要的经典的验证型实验内容,增加设计型实验,加强综合型实验,使得实验类型不再单一,实验内容更显层次化,做到既要有基本实验的训练,又有***思考、综合运用知识、创新等能力和素质的培养。预备型实验:主要加强学生C语言的薄弱环节,如结构体、指针、数组、函数调用等,掌握C语言的这些知识点是完成数据结构实验的有力保证。验证型实验:主要是为了理解和巩固数据结构的基本知识点,用来验证典型数据结构的逻辑定义及在具体存储结构下的相关操作实现。综合型实验:实验内容涉及本课程的综合知识或本课程相关课程知识,主要是为了培养学生的综合分析能力、实验动手能力、数据处理能力及查找参考资料的能力。
2.实验方法。对于验证型实验,学生在做实验的任务基本上,只是将课本的算法修改为在某种编程语言环境下可以运行的程序而已。但对于设计型和综合型实验,尤其是综合型实验,它是多个知识点的综合训练,包括问题分析、总体结构设计、程序设计等基本技能,需要用更科学的实验方法系统地完成。所以,为完成《数据结构》实验,我们引入软件工程的方法来指导实验,以实现实验方法的规范化。需求分析:说明实验的主要任务,如输入的形式和输入值的范围、输出的形式、程序功能和测试数据等。概要设计:说明本实验中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次调用关系。详细设计:实现概要设计中定义的所有数据类型,对每个操作用程序设计语言编写代码;画出函数之间的调用关系***。调试分析:调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;算法的时间复杂度与空间复杂度的分析;算法的改进设想。
3.实验过程。数据结构课程实验同其他课程不同,在上实验课之前需要做大量的准备工作,整个实验从开始到结束不可能在有限的实验计划课时中全部完成,因此对整个实验过程的控制和管理显得非常重要,要求对每一次实验课都进行精心地策划,我们主要从课前预习阶段、实验操作阶段和实验总结阶段等三个阶段进行改革,以实现实验过程的规范化。课前预习阶段:以往的实验教学环节,往往是学生到了课堂上才知道实验的内容,学生往往措手不及,这不利于实验教学的正常开展。现在我们采用把每个实验内容提前放在网上,要求学生课前充分预习,详细了解实验目的和原理、实验要用到的数据结构和算法,在实验之前必须提交实验预习报告。通过课前预习,保证学生在实验中思路清晰,能及时发现问题,易于取得实验的成功。实验操作阶段:学生上机实验的过程是实验成败的关键,我们一方面培养学生在实验过程中养成做实验记录的良好习惯,另一方面引导学生在实验过程中积极思考,当出现异常情况时,教师要指导学生分析其产生问题的根源,寻求解决问题的方法。学生在每次实验结束后,要将实验记录交给教师检查签字。实验总结阶段:这一阶段要求学生完成高质量的实验报告,实验报告中除了包括数据结构定义、算法思路、异常情况分析、测试数据及运行结果等必备的内容外,更重要的还要包括实验设计实施的成败得失、经验教训和心得体会。整理和填写实验报告的过程,即是学生对自身存在的问题进行修正和完善的过程,通过分析整理实验报告,学生可以更深刻地认识到自己在实验中存在的问题,加强其设计思维的训练,也能不断地积累解决实际问题的动手能力。
五、课程考核
1.《数据结构》课程的考核学生成绩以100分制评定,其中,平时成绩(包括书面作业、课堂测试、期中测试),占总成绩的15%;考勤和学习态度,占总成绩的5%;上机实习(加实习报告),占学期总成绩的20%;期末考试,占总成绩的60%。
数据结构课程设计第2篇
关键词:课程内容;结构分析;教师素质;学习能力
随着我国综合实力的不断增强和国际地位的不断提升,大学计算机教育的重要性逐渐突显出来,而计算机教育中数据结构课程则是重中之重。进入21世纪,计算机科学与技术及相关的专业一度成为热门专业,而数据结构是该学科的基础课程,要想掌握良好的计算机技术就一定要打好基础,学好数据结构课程。然而,数据结构课程内容较为抽象、复杂,具有动态性,学生在学习的过程中感觉无从下手,到实践的过程中更是由于没有理论知识的支持而感到疑惑重重。因此,培养学生的自信心,激发学生的热情便成为当务之急。笔者将在下文中结合自己几年的执教经验对数据结构课程进行探究,不足之处,还请指教。
一、数据课程内容及体系结构分析
数据结构是计算机科学与应用专业的基础课程,该课程内容主要是介绍了软件设计中最常见的数据结构及其储存结构,本课程的难点是数据组织方面的动态储存结构及递归技术。笔者认为,可以从以下几个方面进行教学:
1.做到学以致用
在进行数据课程教学的过程中,教师可以结合实例向学生展示整个课程的内容及每个章节的重难点知识,最大限度地激发学生的学习热情和积极性,这样不仅可以使学生对本课程有个大致的了解,使学生很好地掌握理论知识,还可以培养学生运用理论知识解决实际问题的能力,真正做到学以致用。
2.为学生总结知识框架
教师要采用科学的方法对教学内容进行整理,为学生总结知识框架,这样便于学生自主学习。知识框架要由多个相互关联的模块构成,便于课程中多种知识的组合。
3.进行严格的训练
由于数据课程知识较为抽象,对于一些难度较大,较难理解的知识一定要进行及时、严格的训练,这样可以很好地培养学生严谨的学习态度,在试题之中,教师要适当地考查学生对知识的深入理解情况,便于掌握学生的学习情况。
4.对疑难点知识的补充教学及总结
针对数据课程中某些重难点知识,教师一定要进行深入地剖析,并且可以根据实际情况对教材之中的原理部分进行转化便于学生接受,还可以对教材中未提及的简易算法等进行补充,使学生便于掌握、理解。
5.注重对学生能力的培养
数据课程具有较强的实践性,在理论教学的过程中隐含了许多重要的技术知识,但教材中多是一笔带过,使学生很难理解。针对这种情况,教师一定要对教材中没有展开讨论的重点技能性知识进行解析,以培养学生解决问题的能力。
二、解析课程设计对计算机教师的要求
课程设计主要是针对学生的学习能力进行的,教师一定要根据学生的实际情况及兴趣爱好进行,要注意课题的难度,尽量控制在通过学生的努力可以完成的范围内,既不要太难,也不要过于简单。需要注意的是,计算机教师一定要对整个过程进行掌控,如果发现这个课题较难,学生花费了很长的时间也不能解决,教师就是及时进行指导,帮助学生渡过难关。因为,如果经过长时间的思考还没有解决问题,学生的兴趣和信心都会在一定程度上减弱,最终会出现消极心理,这非常不利于学生的发展;不仅如此,还要对数据结构课程的设计进行严格的验收,严谨的对待学生的成绩评定。在设计完成后,教师要进行现场评定,要充分地检查各种数据,明确指出设计之中存在的缺陷,以便于学生形成良好的治学态度,此外,对于学生设计中的闪光点,教师也要及时肯定,不吝啬鼓励、表扬的语言,使学生感受到教师对其的期望感,激发起学生的学习动力。
通过对上文的论述可知,对数据结构课程设计进行探究具有重要的意义,对我国整体高校计算机教育事业的发展是大有裨益的。数据结构课程作为计算机技术与应用专业的基础课程,对该专业学生的未来发展起到很大的作用,我们数据课程教师任重而道远。尽管在当前的数据结构教育中还存在很多问题,在未来探索的道路上更是阻碍重重,但我坚信,天道酬勤,只要我们广大高校计算机教育工作者恪尽职守,无私奉献,不断对数据结构课程进行探究,一定能够有效缓解我国当前的教育现状,为祖国培养出一批又批的综合素质较高的计算机专业人才,最终为祖国的发展和社会的进步奉献自己的一份力量。
参考文献:
[1]任雪萍,王立波,赵葆华.融入PIC-CDIO理念的“数据结构”课程教学改革[J].计算机教育,2012(12).
[2]查建中.面向经济全球化的工程教育改革战略:兼谈CDIO工程教育模式实施[J].计算机教育,2010(11).
数据结构课程设计第3篇
关键词:数据结构;微课;思维导***
一、背景
数据结构课程作为计算机专业的核心基础课程,学好数据结构才能为许多后续课程的学习打下良好的基础。课程要求学生通过理论与实践学习之后,能掌握各种数据结构以及与之相关的算法的知识,并将这些知识应用到对具体实际问题的分析中。参照ACM/IEEE-CS的《ComputeCurricula2001》报告中提出的数据结构课程内容主题[1]有几十个,即课程的教学内容多,覆盖面广,而且由于很多重要知识的理论性较强,特别是一些难点知识比较抽象而难以理解,所以数据结构是被学生广泛认为难学、难懂、难实践的课程。学习的过程通常由“信息传递”和“吸收内化”两个阶段构成,采用信息化技术手段开展以微课、慕课、云课程、翻转课堂为代表的数字化教学是实现知识信息传递的有效手段[2]。微课一般是在课堂教学之外,由学生主动参与的轻量化、碎片化、结构化的学习方式,通过良好的课程结构设计,结合短视频、动画、语音等手段,能有效地将抽象的知识转为形象化的内容,从而高效促进学生“吸收内化”的进程。
二、微课及设计方法
微课(Microlecture),是指运用信息技术按照认知规律,呈现碎片化学习内容、过程及扩展素材的结构化数字资源[3]。微课课程平台是学生在课堂教学外的细化教学知识,实现“自主学习”和“个性化学习”的环境,在微课平台上,学生可按需选择学习,既可查漏补缺,又能强化巩固知识,是课堂学习的一种重要补充和拓展。从逻辑结构角度看,一个完整微课课程通常由一系列微课单元构成,一个微课单元除了用来讲述该教学主题知识点的课堂教学短视频及与短视频配套的描述或解释的短文这一最重要的核心部分之外,通常还包含与该教学主题相关的练习测试及师生交流等辅助性教学资源,这些资源共同组成了一个主题式、半结构化的微课教学单元。一个设计良好的微课单元通常具备主题选题精准和内容组织合理的特点。选题精准就是一个微课单元是一个教学主题,在设计这个主题时,要注意这个选题所覆盖的知识或原理应较为简单[4],其涵盖知识点可选2—3个;内容组织合理就是知识内容的组织和分解简明,将一个教学主题核心知识点和目标分解为若干个子知识点或步骤,这个核心知识点的分解最好只要一层逻辑,尽量不要在子知识点下再分解。
三、数据结构微课设计过程
数据结构课程要求学生能合理选择数据结构,并把与问题相关的数据组织起来实现准确和高效计算处理,所以数据结构的核心概念由数据的逻辑结构及其定义在逻辑结构上的运算、数据的存储结构以及运算的实现、运算算法的复杂度分析三个方面构成,而且在课程中数据的结构又与其相关的算法缠绕在一起[5],使得在微课设计时所做的知识点分析必须循序渐进地展开,采用由浅到深、由易到难的步骤,再从这个课程的知识体系出发,选取其中的重点、难点、疑点、考点、易错点、热点和扩展点,设计和制作一系列既相对***,又环环相扣的微课主题单元[6]。
(一)知识点分析与微课主题单元划分
设计数据结构课程的微课时,首先按照课程内容的知识结构来完成各个主题单元的设计和划分。我国的大部分数据结构与算法的教材[7-8]把课程的知识体系对应到教学内容之后,分成了基本概念和基础知识、线性数据结构及相关算法、树形结构及相关算法、***结构及相关算法四个教学组成部分,这四个组成部分又可分别分成若干子模块,每个子模块又可再分成若干主题单元;划分方法可以使用表格或思维导***来协助完成。思维导***是表达发散性思维的有效***形思维工具,能直观地把各级主题的关系用相互隶属与相关的层级***表现出来[9]。借助思维导***,我们能有效完成微课课程知识结构的设计工作,***1是我们设计线性数据结构及相关算法部分的微课主题单元思维导***。
(二)微课主题单元设计
在完成对课程的教学内容主题划分之后,开始对每个教学主题单元做设计。设计主题单元时要以学生为中心,其内容选择先考虑突出主题单元中的重点知识点,同时需要保证学生能看懂、能听懂,就是尽量以生动形象的语言和动画表达知识点,特别是难点和常见疑点必须演示或解释得详细清楚。这里以单链表主题单元为例。单链表是最简单的链式存储结构,是深入学习树与***(非线性结构)的基础,其概念及其实现是本节教学的重点和难点内容,我们按照内容介绍的次序来绘制思维导***,***中带星号的是重点知识点。在制作微课资源时,可以针对不同特点的知识点采用不同的讲解形式。对于概念性的内容,只需用语言或文字以学生容易理解的方式讲述清楚概念,而对一些抽象的内容,可采用***形、对比表格、动画等方法来讲解。如单链表结点与单链表结构的知识点,我们采用的是***形动画演示配合语音讲解方法;在讲解单链表的实现时,我们采用了代码单步执行分析与***形动画演示相结合的方法来讲述,取得了较好的教学效果。
数据结构课程设计第4篇
关键词:C语言 数据结构 整合 高职
中***分类号: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]周成义.高职C语言与数据结构课程的整合实践[J].,2009第3期.
数据结构课程设计第5篇
[关键词]数据结构;课堂教学;教学设计
[中***分类号] G642 [文献标识码] A [文章编号] 2095-3437(2017)03-0029-02
数据结构课程是计算机类专业的核心必修课程,在整个专业教学体系中占有重要地位。数据结构课程的教学内容涉及构筑计算机求解问题的两大基石:刻画实际问题中信息及其关系的数据结构,描述问题解决方案的算法。[1]数据结构课程的教学目标是培养学生缜密的逻辑思维能力和数据抽象能力,把数据结构和算法理论与编程实践相结合,并在软件系统开发过程中灵活运用。学好数据结构课程对操作系统、编译原理、计算机网络等后续课程的学习以及培养学生分析问题、解决问题的能力等方面起着至关重要的作用。如何讲好数据结构课程,一直是各高校计算机教师研究探索的热门课题。俗话说“好的开端是成功的一半”,第一堂课的教学设计至关重要。好的开端能激发学生对课程的兴趣,调动学生的学习积极性,使其产生强烈的求知欲,从“要我学”变为“我要学”,从而为教师有序、有效展开课程教学奠定良好的基础。[2]
本文从以下几个方面具体讨论如何上好数据结构第一堂课。
一、教师自我介绍
教师给学生的第一印象很重要。第一堂课教师第一次接触学生,自我介绍必不可少。自我介绍的内容主要包括介绍教师的姓名、学院、办公地点、移动电话等,可以把微信、QQ或E?鄄mail等其他联系方式告诉学生,还可以组建数据结构课程学习的QQ群或微信群,学生遇到问题后可以在群里讨论,也可以通过电话、E?鄄mail等与教师单独联系。教师愿意做学生的朋友,学生在学习上、生活上、思想上需要教师帮助时,可及时与教师联系。教师的积极态度能够对学生产生积极的影响,有助于与学生建立良好的师生关系,促进学生学习的自觉性。
二、课程介绍
(一)课程定位
数据结构课程是计算机类专业的核心必修课程,美国ACM/IEEE CC-2005课程体系将数据结构与算法类课程列为核心课程之首。我国***计算机教育指导委员会“计算机科学与技术专业规范”2006中明确把数据结构与算法列入计算机及信息技术相关学科专业的本科必修基础课程。
数据结构课程是对前导课程(如C语言程序设计、程序设计基础等)的深入和扩展,能为进一步学习其他专业课程打下基础。课程中的排序算法及基本的树、***等非线性结构是计算机科学的基本功,B+树、散列(Hash)等高级数据结构是后续如操作系统、数据库、编译原理、***形***像等专业课程的基础。
(二)主要内容
数据结构课程描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、数据的存储结构和数据的运算,内容非常丰富。
常见的逻辑关系包括线性结构、树形结构、***结构和文件结构。常见的存储方法有顺序方法、链式方法、索引方法和散列方法。建立在数据结构之上的有效运算是问题求解的核心,如排序、检索等。在介绍课程内容时,应把相应章节的学时分配一并列表展示,并简明扼要地向学生介绍课程的重点难点,借助多媒体课件以动画的形式给学生演示链表、栈、队列以及排序等操作,帮助学生理解,激发学生的学习兴趣。
(三)学习目标
数据结构课程的教学目标是让学生学会分析数据对象的特征,掌握数据组织方法和计算机的表示方法,初步掌握算法时间、空间分析的技巧,培养学生针对问题的应用背景进行分析,选择合适的数据结构,从而培养高级程序设计技能。学生的学习目标明确了,才会不懈努力,朝着目标一直前行。
(四)教材及参考书
教材是供教学用的资料,如课本、讲义等。第一堂课应明确数据结构课程的教材,简要介绍教材的特点、作者信息等,比如我们采用的是严蔚编、清华大学出版社出版的《数据结构》。同时给学生们列出一些必要的参考书籍,这对课程学习能起到补充拓展的作用。
三、学习方法指导
在学生了解数据结构课程的重要性、所用教材及参考资料后,就要告诉学生如何去做才能学好这门课程。数据结构课程要培养学生结合实际应用设计有效算法和数据结构的能力,学习数据结构必须经过大量的践,在实践中体会构造性思维方法,掌握数据组织与程序设计的技术。通过扎实的、大量的基础训练,学生才能灵活地运用问题抽象、数据抽象、算法抽象来分析问题,应用数据结构和算法来设计、实现相应的程序,完成创新能力和实践能力的训练。[3]
(一)课前预习,课后总结,吃透教材
课程内容主要包含数据结构和算法设计与分析的基本知识,各种基本数据结构的定义、存储结构、相应的算法以及应用等。理解掌握基本的数据结构与算法的关系很重要。程序的时间和空间效率,不仅与数据的组织方式有关系,也跟算法设计的巧妙程度有关系。在学习中要把握好预习、听课、实验、复习、总结五个环节,吃透教材,把握住算法的本质。通过预习,可以提高学生的主体意识,培养学生的***思考能力,进而提高课堂学习效率。课后的总结则能让学生自觉地回顾课堂内容,深入地学习和领会课程的重点和难点,完成课后作业或练习题,从而提高数据结构课程的教学效果。
(二)多读代码,实现算法,理解思路
***计算机专业教育指导委员会“中国计算机本科专业发展战略研究报告”、“计算机科学与技术专业规范”等都明确地强调了实践教学和学生动手能力培养的重要性。程序设计解决问题往往有多种方法,且不同方法之间的效率可能相差甚远。在学习过程中要让学生摆脱畏难情绪,不怕有问题,多读、多写、多调试,及时总结。学生只有通过丰富的练习题和应用案例才能增强对理论的感性认识,从而明白这些数据结构为什么存在以及在什么情况下可以最好地解决什么样的问题。
(三)充分利用网络资源进行课外拓展
1.***书馆资源
***书馆拥有丰富的文献资源,是学校的文献信息资源中心,也是学生的第二课堂。学校***书馆有丰富的藏书,通过网上书目查询系统可以检索到与数据结构课程有关的***书,如《数据结构典型题解》、《数据结构上机实验指导》等。***书馆还有各种文献数据库,如超星数字***书馆,可以***阅读电子***书;有万方、中国知网(CNKI)、维普等数据库,可以查阅期刊、会议等学术论文。在课堂上教师可以演示利用***书馆中的中国知网(CNKI)检索系统检索相关论文,让学生学会检索查找文献资源,这样可以拓展学习资料,避免课程学***限教材的情况。多读书,可以让学生扩大视野,打开思路,培养和锻炼学生自主学习的能力。
2.课程资料及论坛
互联网是信息和传播的重要平台。网络资源包罗万象且更新及时,使用方便,不受时间的限制,其中涉及数据结构的教学资料、技术论坛等数不胜数。课程资源主要有国家精品课程资源网、MOOC学院、中国大学MOOC、学堂***,以及国外MIT等开设的数据结构相关课程。而与数据结构相关的论坛则更多,比较突出的如CSDN论坛的数据结构与算法版块、ITeye综合技术论坛的数据结构版块等。[4][5]在介绍课程资源及论坛的同时,教师可以简单介绍百度或必应搜索引擎的用法,让学生掌握利用搜索引擎查找相关资料的技能。
四、结语
在高校的课堂里,大学生要接触不同门类的学科。教师在引导学生学习过程中能起到关键的作用。第一堂课既是师生之间的初次见面,也是大学生对教师及课程的初步了解与把握。良好的开端是课程成功的基础,上好第一堂课,意义重大。对教师而言,上好第一堂课,会使学生对该门课程产生首因效应,在课程的兴趣、理解、运用等方面产生积极影响,可以使教师对学生加深了解认识,有助于教师对教学安排进行合理配置,为今后的课程教学奠定良好的基础。对学生而言,上好第一堂课可以使学生对课程内容有一个全面的认识,提升学生对课程的认同感,提高学生的学习积极性。
[ 参 考 文 献 ]
[1] 张铭,耿国华,陈卫卫,等.数据结构与算法课程教学实施方案[J].中国大学教学,2011(3):56-60.
[2] 张永翊.上好大学里的第一堂课[J].中国成人教育,2008(20):131-132.
[3] 刘合兵,尚俊平.《数据结构》课程的教学研究与实践[J].内江科技,2008(12):72,49.
数据结构课程设计第6篇
关键词:微课;数据结构;翻转课堂
中***分类号:G642 文献标识码:A 文章编号:1009-3044(2016)26-0170-02
The Design and Application of Micro Class in Data Structure Course
XIANG Jing
(Information Engineering College, Hubei Institute for Nationalities,Enshi 445000, China)
Abstract:Combining with the characteristics of data structure course and the present situation of educational technology development, here put forward the data structure teaching reform methods sourced by interactive micro class. This paper analyzes the characteristics of micro class, and discusses the design method and application process of micro class in the data structure course. The thesis illustrates that micro class, as auxiliary teaching mode, plays good roles in the students’ ability to master the course content and in training students' innovative practice ability.
Key words: Micro class; Data Structure; flipped class
1 背景
21世纪,为了适应信息化社会对高等专业人才培养的要求,在高等教育教学过程中应用现代信息技术,已经成为当前高等教育改革的一种必然趋势。微课是随着现代信息技术广泛使用而发展起来的创新型教育形式,通常以微视频资源为中心,可与其他配套教学资源共同构成简短、完整的教学活动。近几年微课在国内外教育中兴起并发展迅速。国外,以名人浓缩的人生经验制作的TED课程――“让思想插上翅膀”,与全球用户分享思想的盛宴;美国可汗学院以其便捷有效地教学方式,赢得众多学习者的青睐;翻转课堂教学方式的应用与推广,***学习、移动学习的需求不断增加,都为微课提供了深厚的应用土壤。国内,随着2013年我国首届全国高校微课教学比赛的顺利进行,微课开始引起众多高校教育工作者的重视和实践,掀起微课建设热潮。
数据结构是计算机科学与技术专业的一门核心专业基础课程,具有理论抽象程度高和应用实践性强的特点。数据结构传统教学存在的问题是教学手段单一、教学内容陈旧、理论和实践脱节等。近年来,一些高校已经进行了有益的尝试和探索,但还有一些问题不容乐观。如何发挥微课的优势,充分而有效地利用学生的课堂课余时间,培养具有动手实践能力和创新能力的应用型人才,是教师面临的重要课题。
2微课的特点
微课教学相对于传统的课堂教学,具有“形式多样,主题突出、短小精趣”等特点。
1)形式多样,提升学生兴趣
微课本身就是教学方法和教学手段的改革,通过微课的互联网应用播放方式,允许学生在手机、平板、电脑等各种场所随时随地开展学习,营造了良好的学习氛围,创造性的调动学生学习的积极性,让学生更加自主的学习。
2)主题突出,提炼教学精华
微课不是将所有的教学内容划分成片段,而是在一个集中的主题中突出知识的重难点。教师在设计、制作微课时必须思考怎么在极短的时间内让学生理解内容、消化吸收且能加以运用,这就要求教师能提炼教学精华,突出主题。
3)短小精趣,提高学习效率
微课时间短,并且不受时间和地点的限制,学生可以充分利用时间碎片,结合课堂教学深刻地理解所学知识,提高学习的效率。同时在深化翻转课堂教学模式的应用中,培养学生发现问题、分析问题、解决问题的能力。
3微课的设计
在微课有限的时间内,教师必须合理安排教学环节,利用各种教学技巧抓住学生的注意力,整个教学过程中分析问题思路清晰,带领学生探究问题、思考问题、解决问题、最终达到微课教学的目的。
从总体上来说,数据结构课程主要研究数据的逻辑结构,存储结构和在具体问题中的操作运算三个方面的内容。纵观数据结构中的知识点,会发现有些知识点是前后连贯的,有些知识点是相对***的,针对微课最突出的特点短小精趣,微课的知识点应当能在短时间内被清晰讲解,设计不同知识点的微课应注意微课之间的***性、完整性和连续性,循序渐进地提高学生的理解能力和实践动手能力,培养创新人才。以栈的应用――表达式求值为例,微课教学步骤可设为:1)介绍背景知识:表达式在计算机中的三种表示方法及后缀式的特点:运算符在式中出现的顺序恰好是原表达式的计算顺序。2)提出问题:如何从后缀式求得原表达式的值?3)解决问题:引导学生积极思考讨论,分析比较栈和后缀式的特点,提出解决方法:从左至右扫描后缀式,遇运算符即作运算,与之对应的操作数是在它之前刚刚扫描到的压入栈中的两个操作数。4)再提问题:后缀式是未知的,如何由原表达式求得后缀式?5)分析解决:比较原表达式和后缀式发现,后缀式中操作数的相对次序不变,运算符的次序则由它之后的一个运算符来定,提出算符优先法。6)算法讲解:结合栈和具体实例,讲解算符优先法,演示表达式在栈中的编译执行过程。在上述微课教学过程中,教师主要是想办法引导学生进行交流探讨,从而发现问题,解决问题,教师的角色已经从课堂演出的主演转变为课堂演出的导演,在提高学生学习兴趣和活跃课堂教学气氛的同时,将内化知识的过程潜移默化地完成,提高了学习的有效性。
数据结构微课主要是针对课堂内容进行补充、提升,是解惑而非授业,所以它不能代替课堂的新知识教学,不是课堂教学的录像课,主要用于学习者不受时空限制的自主化学习。要实现微课在教学中起到的作用就需要灵活运用信息技术,进行有效合理的教学设计,并找到其与传统教学整合的有效途径和方式。在微课设计中,学生不是旁观者,也不仅仅是学习者,而是资源的评判者和建设者。如果把微课看作“商品”,那么学生就是微课的“用户”,教师在设计微课时首先要了解学生的需求,进而探索师生共同参与的微课设计新思路。
4微课的应用
要做好微课的设计、开发和实施,不仅仅是关注微课资源层面的技术性开发指标,更要注意微课设计的系统性和完整性。微课也是课程,应当具备完整的教学体系,对教学目标、教学内容、教学环节、教学互动进行全面设计,从而达到优化教学的效果。微课要能得到广泛深入的应用,也要注重微课的网络学习平台开发设计和管理。容量小、时间短、主题突出的特点使得微课便于交流和应用,但如果微课的开发平台得不到良好的统一管理,将很难产生学习聚集效应。
5结束语
利用微课作为辅助的教学方式,已经成为教育领域的一项重要话题。数据结构作为计算机专业的重要基础课程之一,对学生软件开发的过程和习惯的培养至关重要。本文阐述了微课教学的特点,以及数据结构课程中微课的设计和应用,微课能有效地帮助学生理解课程的重难点,及时得到学生的反馈,增加师生的沟通,有利于提升学生的学习兴趣,提高学生的创新实践能力,达到良好的教学效果。
参考文献:
[1] 张瑞霞,文益民,周娅,等.数据结构课程微课设计与应用研究[J].计算机教育,2015(16):59-62.
数据结构课程设计第7篇
数据结构是数据元素之间的关系。从概念和实现两个角度,可将数据结构分为数据的逻辑结构和数据的存储结构。按照数据元素之间前驱和后继关系来分,数据的逻辑结构可分为以下4种:集合(Set)、线性表(List)、树(Tree)和***(Graph)[2]。数据的存储结构主要包括数据元素本身的存储以及数据元素之间关系表示。数据元素之间的关系在计算机中主要有两种不同的表示方法:顺序映像和非顺序映像,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。JavaJDK为常用的数据结构定义了一些接口(Interface)和实现(Implementation)。这些接口、实现类以及常用的排序、查找等算法统称为JavaCollections框架(JavaCollectionsFramework)。Collections框架的设计目的是要满足如下目标:高性能、一致性、扩展性和轻松编程。Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用即可[3]。Java中把一组对象称为Collection,也就是说,Collection是对象的容器。Java对Collection中的对象没有任何前驱、后继以及重复性的约束,只是约束了对象类型E。Collection接口定义了其上的3类操作:针对单个元素的基本操作、迭代器和Collection对象之间的批量操作。基本操作包括增加、删除、判断是否包含某个元素、判断是否为空、容器中当前元素的个数、清空等。批量操作包括:合并两个Collection容器、从一个容器中移走一些元素、保留两个容器中相同的元素、判断一个容器中的元素是否完全包含在另外一个容器中等。接口Collection<E>的子接口有Set<E>和List<E>。集合(Set)在Collection的基础之上增加了“不允许重复元素”的约束;而List则在Collection基础之上增加了“元素之间具有前驱、后继关系”的约束:除了第一个元素外,所有元素具有唯一的前驱;除了最后一个元素外,所有元素具有唯一后继。如果仅关心数据元素是否出现,而不关心数据元素之间的次序,则应使用Set<E>。Java为集合接口提供了两个基本的实现:HashSet<E>和Tree<Set>。HashSet<E>是Set<E>接口的典型实现,大多使用集合的场合就是使用这个实现类。HashSet实现类按哈希算法来存储集合中的元素,因此具有很好的查找性能。HashSet不能记忆元素之间的顺序,包括插入顺序。其子类LinkedHashSet<E>也是根据元素hashCode值来决定元素存储位置,但它同时使用链表维护元素的次序,这样使得能够记忆插入顺序。由于LinkedHashSet需要维护元素的插入顺序,所以性能略低于HashSet,但遍历集合里的全部元素性能较好。实现类TreeSet<E>可以确保集合元素处于排序状态,TreeSet并不是根据元素的插入顺序进行排序,而是根据元素的实际值来进行排序的。TreeSet采用红黑树的数据结构对元素进行排序,并要求添加进TreeSet中的对象必须实现CompareTo<E>接口。List<E>接口作为Collection<E>接口的子接口,可以使用Collection接口中的全部方法。但是List接口中定义了元素位置和元素范围的概念,使得List可以根据元素位置索引(index)来插入、替换、删除集合元素以及查找指定对象的位置。ArrayList<E>实现类基于数组实现了List接口,其内部封装了一个动态再分配的数组。每个ArrayList对象都有一个capacity属性,这个属性表示它们所封装的数组的长度,当添加元素超过长度时,capacity会自动增长,其默认值为10。LinkedList<E>内部以链表来保存集合中的元素,因此随机访问容器时的性能较差,但在插入、删除元素时性能较好。Queue<E>接口用于定义队列这种数据结构,队列是“先进先出”的容器,通常不允许随机访问其中的元素。Java中的队列接口Queue<E>没有继承List接口,而是直接继承了Collection接口。如果使用具有固定容量的队列,则应使用offer()来加入元素,使用poll()来获取并移出元素,因为add()和remove()方法在因容量原因失败时抛出异常。如果只是访问队首而不移出该元素,使用element()或者peek()方法。LinkedList<E>类实现了Queue<E>接口,因此我们可以把LinkedList当成Queue来用。PriorityQueue是一个比较标准的队列实现类,它并不是按加入队列的顺序,而是按队列元素的大小来记忆队列元素的顺序。因此当调用peek方法或者poll方法来取出队列中的元素时,并不是取出最先进入队列的元素,而是取出队列中最小的元素。Stack<E>实现了List<E>接口,提供了push和pop操作限制线性表中元素的插入和删除只能***性表的同一端进行。JDK1.6引入的ArrayDequ<E>实现类被优先推荐作为栈使用。ArrayDeque<E>实现了Deque<E>接口。Deque<E>接口定义了双端队列,双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。JavaJDK中没有直接提供树和***的接口和实现类,但是可以通过研究TreeMap的源代码学习操作树的一般编写模式。综上,数据结构与Java面向对象程序设计两门课程内容的衔接见表1。
2面向数据结构衔接的Java课程实施方案
Java面向对象程序设计为1学期的课程。总课时为讲授54学时、实验32学时。其中,与数据结构知识点紧密相关的JavaCollections框架部分为讲授6学时、实验4学时。在讲授环节,按照表1列出的顺序进行。在实验环节完成与授课内容相关的验证性实验。在课程设计实践环节,要求学生使用Java设计常见算法,然后阅读JDK提供的源代码进行对照。具体方案如***1所示。比如,在java.util.Collections类中提供了数据结构中学生已经学过的常见算法,如二分查找、计算元素频数、查找最大/最小元素、反转线性表、按照指定距离旋转线性表、随机排列线性表、交换指定位置上的两个元素以及排序等。注意,在Java6中Collections.sort()使用的是MergeSort;而在Java7中,内部实现换成了TimSort。要求学生按照这些API文档说明,首先按照数据结构课程中的知识设计自己的算法实现,然后与API源代码进行比较。由于学生使用C语言版的数据结构教材,所以在面向Collection编程之前,作为过渡,先让学生面向数组编程。哈希表是一种重要的数据结构,也是实现集合的基本途径之一。通过研究HashSet的源代码,可以让学生理解为什么每个对象都要有hashcode()方法,以及哈希表的编码特点。由于HashSet的实现是基于HashMap的,所以研究HashSet就要研究HashMap。Map是一种典型的名值对类型,它提供一种Key-Value对应保存的数据结构。客户程序通过Key值来访问对应的Value,这个接口并没有继承Collection这接口;而其他的类或者接口,不管是List、Set、Stack等都继承或实现了Collection。TreeMap和HashMap算是Java集合类里面比较有难度的数据结构。HashMap元素存取的时间复杂度一般是O(1),而TreeMap内部对元素的操作复杂度为O(logn)。TreeMap记忆了顺序,TreeSet内部的实现使用了TreeMap。
3结语