数据结构课程设计范文

时间:2023-04-01 05:49:19

导语:如何才能写好一篇数据结构课程设计,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

数据结构课程设计

篇1

关键词:数据结构;微课;思维导图

一、背景

数据结构课程作为计算机专业的核心基础课程,学好数据结构才能为许多后续课程的学习打下良好的基础。课程要求学生通过理论与实践学习之后,能掌握各种数据结构以及与之相关的算法的知识,并将这些知识应用到对具体实际问题的分析中。参照ACM/IEEE-CS的《ComputeCurricula2001》报告中提出的数据结构课程内容主题[1]有几十个,即课程的教学内容多,覆盖面广,而且由于很多重要知识的理论性较强,特别是一些难点知识比较抽象而难以理解,所以数据结构是被学生广泛认为难学、难懂、难实践的课程。学习的过程通常由“信息传递”和“吸收内化”两个阶段构成,采用信息化技术手段开展以微课、慕课、云课程、翻转课堂为代表的数字化教学是实现知识信息传递的有效手段[2]。微课一般是在课堂教学之外,由学生主动参与的轻量化、碎片化、结构化的学习方式,通过良好的课程结构设计,结合短视频、动画、语音等手段,能有效地将抽象的知识转为形象化的内容,从而高效促进学生“吸收内化”的进程。

二、微课及设计方法

微课(Microlecture),是指运用信息技术按照认知规律,呈现碎片化学习内容、过程及扩展素材的结构化数字资源[3]。微课课程平台是学生在课堂教学外的细化教学知识,实现“自主学习”和“个性化学习”的环境,在微课平台上,学生可按需选择学习,既可查漏补缺,又能强化巩固知识,是课堂学习的一种重要补充和拓展。从逻辑结构角度看,一个完整微课课程通常由一系列微课单元构成,一个微课单元除了用来讲述该教学主题知识点的课堂教学短视频及与短视频配套的描述或解释的短文这一最重要的核心部分之外,通常还包含与该教学主题相关的练习测试及师生交流等辅教学资源,这些资源共同组成了一个主题式、半结构化的微课教学单元。一个设计良好的微课单元通常具备主题选题精准和内容组织合理的特点。选题精准就是一个微课单元是一个教学主题,在设计这个主题时,要注意这个选题所覆盖的知识或原理应较为简单[4],其涵盖知识点可选2—3个;内容组织合理就是知识内容的组织和分解简明,将一个教学主题核心知识点和目标分解为若干个子知识点或步骤,这个核心知识点的分解最好只要一层逻辑,尽量不要在子知识点下再分解。

三、数据结构微课设计过程

数据结构课程要求学生能合理选择数据结构,并把与问题相关的数据组织起来实现准确和高效计算处理,所以数据结构的核心概念由数据的逻辑结构及其定义在逻辑结构上的运算、数据的存储结构以及运算的实现、运算算法的复杂度分析三个方面构成,而且在课程中数据的结构又与其相关的算法缠绕在一起[5],使得在微课设计时所做的知识点分析必须循序渐进地展开,采用由浅到深、由易到难的步骤,再从这个课程的知识体系出发,选取其中的重点、难点、疑点、考点、易错点、热点和扩展点,设计和制作一系列既相对独立,又环环相扣的微课主题单元[6]。

(一)知识点分析与微课主题单元划分

设计数据结构课程的微课时,首先按照课程内容的知识结构来完成各个主题单元的设计和划分。我国的大部分数据结构与算法的教材[7-8]把课程的知识体系对应到教学内容之后,分成了基本概念和基础知识、线性数据结构及相关算法、树形结构及相关算法、图结构及相关算法四个教学组成部分,这四个组成部分又可分别分成若干子模块,每个子模块又可再分成若干主题单元;划分方法可以使用表格或思维导图来协助完成。思维导图是表达发散性思维的有效图形思维工具,能直观地把各级主题的关系用相互隶属与相关的层级图表现出来[9]。借助思维导图,我们能有效完成微课课程知识结构的设计工作,图1是我们设计线性数据结构及相关算法部分的微课主题单元思维导图。

(二)微课主题单元设计

在完成对课程的教学内容主题划分之后,开始对每个教学主题单元做设计。设计主题单元时要以学生为中心,其内容选择先考虑突出主题单元中的重点知识点,同时需要保证学生能看懂、能听懂,就是尽量以生动形象的语言和动画表达知识点,特别是难点和常见疑点必须演示或解释得详细清楚。这里以单链表主题单元为例。单链表是最简单的链式存储结构,是深入学习树与图(非线性结构)的基础,其概念及其实现是本节教学的重点和难点内容,我们按照内容介绍的次序来绘制思维导图,图中带星号的是重点知识点。在制作微课资源时,可以针对不同特点的知识点采用不同的讲解形式。对于概念性的内容,只需用语言或文字以学生容易理解的方式讲述清楚概念,而对一些抽象的内容,可采用图形、对比表格、动画等方法来讲解。如单链表结点与单链表结构的知识点,我们采用的是图形动画演示配合语音讲解方法;在讲解单链表的实现时,我们采用了代码单步执行分析与图形动画演示相结合的方法来讲述,取得了较好的教学效果。

篇2

Key words:project driven;course design;applied college

1.《数据结构》课程授课现状

《数据结构》课程是计算机及其相关专业的核心基础课程,是一门理论与实践相结合的课程,在整个计算机专业教学体系中处于举足轻重的地位,特别在软件方向的课程体系中处于承上启下的中心地位。长期以来,《数据结构》课程的教学备受相关学院领导高度重视,然而,大部分高校《数据结构》课程的教学效果都不尽如人意,影响教学效果的原因大致如下:

(1)理论教学与实践教学严重脱节。目前对于《数据结构》的理论教学主要是教师首先讲解基本的结构思想,然后再引导学生读懂由类C++语言编写的算法,最后布置作业让学生思考针对这些算法的问题。在实践教学方面,学生通常要做的事是将课本上写的很详细的代码翻译成相应的高级程序语言并调试通过,甚至不会去自己解决一个稍微复杂点儿的综合问题。基于上述两种原因,学生在学习的过程中可以不用费神思考就能将问题解决,但是离开课本遇到一个新的具体的问题就不知所措,体现不出学生独立思考问题的能力,实践教学环节更是流于形式,加之学生程序设计的基本功不扎实,久而久之对学习编程和思考问题失去兴趣。

(2)传统单一的考核形式,不能体现学生的技能水平。现阶段大多数高校对于《数据结构》课程的考试形式总是以笔试为主,考核的内容还是单一的理论知识,尽管最后有编程题目或者分析题,但是均不能体现学生的技能掌握的如何,90%的学生感觉学习了《数据结构》这门课程对自己以后的学习和工作没有用处,进而减弱了学习的信心,导致学生再学习后续的数据库和编程方面的课程的时候,缺乏模型构建的能力。

2.项目驱动教学法在《数据结构》课程中的应用分析

项目驱动教学法是以学生为主体,以项目知识为主线,教师参与引导的教学方法,它不再是“教师讲,学生听”的被动教学模式[1]。该教学方法的主要目的是让学生真正的参与到课堂中来,培养他们主动思考问题和创新的能力,特别适合于像《数据结构》这种内容延伸性强、抽象思维要求特别高的课程。

2.1 项目驱动教学法的特点

项目驱动不同于简单的任务驱动,它更侧重于培养学生解决未遇到的关键问题的能力,在教学过程中表现为以项目为本位、以学生为主体的重要特征,要求教师设计的项目要具有一定的应用价值,并且最好与企业实际生产过程或具体问题有直接的关系。项目教学法的特点如下:

(1)具有实践性:项目的主体与现实世界密切相连,学生的学习内容更加的具有针对性和实用性。

(2)具有自主性:学生自由、自主的分组进行学习,根据自己的理解发挥想象力,从而促进学生创造能力的发展。

(3)具有发展性:长期项目与阶段项目相结合,构成为实现教育目标的认知过程。

(4)具有综合性:项目的设计本身需要综合多个学科,所以培养了学生综合运用知识的能力。

(5)具有开放性:学生需要围绕问题进行探索和解决,所以学生的学习形式不再局限于课堂[2]。

2.2 师生角色的相互转变

项目驱动教学方法要求每位学生均要真正的参与课堂中来,在老师的引导下,发挥想象、参与研究、参与创造。因此,项目驱动教学法较以往的传统教学实现了两个打破:

第一,打破教材章节顺序,以项目为主线完成课程的培养目标。教师须在完全吃透课程培养目标的基础上,熟悉教材知识点,然后根据要传授的知识点结合该专业的就业方向和岗位构建项目,教师的主要精力应放在项目的设计、布置和引导方面,教师设计项目的优劣直接影响学生的学习效果。另外,在教学的初级阶段,教师还应该全面把握项目实施过程中学生可能出现的问题以及如何解决。在项目的实施阶段,教师只是起到引导和督促的作用,而不参与讨论,当各组学生都提出普遍不懂的问题时,可以先引导其查阅相关的资料或略微指导一二,教师在整个的过程中完全成了一名向导和顾问。当然,如何引导学生在项目实践中发现新问题和掌握新知识,这对老师提出了更高的要求。

第二,打破教师在台上泛泛的讲,学生在台下静静的听的局面。项目驱动教学法要求先将学生分组,每一组学生接到教师的项目后就开始自行分配任务,并且在指定的时间内将相关的问题解决,这期间可能会查资料、相互讨论、请教师长等,学生的教材理所当然的当成了查找知识的工具书,或者有些教材甚至可以不用给学生征订,节约了教育成本。这样,我们的教学才真正做到了注重过程、以学生为本。

2.3 项目驱动下的《数据结构》课程划分

以《数据结构》课程的教学为例,在采用了项目驱动教学法后,我们将课程的知识点划分成了10个项目:

表1 《数据结构》课程项目示例表

项目名称 相关知识点 参考课时

通讯录信息管理系统 线性表、查找、排序 6

某高校学生成绩管理系统 线性表、串、查找、排序 6

婚姻的稳定性情况调查 数组、栈 8

理发馆的经营状况分析 线性表、队列 6

十进制四则运算器设计 栈、树结构、浮点数运算 8

汽车零部件的库存模型设计 广义表、查找、排序 8

因特网域名查询系统 树结构、查找 6

小型汽车牌照的快速查找系统 线性表、查找、排序 10

管道铺设施工方案设计和选择 图结构 8

文章系统设计 文件、查找、排序 10

受现阶段高校授课时间的限制,针对不同的学生层次,这10个项目可能不能全部做完。根据学生的特点,教师可以有针对性的选作期中的5-8个,进而分配相关的课时。实践证明:在标准课时之内,只有30%的学生能够完成一个完整的项目,但是90%的学生能够利用课后的时间积极的查阅资料和咨询老师,这种授课方法对学生的主动学习起到了一个积极的推动作用,并且学生愿意牺牲课后休息的时间泡在图书馆。

3.具体项目实施过程

下面以“通讯录信息管理系统”为例,阐述在《数据结构》课程中实施项目驱动教学法的过程。

3.1 项目名称:通讯录管理系统。

3.2 培养目标:第一,使学生掌握线性结构的特点、线性结构的表现形式。第二,使学生领会数据在计算机中存储的概念,并掌握两种重要的存储形式。第三,掌(下转第179页)(上接第171页)握线性表和链表的区别,能够根据实际情况选择不同的存储结构。第四,能够对实施的算法进行性能评价。

3.3 项目预备知识:C语言编程基础、线性表的定义、线性表的存储结构、线性表的创建、线性表中元素的查找、插入、删除、修改等操作。

3.4 项目延伸知识:线性表中元素的排列(按照某种规则进行排序)。

3.5 项目的功能描述:该系统是普通的电话通讯录管理系统,要求实现能够根据姓名或者电话号码查询一个用户,能够实现对新用户的添加操作和删除一个用户,能够统计出该通讯录中的用户总数。比如:用户有一个电话号码,但不知道此电话号码是谁的,则需要输入号码来查询该号码是不是此通讯录中已记录的人的号码,若是可以输出该号码及姓名,若不是可以输出“无记录”。同学们在此基础上发挥想象力,结合实际可以扩展更多的功能。

3.6 项目实施步骤:

(1)根据学生的特长进行团队划分。按照一个班级35人的标准,我们将学生分成5-6个团队,每个团队在5-6人,然后推荐一名队长。

(2)教师开始下发项目书,要求每一个团队根据项目书撰写项目的可行性报告,每个团队以文字的形式上交一份报告,在此期间至少要保证每个团队的队长明白项目的完成目标,然后由队长写出项目过程的具体划分和阶段性成果。

(3)教师要不间断的引导,当完成项目的可行性报告之后,每个团队就开始查找资料和相互讨论,教师在旁边起到一个引导和监督的作用,对于学生普遍问及的问题可以进行统一解答。教师有目的的讲课,学生有目的的听课,所以实现了共赢的局面。

(4)教师总结阶段,每个项目完成之前,教师要对各个团队的成果进行演示和评价,指出每个团队的不足之处。

(5)学生整改阶段,学生根据教师的评价,完善自己的不足,然后形成阶段性课程设计报告。

4.《数据结构》课程的考核形式及评价

《数据结构》课程不同于其他的专业课,该课程中所设计到的算法和思想具有可收缩性,它应强调对于问题求解能力的培养,我们需要在学生的课程设计过程中,鼓励学生对其解决问题的方案进行理论分析和实验分析,鼓励学生积极主动的创新并大胆提出优化设计方案。对于该课程的考核形式是让学生根据自己平时的课程项目,将项目整理成课程设计报告,最终上交纸质的课程设计报告书,然后教师对报告进行评价。

考虑到《数据结构》这类课程一直以来是计算机相关专业学生学历层次提升考试的重要专业课,在进行课程考核的时候,有些学校除了让学生形成最终的课程设计报告书之外,还让学生参加一次笔试考试,以了解学生对于基础知识的掌握水平。

采用了项目驱动+课程设计的教学模式以后,学生普遍反映对数据结构的学习非常感兴趣,老师们则感觉采用这种方式以后,学生的学习积极性提高了,但是同时老师们的教学压力也变得大了,因为增加了老师准备课堂的负担,但是总体感觉是利大于弊的。

5.实施项目教学法的总结与展望

通过《数据结构》教学中实施项目驱动教学法,我体会到项目教学在专业基础课中实施的必要性,当然该教学方法也不是万能的,它不是适合于所有的课程,通常来讲:这种教学方法比较适合实践操作性强,学科比较综合的课程,同时,我有如下几点体会:

(1)项目教学法重要的是项目的设计,它可能直接影响教学的效果。在进行项目设计时,我们需要考虑学生对项目的理解、项目包括的知识点的范围、课程的前驱后继关系等,否则,我们设计的项目将是没有意义的。

(2)教师的有力引导是确保项目顺利完成的重要保障,学生在进行项目设计的过程中遇到棘手的问题需要老师第一时间进行指导。再者教师要事前全面掌握学生的学习层次,进行有目的性的指导,并能给学生留有思考的空间。

篇3

[关键词]数据结构;课堂教学;教学设计

[中图分类号] 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.

篇4

摘要:我院基于“做中学”的教学理念,以项目为载体,研究“面向对象程序设计”和“数据结构”课程的有机结合。本文介绍了我院的改革方案及实施效果。

关键词:课程融合;做中学;项目驱动

中图分类号:G642

文献标识码:B

1引言

“面向对象程序设计”和“数据结构”是信息学科相关专业本科生的必修课程,也是专业基础课程。“面向对象程序设计”课程通过全面、系统地介绍面向对象程序设计的基本概念、分析方法、设计方法、基本语法和编程方法,使学生能深刻理解和领会面向对象程序设计的特点和风格,类的封装性、继承性和多态性与程序的安全性、结构性和灵活多样性之间的关系,进而掌握面向对象的程序设计方法和编程基础,并具备解决一般程序设计问题的能力;“数据结构”课程有助于学生更有效地组织数据、设计高效的算法、完成高质量的程序以满足错综复杂的实际需要,强调数据的组织方式和解决问题的思想。

在实际的教学过程中,学生对这两门课程的掌握和运用不尽人意。一方面,相当部分学生虽然学过了“面向对象程序设计语言”课程,但在“数据结构”课程中却难以利用面向对象的思想设计和实现相关的数据结构和算法,影响了学生对数据结构课程知识的掌握;另一方面,数据结构和算法是计算机科学的核心问题,很多学生在学习的过程中没有意识到这一点,以至于到了实际项目中不知道运用所学的“数据结构”知识来解决实际问题。

2问题分析

“面向对象程序设计”和“数据结构”课程作为非常重要的专业基础课,各高校在课时分配和课程建设方面都非常重视,出现上述问题的原因主要是课程设置和教学方式上存在问题。

在现代教学体系中,从抽象数据类型和面向对象观点来讨论数据结构已经成为一种主流,使得“面向对象程序设计”和“数据结构”两门课程构成了强相关的课程。但在当前的实际教学中,这两门课程被一直被设定为相互独立的课程,课程间的教学出现了相互脱节现象,而且这种

现象在许多高校的教学中普遍存在。

在实践环节上,由于课程设置上的相对独立,也使得两门课程在实践教学方面有相当的重复,虽然总体的实践教学学时很多,但各自侧重点在实践教学中没有有效地体现,使得学生“事倍功半”,收效甚微。课程中实验项目过于单一和相对独立,也使得实践环节与实际项目联系过于松散,学生运用所学知识解决实际问题的能力和实际工程能力很难得到锻炼,也难以培养软件开发中所必须的团队合作精神。

3课程改革方案及实施

针对目前“面向对象程序设计”和“数据结构”这两门课程教学中存在的问题,我们将这两门课程进行有机结合,探索采用教师指导下的以项目为驱动的“做中学”教学方式进行教学。精心设计项目,将面向对象的设计思想、程序设计语言和数据结构课程教学内容恰当地融入到所设计的项目当中,有效整合两门课程中的重叠部分,突出各自的侧重点。面向对象程序设计教学采用“做中学”(Learning By Doing)以及“按需教学”(Teaching On Demand)的方式进行教学,使学生在具体项目过程当中在掌握和熟练运用高级语言的特征的同时,深入理解和巩固相应的数据结构知识;教学采用的项目与实际项目接轨,提高学生利用所学知识解决实际问题的能力;在教学过程中以项目组的方式组织学生,培养学生的团队合作精神,提高学生的职业素养。

3.1课程项目

为了有效整合这两门基础课,我们精心设计了“Mini数据库”项目,该项目较好地包含了“数据结构”中线性表、字符串、二叉树、索引、查找、排序、文件等章节的主要内容。通过该项目实现了“数据结构”和“面向对象程序设计”课程内容的有机融合。

Mini数据库分为三个模块:基本数据模块,数据库内核模块,数据库管理界面模块。其中,数据库管理界面模块呈现数据库管理的总界面风格及形式,在项目具体实施过程当中,这一块不作太多要求以免转移项目重点,学生可以只完成控制台形式界面。

基本数据库模块定义基本数据结构,采用哈希表和二叉树结构,负责读出业务数据的存储,包括对最基本数据的查询,删除,修改和添加等操作。其结构如图1所示。其中Index类创建索引,Matrix类以顺序表形式存放所有数据,并且该类的设计融入了可利用空间表、模拟指针等思想,对学生在数据结构设计方面有较大的启发作用。

数据库内核模块(如图2所示)主要负责对文件中数据进行读写操作,实现定义表及表的属性,设置主键和外键,定义表之间的关联以及实现表的更改等功能。

Mini数据库项目所涉及到的数据结构基本上基于本科教材中介绍的常用数据结构,部分数据结构在课本的基础上稍做修改便可用于该项目,部分需要对教材所介绍的相应数据结构进行重新设计以适于项目。每一个数据结构都有其相关的代价和效益权衡,要完成项目,学生需要对多种数据结构的有效性进行评估来决定在什么情况下需要采取哪种数据结构。通过该项目我们希望达到三个目的:

(1) 使学生熟悉一些常用的数据结构,这些常用的数据结构形成了一个程序员的基本数据结构工具箱,对于实际中的很多问题,工具箱里的数据结构便是理想的选择;

(2) 引入“权衡(tradeoff)“的概念,在项目中通过分析不同数据结构的代价和效益来讨论“权衡”的概念;

(3) 评估数据结构或算法的有效性,在项目过程中引导学生分析工具箱中哪一种数据结构最适合解决项目中的某一问题,这种技术也使得程序员能够判断自己或别人发明的新数据结构的价值。

3.2教学方式及实践

Mini数据库系统在难度和复杂度上较传统实验高,如何引导学生在学习“数据结构”课程的同时完成该项目是一个值得研究的问题。我们的做法是:首先在教师指导下让学生全面了解所要完成项目的整体结构,在学习“数据结构”课程的过程中结合所学知识逐步完成系统的各个模块,最终完成整个项目。

我们采用集课堂理论教学、开放实验、每周讨论、网上答疑等多环节组成的立体化教学方式进行教学。

在课堂理论教学部分,根据所设计的项目我们对教学内容进行适当调整,强调所学内容在项目中的应用。完成相关理论知识的讲授后,指导学生如何运用所学知识解决课程项目中的问题,并且理论教学中部分内容采取“做中教”方式进行,教师在现场编写程序完成教学任务,帮助学生克服“编程难”的心理阴影,培养学生分析问题和解决问题的能力以及养成良好的编程风格,该方法深受学生欢迎。

实验上机部分,学生以项目组的形式进行组织,3~4名同学为一组,共同完成课程项目,培养他们的团队合作能力。为了防止项目组中个别动手能力弱的学生不参与或少参与课程项目的设计与实现工作,在课程项目进行的同时,我们布置了相应的课程实验,课程实验与教学内容直接相关,并且对课程的项目有直接帮助作用,每一个学生都要单独完成课程实验内容。为了给学生提供良好的实验环境,我们采取开放实验形式,为学生提供了专门实验室。指导教师以office hour的形式解答学生问题,并且每个班配备了一名指导教师和一名助教。

为了克服简单的“说教”型教学,每一周由指导教师或助教召集开展“每周讨论”活动,学生以自愿方式参与“每周讨论”。“每周讨论”以学生为主体,由学生讲解他们所设计的代码以及所遇到的问题,特别鼓励学生将上一周在课程项目或课程实验中所遇到的问题提出来,由参与学生一起讨论问题的解决办法。为了鼓励学生积极参与 “每周讨论”活动,我们对积极参与讨论和提出问题的学生在平时成绩上予以体现,下一步我们将考虑对由学生评选“每周讨论”活动积极分子,并给与奖励。

课程网站是课程教学的有机组成部分,我们逐步建立了相对完善的课程网站。课程网站在为学生提供课程资源、课程项目和实验任务的同时,为学生提供了网络交流平台。在“学习交流”板块中,学生可以提出学习中遇到的问题,回答其他学生的提问。为了及时解决学生的提问,我们安排了教师和助教进行网络值班。为鼓励学生积极提问和回答其他学生问题,网上“学习交流”模块中设计了加分功能,学生所得分数将作为平时成绩的重要组成部分。

采用上述方式,我们在湖南大学软件学院2004级和2005级本科生中进行了试点,每次挑选了30多位学生参加。第一次挑选的学生在全年级中属于较为优秀的学生,完成情况非常好,其中两位同学进入微软亚洲工程院实习,并将他们在本课程中完成的项目作为一个亮点向实习单位介绍;第二次参加的学生的整体素质处于全年级中等水平,也顺利完成了整个项目。在前两届学生成功试点的情况下,目前我们对2006级本科生全面采用上述教学方式进行“数据结构”和“面向对象程序设计”两门课程的教学,通过近一个学期的教学,从教学的效果来看,学生的动手能力整体上较上几届学生有明显改观,并且学生的学习积极性也大大提高,90%以上的学生项目组能够按照教学进度完成项目内容。

参考文献:

[1] 温莉芳,刘江. 美国名校计算机科学专业本科教学体系现状分析[J]. 计算机教育,2004,(8):40-43.

篇5

关键词:实践课程;能力结构;研究性学习;创新实践能力;模块化教学

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2014)49-0135-03

“十五”期间,国家教育部计算机科学与技术专业教学指导委员会发表了《高等学校计算机本科专业发展战略研究报告暨专业规范(试行)》。《规范》中提出了“专业方向分类”发展的基本思想和三个辅助建议,辅助建议其中之一是“加强学生实践和动手能力的培养”。

数据结构课程是计算机科学与技术专业的一门专业基础课。该课程的任务是学会从解决问题入手,为所加工的数据选取适宜的逻辑结构、存储结构及其算法。初步掌握算法的时间与空间复杂性的分析方法,同时进行复杂程序设计的训练,使编写的程序代码结构清晰、易读理解,符合软件工程的规范。教学计划是一个整体,实践教学体系是整体教学计划的一部分。数据结构实践课程是数据结构课程的重要组成部分。本文从支持研究性学习及创新实践能力的数据结构实践课程教学体系的构建、以提高创新实践能力为重点的数据结构实践平台的完善以及以能力结构教学目标为依据的知识单元模块化教学的具体实施等三个方面进行实践课程的教改探索。

一、以能力结构培养目标为驱动,构建数据结构实践课程教学体系

知识结构、能力结构和综合素质是人才培养与人才评价的三个主要因素。其中,能力结构是第一位的,知识结构与综合素质都是为能力结构做支撑服务的。要强化学生的能力结构,就必须形成较完备的实践教学体系,将实践课程教学体系作为一个系统来构建。理论课程体系的设计主要体现专业结构、知识结构的培养目标要求,从而确定理论课程的知识领域、核心知识单元和知识点。而实践课程体系的设计应主要体现能力结构的培养目标要求,从而确定实践课程体系的各个单元目标和具体指标。数据结构课程的能力结构目标主要包括:学会从解决问题入手,识别典型的数据结构的逻辑结构特性的能力;能够为所加工的数据选取适宜的存储结构的能力;设计及实现问题求解主算法和主函数的能力;基本掌握算法的时间与空间复杂性的分析能力;基于高级编程语言,编写复杂软件的程序代码的基本能力等。数据结构实践课程的教学体系由六个部分构成:课程实习、课程实验、课程设计、课程社会实践、实践教学评测和实践教学文档及资源。

1.课程实习是指对课程实验和课程设计的基本技能和综合技能的研究性学习和实践技能的训练。课程实习的基本技能包括:高级程序设计语言编辑器及语言的使用;程序的模块化划分的技能;常用人机交互界面的简单设计等。综合技能包括:应用抽象数据类型的设计思想,在实现数据结构基本操作的基础上,确定功能模块间必要的联系,设计、调试主算法和主函数,系统的可视化界面的初步设计,对所完成的算法进行时间和空间的性能评价,从而完成数据结构的基本应用。

2.课程实验是指配合课堂理论教学、以增强学生能力结构为目标的专业技能训练。实验课题的基本内容包括:线性表类应用实验、栈和队列类应用实验、树和图类应用实验、查找和排序类应用实验以及自主研究性应用实验等。通过课程实验,使学生加深对课程内容的理解,培养将原理应用于实际的能力。

3.课程设计是指对理论课程的核心知识点以及能力结构的综合技能的专业训练。课程设计的课题包括:综合训练性题目和研究学习性及创新设计性题目两大类。例如,立体化停车场管理、电梯运行模拟、二进制堆及其应用、线段树及其应用等。课程设计的目的是全面落实课程教学大纲,激发学生自主研究性学习及完成创新性实验的积极性,提升学生软件设计的综合实践技能。

4.课程社会实践。课程社会实践是指对课程实验及课程设计的课题所进行的社会调研与实践。课程实验的调研主要是对设计性和研究性课题做调研,课程设计则主要是对应用性和创新性课题做调研,为提高创新实践能力打基础。

5.实践教学评测。实践教学评测是指对实践课程教学效果的评价和对学生实践课程成绩的评定。实践教学评测的目的是依据课程的能力结构培养目标,科学合理的评定学生的实践课程成绩,使课程教学效果得到及时反馈,以促进实践课程教学的不断改进。

6.实践教学文档及资源。实践教学文档及资源是指为了保证实践课程教学体系的各个环节有机结合、正常运转的课程教学文件和参考资料。实践教学文档及资源包括:课程实习、课程实验、课程设计、课程社会实践的教学大纲和实施方案,实践课程教学考核与评价的实施方案,以及实践课程教材与多媒体实践课件等。

数据结构实践课程的教学体系要从自身的特点出发,对课程实习、课程实验、课程设计、课程社会实践、实践教学评测等诸多教学环节进行整体、系统的优化组合。以能力结构培养目标为驱动,并将支持学生的研究性学习及创新实践能力机制纳入到体系中。

二、以提高创新实践能力为重点,完善实践课程教学平台

大学生的实践能力包括基础性实践能力、综合性实践能力和创新性实践能力。如何在数据结构实践课程教学体系中,通过日常的教学活动和过程管理,形成以提高创新实践能力为重点的教学机制,是实践课程教学体系建设的中心任务。研究性学习是指在教师指导下,根据所选择的课题,主动地获取和应用知识、解决问题的教学活动。创新的基础在于研究性学习,研究性学习的核心活动是实践和创新,创新能力的培养在于实践。课程实验和课程设计的研究性学习是以研究和设计为中心的实践性教学活动。在构建实践课程教学体系的基础上,通过设计课题项目、组建课题项目团队、开展项目教学法、注重项目过程管理、鼓励研究性学习和实践创新能力、实施创新评测机制等,逐步完善以提高创新实践能力为重点的实践课程创新实践平台。图1是基于数据结构实践课程教学体系,以提高创新实践能力为重点的实践课程创新实践平台的总体框架设计。其中,课程实习、课程实验、课程设计是创新实践平台的核心内容。

1.开展项目教学法,注重项目过程管理。项目教学法是通过实施一个完整的项目而进行的教学工作。在数据结构实践课程教学中,将项目教学法应用到课程实习、课程实验、课程设计等各个教学活动中,培养学生良好的科研素质。通过课题的立项与开题、组建课题小组、方案分析、方案设计、方案实现和项目验收的工作流程对学生进行科技创新活动的工程实践训练。抓好课题项目的过程管理是十分重要的工作任务。其中,抓好课题组长的业务培训、课题组项目的认定、课题的阶段验收是项目过程管理的重点。

2.重视课题项目设计,促进拔尖创新人才发展。依据培养目标的能力结构和教学规律,科学、合理的设计课题项目,是开展项目教学法和项目过程管理的第一要素,也是教师发挥教学活动中的主导地位的首要任务和关键环节。课程实验的课题类型有验证性实验、应用性实验和创新设计性实验。验证性实验属于学生自主研究性学习的课下实验;设计应用性试验和自主创新性实验是课上实验,还要完成相应的实验课题报告。课程设计的课题类型有综合训练型和研究创新型。遵从教育规律和认知规律,将课程设计的课题项目分级分类设计,以促进学生的阶梯式发展。

3.组建课题小组,形成研究性学习氛围。根据多元智能理论,每个人都拥有不同程度的八种智能,由于智能组合形式以及每种智能的表现形式不同,每个人的智能是独一无二的,这也体现了个体的差异性。以学生自愿为原则,组建课题小组。课题小组的人员构成要考虑学生的气质和性格差异,达到智能互补和优势互补,促进学生的个性发挥和全面发展。通过组建项目团队,竞争项目负责人,在课题组长的带领下,开展课题项目研究,协同合作、相互交流,体现团队精神,营造研究性学习氛围,还可以使拔尖创新人才脱颖而出。

4.建立创新评测机制,激励创新人才。建立一套完善的实践教学的评测机制是十分重要的,实践课程教学评测的指标中,应有创新人才的激励机制。只有将学生的课程实习、课程实验、课程设计、课程社会实践等实践教学环节都纳入到评测机制中,才能对学生进行综合全面的考核和评价。

对于学生实践环节的成绩认定,要依据能力结构指标考核并单设成绩计入学分,不合格的同样需要补考或重修。以课题组为单位,组员和组长间都可以互评,作为考评依据。

三、以能力结构目标分解为依据,实施技能知识单元模块化教学

计算机科学与技术专业学生的能力要求可以归纳为计算机思维能力、算法设计与分析能力、程序设计与实现能力和系统能力。数据结构实践课程的能力结构要求在上述能力结构中都有相应的体现。可以按能力结构培养目标的要求,将目标分解,采用分阶段的技能知识单元模块化教学。

1.能力结构教学目标分解。采用质量目标管理方法,将实践课程能力结构的教学目标以计算思维能力为基础,通过层次分解,将数据结构课程教学目标分解为理论知识单元和技能知识单元,再分解为若干知识模块,每个知识模块又蕴含若干知识点。例如,可以将数据结构课程中线性表的基本技能知识目标分解为静态顺序表、动态顺序表、单链表、双链表、循环链表等具体的存储结构、基本操作和简单应用等实践教学目标。通过对实践教学目标的分解,使得师生都清楚具体的质量目标定位,掌握学习进度,激发教师的主动性、学生的自主性及研究性学习热情,将充分的精力投入到提升创新实践能力的活动中。

2.技能知识单元模块化教学。依据分解的数据结构实践课程的能力结构教学目标,打破传统的以理论知识为中心的学科式课程内容体系,取消章节限制,把密切相关的理论和实际操作技能有机地结合起来,组成知识领域,建立若干知识模块,每个知识模块又可由若干子模块构成。每个子模块又由若干个知识单元或课题组成,从而使实践课程的教学形成一个“积木组合式”的模块化教学模式。例如,数据结构实验课程的基本技能模块包括:线性表子模块、栈和队列子模块、树和图子模块、查找和排序子模块及自主研究性应用子模块等。线性表子模块又包括顺序表子模块和链表子模块。子模块的内容又根据目标分解的技能指标构成。技能知识单元模块化教学是以技能训练为核心的一种教学模式。通过技能模块化教学方法的实施,可以强化学生的技能训练,促进学生动手能力的提高。

3.打造实践课程教学团队。建设一支由课程主讲教师、实验指导老师、实验基地组成的实践课程教学团队,针对实践课程教学的各个环节,从课程实习与实验指导、实践环境维护管理、课程设计与课程社会实践、研究性学习与创新实践能力等方面全力指导,由团队负责课题项目的设计、组织和实施,统一于教学目标,服务于教学质量。

4.搞好实践课程教学评测与教学资源建设。构建实践课程教学体系及完善实践课程教学平台,这是培养创新人才的硬件要素;搞好实践课程教学评测与教学资源建设,则是培养创新人才的软件要素,二者缺一不可。对数据结构实践课程引入技能单元模块化教学后,每个模块是一个相对独立的能力实体,每个模块结束后,都可以进行考核,及时检验模块化教学的学习效果。课程实验成绩的评定可以采用百分制,由平时实验课成绩、实验报告成绩、实验程序验收成绩组成,按一定的比例折算到实践课程的总成绩。

四、结语

实践课程教学改革在计算机科学与技术专业2010级的学生中试行,在2011~2012级的两个年级中实施,实际受益人数达600余人。经过两个年度的实践课程教改探索,确定了数据结构实践课程的总体改革方案以及实施方案,精心准备并完善了课程实验和课程设计实践课题,组建了课题小组,培训学生课题组骨干,完成了相关的教学文档建设和课程资源建设。综上所述,通过对数据结构实践课程体系的分析和研究,论述了以能力结构培养目标为驱动出发,构建研究性学习与创新实践能力的实践课程教学体系,以提高创新实践能力为重点,完善实践课程教学平台,以能力结构教学目标分解为依据,实施知识单元模块化教学的措施,从而实现数据结构实践课程的具体教学目标,推进计算机专业的整体化教学改革。

参考文献:

[1]教育部高等学校计算机科学与技术专业教学指导委员会.高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M].北京:高等教育出版社,2006.

篇6

关键词:数据结构;精品课程;课程建设;课程教学

精品课程建设是教育部“高等学校教学质量与教学改革工程”的重要组成部分,是贯彻落实《教育部关于加强高等学校本科教学工作提高教学质量的若干意见》精神,进一步更新教育观念,提高教学质量和人才培养质量的关键[1]。精品课程建设是教育新理念的体现,是新时代教学手段的具体运用,是各种教学资源的开发与整合,是学生自主学习、探究学习的窗口,是实施素质教育的新途径[2]。精品课程的建设有利于优质教育资源的传播和利用,也是我国教育事业的一次大的改革[3]。如何正确理解精品课程内涵、探索实现精品课程的科学途径,对确保这一质量工程的顺利进行具有重要意义[1]。

数据结构是计算机专业的核心基础理论课,在整个专业知识体系中占据非常重要的地位[4]。通过学习数据结构课程,不仅要为后续课程打好基础,而且要进一步提高学生的数据抽象能力和程序设计能力。数据结构课程概念多、方法多、逻辑性强、实践性强,这些特点决定了教与学的难度大,其教学水平和效果又将直接影响后续课程的学习以及学生程序设计实践能力的提高[5]。但是许多学生对于数据结构的概念、知识理解不够,思考分析能力还处于一个较低的水平,所以不少学生反应数据结构是比较难学的一门课[6]。这些年来,我校各级领导对数据结构课程非常重视,加大力度进行组织建设,特别是在教学内容组织、师资队伍建设、教学模式改革、实践环节加强以及共享资源的开发等方面,具体论述如下。

1教学内容的组织

数据结构作为计算机专业的核心基础课,主要思想是问题求解的理论与方法、抽象和设计的理论与方法等[4]。于是我们将课程内容分为概念表述、构建数据模型、算法设计与实现3个层面,突出数据组织方法与算法的实现技术,以适应不同层次的教学需求。采用面向对象的思想方法介绍数据结构的相关理论与方法,贯穿程序设计的思想观点,引入抽象数据类型的概念及其基本性质,重点培养学生的数据抽象能力,突出构造性思维训练,强化程序抽象能力和数据抽象能力的培养。

在教学过程中,我们围绕抽象数据类型,采用面向对象的思想观点,从基本概念、基本结构、基本方法来讲解教学内容,并贯穿了计算机专业的一些问题求解方法。使用熟悉的C语言作为算法描述语言,便于学生把注意力集中在算法的理解上。通过给出用C语言实现抽象数据类型的方法,使数据结构的表示容易理解。采用定义、存储以及典型算法实现来展开教学内容,并引导学生提高实际的应用能力。

我们在组织教学内容的时候注意知识点的前后呼应,而不是以简单的流线形式呈现[7]。通过实践证明,这样可以帮助学生在学习新知识的同时复习以前的知识。例如有关排序知识,在程序设计课中已经学习了冒泡排序、选择排序,在数据结构课中又学习直接插入排序、希尔排序、归并排序、快速排序、堆排序等;这些排序算法可以应用于现实生活的很多地方,学生成绩的排序、大学食堂买饭菜的排队等;同学们在学习新的排序算法的同时可以复习以前的排序算法;还可以在自己熟悉的应用问题中实现各种排序算法,并对它们分析比较,收到很好的教学效果。

2师资队伍的建设

教学质量的优劣取决于课程负责人、主讲教师的教学水平和整体的能力[8]。课程建设需要有一支结构合理、综合能力强的教学师资队伍;建设学术水平高、教学水平高的师资队伍是保证课程教学质量的关键。因此精品课程的建设过程也是筛选和培养一流教学师资队伍的过程。通过精品课程的建设,我们组建了一支由8名教师组成的结构合理、综合能力强的教学师资队伍,其中高级职称3人,中级职称4人,初级职称1人。教学队伍中所有老师具有硕士或博士学位;年龄呈现梯队结构,其中30岁以下的2人,40岁以上的2人。

本课程的教学师资队伍中不但有主持过多项科研、教研项目的教授,也有教学经验丰富的主讲教师,并配有动手能力强的专职实验教师。在课程建设过程中注重对青年教师的培养,通过“传、帮、带”的办法,使青年教师走上主讲教师的岗位,逐步挑起教学重担;鼓励中青年教师参加相关领域的师资培训学习、参加科研和教研活动等,逐步提高他们的综合能力。

3教学模式的改革

我们主要选择并推广精选案例(Selected Cases)、扼要讲解(Briefly Explain)、任务驱动(Task-Driven)的教学模式,简称SBT教学模式[9]。

第一步,任课教师在深入钻研数据结构教材的基础上,根据课程的教学目的精心选择教学案例。所选案例既能反映教学内容要表达的思想,又能让学生容易理解。因此要求教师明确数据结构课程的教学目的:学生通过本课程的学习掌握如何根据问题的需求合理地组织数据,在计算机中有效地存储数据和处理数据[10];通过该课程的实践环节,对学生进行程序设计的训练,巩固加深对数据结构的理解,提高综合运用本课程所学知识的能力,培养学生独立思考、分析问题和解决问题的能力[11]。

第二步,任课教师对教学内容进行概括,结合教学案例进行简单扼要地分析讲解,使学生理解有关概念、掌握有关操作。在教学过程中注意启发学生思考问题、分析问题,引导学生解决问题,提高学生的实际动手能力。

第三步,任课教师给学生布置具体课外任务,通过学生独立完成具体的课外任务来实施教学。其中课外任务的提出可以结合学生的特点和兴趣,使学生按自己的需求去学习,从而培养出独立思考、勇于创新的自学能力[12]。

例如在讲解哈夫曼编码的内容时,我们一般先讲一个简单易懂的实例。学生很快就能理解哈夫曼树的构造过程以及具体的哈夫曼编码形成过程。然后引导学生理解哈夫曼树的存储和哈夫曼编码的存储。在学生掌握了这些存储结构之后,再结合实例讲解哈夫曼树的构造算法、哈夫曼编码的求解算法。最后布置课后作业完成一个求解哈夫曼编码的实例程序,大多数学生能够按时完成任务,教学效果良好。

4加强实践环节

数据结构实验应能达到如下基本目标:培养学生应用数据结构基本知识来分析问题、解决问题的综合能力;帮助学生建立计算机问题求解的意识,主要是通过认识数据结构在问题求解中的地位来完成这种认识的建立;训练学生用系统的、规范的观点来进行计算机问题的分析、设计、编码等[13]。

首先,改善实验条件。在各级领导的大力支持下,我们更新了计算机专业实验机房;实验所需软件都能在新学期开学之前完成安装调试;每个实验室配备一名维护人员,负责实验室的运行与维护;设备完好率99%以上,实验开出率100%。除了规定的上机实验以外,提倡学生自己课余时间上机练习。为此,学院设有两个开放实验室,配备专门的实验指导老师对学生免费开放。机房内计算机专业学生身影不断,有的在复习教师的课堂教学内容,有的在阅读网上的参考资料,有的在下载教师布置的作业,有效促进了良好学风的形成。

其次,加强实验管理。在开学之初,主讲教师与各班学习委员确认课内上机时间,并通知到每一个学生,实验指导书、教材、习题集同时发到每个学生。每个学生必须完成教学大纲规定的8个实验项目,实验成绩占30%;所有实验实现1人1组;实验前安排1次答疑;学生上机前必须完成预习,写出完整的源程序,准备好上机步骤和调试数据。在实验过程中遇到学生提问时,老师给学生一些提示信息,尽量让学生自己将程序调试通过;实验后要交实验报告;教师批改后评定成绩,不合格的学生必须重做。

第三,注重课程设计。课程设计是对所学知识的巩固提高,是培养科研能力的重要环节。引导学生搞好课程设计的关键是选好题目与做好课程设计的准备工作。而课程设计题目的选择要和所学知识紧密联系,又与学生的创新能力培养密切相关。通过课程设计积极引导学生参加课外科技活动、校级省级程序设计大赛、大学生创新项目的探索等,以提高学生程序设计能力。

5共享资源的开发

建设精品课程的目的是通过为学生提供优质的教学资源来提高教育质量。我们在课程建设中使用网络技术手段,建设了精品课程网站。精品课程网站由以下几个部分主成:课程介绍、课程负责人、课程特

色、申报材料、教学大纲、课件与教案、教学录像、教学论坛等。其中课件与教案就是教师上课使用的课件和教案,方便学生在不同时间、不同地点进行下载,然后根据自己的需要进行自主化的学习。任课教师还把自己的实验程序、常见问题分析、习题解答等内容放到网上,供同学们学习参考。

6结语

随着计算机技术的不断发展,教学改革也在逐步深入,这必将对数据结构课程的教学提出更高的要求。因此精品课程的建设是一项长期的工作,也是一项综合的系统工程。在今后的课程建设过程中,我们要用先进的教育理念武装自己,不断扩充新的教学内容,完善教学网站,强化实践教学环节,为学生提供更多优质教学资源,培养出更多更好的符合社会需求的应用型人才。

参考文献:

[1] 侯治富,金祥雷,谷树严,等. 精品课程建设目标及实现途径的研究与实践[J]. 中国大学教学,2006(1):21-23.

[2] 李银芳. 高校精品课程建设中应注意的几个问题[J]. 中国高教研究,2007(1):91-93.

[3] 许坦,石. 精品课程发展现状综述[J]. 中国电化教育,2007(5):53-56.

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

[5] 耿国华,王小凤,张德同.“数据结构与算法”课程工程型知识体系研究[C]//大学计算机课程报告论坛组委会. 大学计算机课程报告论坛论文集. 北京:高等教育出版社,2009:9-13.

[6] 顾沈明,张建科,李鑫. 数据结构教学模式的改革与实践[C]//浙江省高校计算机教学研究会. 计算机教学研究与实践. 杭州: 浙江大学出版社,2010:111-114.

[7] 刘雪梅,袁文翠,富宇,等.“数据结构”教学模式变迁的若干思考[C]//大学计算机课程报告论坛组委会. 大学计算机课程报告论坛论文集. 北京:高等教育出版社,2006:535-537.

[8] 耿国华. 数据结构课程改革与教学资源建设[C]//大学计算机课程报告论坛组委会. 大学计算机课程报告论坛论文集. 北京: 高等教育出版社,2006:150-153.

[9] 潘洪军.“精选案例,扼要讲解,任务驱动”教学模式[J]. 中国高教研究,2008(11):55-56.

[10] 王玉峰,刘宝旨,王猛刘,等. 也谈“数据结构”的教学[J]. 计算机教育,2007(15):21-23.

[11] 舒坚,刘琳岚,陈斌全,等.“数据结构”课程实践教学改革的设计与实践[C]//大学计算机课程报告论坛组委会. 大学计算机课程报告论坛论文集. 北京:高等教育出版社,2007:401-404.

[12] 王炳强,张植才. 任务驱动法在C语言程序设计课程中的应用[J]. 黑龙江科技信息,2009(5):53.

[13] 李治军,廖明宏,张岩. 数据结构与算法课程设计教学模式的探讨教学资源建设[J]. 计算机教育,2006(2):54-56.

Organization and Construction of High-quality Course of Data Structure

GU Shenming, WU Yuanhong, HUANG Haifeng

(School of Mathematics, Physics and Information Science, Zhejiang Ocean University, Zhoushan 316000, China)

篇7

课程衔接 层次性教学 任务驱动教学

一、引言

设计、实现一个复杂或者高级项目的软件项目,可能需要涉及程序设计语言、数据结构、算法设计与分析、计算机网络、数据库等许多课程。而计算机科学技术专业的每一门课程都是从基础理论入手,复杂、高级项目不适合作为课程的学习案例或者习题。

不少课程选用比较简单和容易理解的小项目作为例题讲解知识点或者作为习题巩固学生所学知识点。比如约瑟夫程序,在程序设计语言中是链表操作习题,而数据结构课程中又作为线性表的习题或者上机题目;图书馆管理程序,可能作为数据结构课程的线性表的课程设计题目,也可能作为数据库课程范式优化的例题;集合的交集和并集可能作为离散数学课程的习题,也常被选做数据结构课程线性表操作的算法优化例题;网络蜘蛛常被作为计算机网络课程的课程设计题目,也常因为其中的典型树形结构关系被数据结构课程选作综合性课程设计题目;多优先级作业调度既是操作系统课程的主要研究内容,也是数据结构课程队列内容的习题。

以往的教学实践反映,很多学生学完课程之后并没有达到预期的目的。究其原因,一是对学生动手能力的培养没有到位,以至于部分同学对课程的学习还停留在“纸上谈兵”的阶段;二是对学生自主学习能力的培养没有到位,以至于涉及讲授范围之外的问题学生就不知从何入手。可以采用分层次教学,就是要因材施教,根据大多数学生的情况,正确处理教学中难与易、快与慢、多与少、应知与应会的关系。充分发挥学生学习的主体作用,转化差生、培养优生,全方位增进教学效果。

目前的教学活动,主要考虑的先后关系,而没有建立良好的课程的衔接关系。需要研究、整理他们直接的衔接关系。

需要整理本课程案例,考虑与先修课程或者后修课程的关系及所选题目的价值和意义,同时对案例采用层次性分解方法,满足层次性教学需求。

鉴于计算机专业本科教学课程数量多,本文针对计算机两大具有紧密关系的核心基础课程《数据结构》和《程序设计C语言》进行探索,并期望扩展到其他课程。

二、课程的衔接关系

C语言程序设计与数据结构是工科院校计算机专业中开设的两门重要的专业基础课。在以往教学中,这两门课程是相对独立、分开授课的,因此导致内容脱节,教学效果差。一般C语言程序设计课程只注重C语言的语法体系,因此学习后却不能用C语言进行程序设计;后者则注重讲授抽象的数据关系和算法在计算机中的表示及实现,学生能进行抽象算法的描述,上机实践应用时却无从下手。然而,这两门课程都以培养学生解决实际问题的程序设计能力为共同目标。因此,如何将这两门课程有机地结合起来,构建C语言与数据结构的新体系,改革教学方法,提高教学质量,成了当前教学改革中亟待解决的问题。

在传统的教学模式下,C语言程序设计与数据结构这两门课程分开教学。C语言程序设计的学习主要在语言语法的层次上,数据结构难度较大,注重思维训练,造成学生不能结合有效结合这两门课程运用到实际中去。通过不断探索,认识到这两门课程有很多内在联系,如软件是用一种程序设计语言编写解决该问题的算法,通过编译、链接成为可执行程序而成,而算法是通过处理输入数据转换为输出的解决方案,因此数据结构和程序设计语言密不可分;再比如数据结构讨论的抽象数据关系和算法要用C语言去实现等。

针对差异化的学生现状,整理课程关系,精巧的设计教学案例和习题实现任务驱动式教学法,对于调动学生学习兴趣,先修课程的简单案例让学生能够逐渐独立实现,有助于学生产生满足感,增加学习自信心;对于案例的扩展性引导,启发学生深入思考和逐步掌握自学方法,通过自学后修课程,提出的较难的问题又有助于激发学生参与后修课程学习的积极性。

三、拟解决的主要问题

数据结构与C语言课程的结合方式的探讨,针对探讨结果设计实际结合方法,并在学生中实践,选择最佳结合方式。

数据结构与C语言,每门课程需要有经验的任课教师结合本课程特点,探讨并确定各个案例与各知识点和其他课程关系,针对学生差异性现状和任务驱动式及层次性教学需求,对选择的案例采用递增式设计;确定跨课程案例及相关课程名,涉及的知识点。探讨选择的习题(包括课堂练习题、课后思考题、课后作业、上机实验题和课程设计题目)于知识点及其他课程的关系,标注习题难度级别,以达到层次性教学目的。

针对这两门课程的案例和习题,深入探讨相互关系,特别是相互的衔接性,C语言课程首先需要讲解基本语法知识,帮助初学者建立简单的程序设计过程思想,但由于教学时间限制,只依靠课内学习和课后作业及上机实验是不能充分达到熟练运行C语言解决问题,编写项目程序的目的。

C语言是大一学生首先接触的程序设计语言,加上许多学生还存在中学时期的一切依赖老师的学习方法和观念,未能进一步学习并提高程序设计能力,因此在后续课程中,比如数据结构课程中需要在讲解数据结构抽象数据类型及解决问题的时候,学生应该尝试借用C语言编程实现抽象算法。因此,应该结合学生的这个实际情况,进一步细化和分解选择的案例和习题,让学生在C语言学习过程中学会应用C语言解决和数据结构简单问题相关任务,为数据结构课程打下坚实基础;而数据结构课程中有意识的安排一些案例和习题,让学生能够有运用C语言解决简单问题的能力,并通过数据结构课程的学习和培养,掌握复杂问题的解决方法和更加熟练的应用C语言工具。

四、总结

根据计算机课程关系,设计优化与其他相关课程有关系的案例与习题,一来可以引导学生理解后修课程部分内容,引起学习兴趣,二来在一些先修课程已经介绍本课程该知识点的基础上,提出新的解决方案或者优化方法,更容易激发学生探索问题的好奇心和解决复杂问题的满足感,加强学生理解课程相互关系和培养计算机创新思维。

以数据结构课程和程序设计语言课程为例整理课程关系,研究和设计教学案例及习题,满足学生差异化需求和对学习内容的兴趣,进行层次性教学,将其经验和方法最终推广到计算机本科教学的各课程。

参考文献:

[1]黄迪明.C语言程序设计(第2版)[M].成都:电子科技大学出版社.

[2]吴跃,李树全,尚明生.数据结构与算法(第2版)[M].北京:机械工业出版社,2010.

[3]萨师煊.数据库(第3版)[M].北京高等教育出版社,2000.

[4]傅彦,顾小丰,王庆先.离散数学及其应用.北京:高等教育出版社,2007.

篇8

关键词:数据结构;理论教学;实践教学;教学改革

中图分类号:TP311.12-4 文献标识码:A 文章编号:1007-9599 (2012) 17-0000-02

1 课程内容

《数据结构》是计算机科学中一门综合性的专业基础课,也是其它辅修计算机专业的必修课程。本课程讨论了软件设计中经常遇到的线性表、堆栈、队列、串、数组、树和二叉树、图等典型数据结构的逻辑结构、存储结构和操作的实现方法,以及递归算法设计方法和各种典型排序和查找算法的设计方法。并对算法进行性能分析和比较,内容非常丰富。数据结构课程是一门理论和实践相结合的课程。本课程包括讲授和课内上机实验两部分教学内容。课内上机实验是为训练学生的实际程序设计能力安排的。

课程的目标是使学生掌握数据基本的逻辑结构和存储结构、一些典型的数据结构算法及程序设计方法和技巧,要求学会分析数据对象特征,掌握数据组织方法和计算机的表示方法,为数据选择适当的逻辑结构、存储结构以及相应的处理算法,要求具备算法分析的基本技术和能力,并培养良好的程序设计风格,掌握开发复杂、高效程序的技能。

2 理论教学方法与手段的探索

遵循以学生为主体,以教师为主导的教育理念,针对理论教学和实践教学的不同特点,合理进行教学设计,推进教学方法和教学手段改革。课堂上引入启发式教学,充分发挥学生的学习主动性,重视自学能力的培养,引导学生积极思考,活跃课堂气氛,适当压缩授课时数, 留给学生更多的思维空间和自学空间,增加学生阅读参考书、科技文献和写读书报告的时间。数据结构的教学策略:

(1)激发学生的学习兴趣

兴趣是最好的老师,只有激发了学生的学习兴趣,才能事半功倍,取得更好的学习效果。在教学中通过具体的实例说明数据结构在程序设计中的重要性,从而激发学生的求知欲,让学生充分感受到数据结构算法设计的魅力,调动学生思考的积极性。鼓励学生对教学内容提出疑问,师生共同讨论,从而提高教学和学习水平。在课堂上随时提出一些思考题,对一个结构从不同角度讨论。例如,对于线性结构,讨论线性表、栈和队列各自的操作特点。鼓励学生在学习过程独立思索,提出不同的算法,深化对问题的理解。例如在讲解循环队列时,如何判断队空和队满,有的同学提出三种解决方法。对于这样的同学,我们及时给与表扬和鼓励。

(2)教学内容的有机组合

在现有教学大纲的内容的基础上,不断吸收新知识、新内容,补充考研试题。对教学内容的安排重新进行拆分和重组,突出重点、细化难点。运用面向对象的学习方法讲解数据结构,每一种数据结构的学习方法都是相似的,重点介绍数据结构的逻辑关系、基本操作和在不同存储方式下基本操作的实现,介绍数据的逻辑结构和物理存储之间的关系,及物理存储在类C语言中的描述,数据结构的主要内容可用以下的体系结构来表示。

学生在了解了数据结构课程的核心内容后,算法的实现就不难理解了。例如:我们在讲授线性表的复杂操作有序表的合并时,先从逻辑上看是如何实现的,介绍算法设计思想,然后讲解两种实现算法:顺序存储方式和链式存储方式下的算法,让学生自己比较两种算法,加深理解。

(3)双向互动式的教学

改变原来“填鸭式”的教学模式,变以教师为主的教学方式为以学生为中心的教学模式,教师只起画龙点睛的作用。课堂上引入启发式教学,充分发挥学生的学习主动性,重视自学能力的培养,引导学生积极思考,活跃课堂气氛,适当压缩授课时数,留给学生更多的思维空间和自学空间,增加学生阅读参考书、科技文献和写读书报告的时间。为了更方便和鼓励学生自主学习,我们建设了数据结构精品课程网站,有授课视频、教学课件、各章习题和考研辅导等学生内容,教师还可以通过网站进行网上答疑,与学生及时交流。

(4)注重各知识点的有机统一

若想让学生做到融会贯通,举一反三,在教学中就必须注重各知识点的有机统一。比如在讲授内部排序算法时,综合比较各种排序算法的时间复杂度、空间复杂度、稳定性、最好及最差情况等。让学生通过比较,提高解决问题的能力,会根据不同形式的待排序表选择合适的存储方式和排序方法。再就是讲授链队列时,讲完用一个带有头尾指针的单链表表示的队列后,再让学生思考如何用一个循环链表表示队列,在给出启示后让学生自己写成队列的初始化、入队和出队算法,通过这种方式的教学不仅培养了学生的思维能力,而且有助于培养学生的创新能力,会综合运用所学知识,用计算机解决较复杂的问题。

(5)运用现代化教学手段

重视现代教育方法、技术手段的运用,采用多媒体教学,加大课程信息量,提高教学效率。在采用多媒体技术讲授本门课程的过程中,在深入研究多媒体教学的特点以及学生现有知识架构的基础上,重新组织、优化、补充教材内容,精心制作多媒体课件。在多媒体课堂上,通过教师有机地组织电子教案、演示课件等,使得学生能形象地领悟到算法的效果,教学变得丰富、有趣。在授课过程中,首先还原问题的本来面目——提出问题,引导同学积极参与——尝试解决问题,在讨论的基础上给出结论——讲授教学内容,最后采用课件进行算法的动态演示,加大了课堂信息量,提高了教学效率。

3 实践教学的探索

实践教学是数据结构课程教学的一个重要组成部分,对本门课程的学习起着至关重要的决定。通过实践教学,让学生能够学会运用书上学到的知识来解决实际问题,培养软件工作所需要的动手能力。

实践活动通过两个环节来实现,第一个环节课程实验,较偏重于对课程内容的理解。实验讲义完备,开出率100%。保证了学生理解和掌握课程的基本理论和基本概念,又提高他们的动手能力。第二个环节课程设计实习,让学生有机会自己提出实验项目、实验方案,在教师指导下按其方案进行实验,最后让学生自己得出应有的结论,进一步培养学生的学习兴趣和实践动手能力,从而激发创造力,也初步实现了对学生进行一整套软件工作规范的训练和科学作风的培养。

(1)实验教学内容

依据实验教学大纲,合理安排实验教学内容。我在教学时把实验项目按照不同内容和难度分成三种类型:基础型实验项目、设计性实验项目、和综合性和创新型实验项目,实现了实验教学内容的创新。基础型实验项目安排在各个章节中,主要围绕数据结构基础知识内容,目的是让学生掌握各种基本数据结构的逻辑关系和存储方式,通过实验验证算法,理解数据结构的基本操作的定义和实现。设计型实验项目是在基础型实验项目的基础上,让学生自己设计数据结构和算法,提高学生解决问题的能力和良好的编程能力。例如一元多项式求和,要求学生选择合适的数据结构自己编写算法。综合型实验项目涉及数据结构中多个知识点的重点内容,要求学生自己进行设计和实现,主要训练学生综合运用知识的能力,协作能力和创新实践能力。

(2)考核方式探索

为了培养学生的创新意识和团队协作精神,促进学生之间的交流和协作,使不同水平的学生都能在大型实验项目中担负起相应的工作,特别设计了一套针对综合型实验和探索创新型实验的考核方式和考核方法。

根据不同的实验项目采取不同的考核方式,基础型和设计型实验项目安排在平时每周的上机实验课进行,根据学生提交的实验报告进行考核。综合型和创新型实验项目较大,需要学生分工合作,共同完成,一般对学生进行分组,每组完成一个实验项目,在课程设计环节完成,一般有两周时间,教师根据每个学生在组内的表现给出一个考核成绩,项目完成后,再根据各组提交的项目报告和项目的质量给出合理考核成绩。这样既激发了学生的创新能力,又提高了学生的团队合作精神。

4 结论

在研究课程的教学方法时,要因内容制宜,因学生制宜,采取不同的教学方法。本人通过近十年对数据结构教学的实践与探索,取得了一定的教学效果,使得学生在学习数据结构时,不在感觉那么抽象,理解数据结构和算法不再那么困难,让学生真正理解了数据结构的作用,会选择和使用合适的数据结构解决问题。为学生后继课程的学习打下良好的基础,乃至对学生今后从事软件方面的工作都会提供较大的帮助。

参考文献:

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

[2]李治军,廖明宏,张岩.数据结构与算法课程设计教学模式的探讨[J].计算机教育,2006(2).

[3]殷人昆,陶永雷,谢若阳,盛绚华.数据结构(用面向对象方法与C++描述)[M].北京:清华大学出版社,2002.

[4]李锋,孙莉.任务驱动式方法在离散数学教学中的应用[J].计算机教育,2006(3).

[5]王锐.基于网络的《数据结构》新型教学模式研究[J].中州大学学报,2006(10).

[6]莫家庆.《数据结构》程序教学模式探索[J].计算机教育,2008(9).

篇9

关键词: CDIO;数据结构;课程教学

中图分类号:G642.0 文献标识码:A 文章编号:1009-3044(2014)01-0078-02

数据结构是计算机学科的重要核心课程,在计算机课程体系中处于承上启下的地位,它不仅是程序设计的重要理论技术基础,也与计算机科学技术的其他领域如操作系统、编译原理等也有着密切的关系。由于课程内容比较抽象,算法理解比较困难,要在有限的课时内使学生更好地理解课程的内容,掌握课程的重点,提高解决实际问题的程序设计能力,就必须打破传统的数据结构教学模式,融入一些新的现代教育的理念与方法,CDIO教育模式为我们提供了一个重要途径。

1 CDIO工程教育模式

CDIO是由美国麻省理工学院、瑞典查尔姆斯技术学院、瑞典林克平大学共同倡导,集多国工程教育精英建立的一套工程教育理论和实施体系。CDIO代表Conceive(构思)、Design(设计)、Implement(实施)和Operate(运作),是“做中学”和“基于项目教育和学习”理念的集中体现。

2 《数据结构》教学的特点与现状

《数据结构》教学过程中主要存在以下几个方面的问题:

1)对于课堂教学,大多采用多媒体理论教学和上机实践相结合的方式,但是目前的数据结构教学仍然非常重视理论教学,即存在“重理论、轻实践”的现象,不利于学生实践能力的培养。

2)虽然现在授课一直在提倡“以教师为主导,学生为主体”,但是在实际的理论教学环节通常仍然是以教师为主,学生充当“听众”,始终按着教师讲解的思路去理解问题、记忆知识,即存在“教师讲、学生听”的现象,难以调动学生探讨问题的积极性。

3)实践教学环节中的实验大多是验证性实验,缺乏与实际相结合的设计实验和综合性实验,即存在“验证多、设计少”的现象,不利于学生创新能力的培养。

3 CDIO对数据结构课程教学模式的启示

CDIO以能力培养为主线,以任务驱动进行项目教学,考核实施过程监控,通过构思、设计、实现、运作的完整过程,实现课程的“做中学”和“基于项目教育和学习”。对于数据结构课程教学,CDIO理念给我们带来了很大的启示,根据每节课程内容的特点选用以下教学模式展开教学。

3.1 问题驱动式教学

问题驱动式教学是为了激发学生的学习兴趣,根据教学内容合理地设置问题引入教学内容的方法,采用“提出问题、分析问题、解决问题”的模式,组织学生进行思考、分析、讨论与交流,这样,学生能够积极参与到学习中,而不再是被动地接受。

例如,在学习“栈”这部分内容时,教师可以提出比较有趣的“Hanoi塔”问题、八皇后问题或者迷宫问题让学生思考,再逐步引出“栈”的相关知识,然后鼓励学生应用“栈”编写算法解决这些问题并上机编程实现。以八皇后问题为例,提出问题可以教师口述如下:八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的:在8*8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种方法。也可以用形象的图示或演示软件为学生展示问题,如图1所示,左边是初始状态,右边是假设第1个皇后摆放在第1列,那么第2个皇后从第2列第1行开始试探,如果不互相攻击就将其摆放,第2个皇后摆放在第2列第3行的位置,接着试探第3个皇后摆放的位置,图示表示第3个皇后目前的位置与第1个皇后处于同一对角线,与第2个皇后处于同一行,都互相攻击,不满足条件……提出问题之后,让学员去思考分析,这样不仅激发学生的兴趣,也能培养他们分析解决实际问题的能力。

3.2上机实践教学改革

计算机课程学习过程中普遍存在这样的现象:教师讲授的内容学生反映基本都听懂了,但是上机实践时却觉得无所适从,不知道怎么把课堂上讲授的算法思想转换成可以执行的程序。上机实践是数据结构课程教学必不可少的一个重要组成部分,通过上机实践学生能够更好的理解数据中的经典算法思想的意义,掌握数据和数据之间的关系,深刻体会理论和实践的结合,运用所学知识去解决实际问题,所以对上机实践教学的改革势在必行。

首先,验证性实验应作为基本目标要求学生必须掌握,在此基础上,多展开设计性实验和综合性实验,使理论学习中需要解决的现实问题在一定程度上得到实现。其次,将上机实践纳入考试范围,占期末总成绩的30%,上机成绩由“验证性实验+设计性实验”组成,这样会使学生重视平时上机实践。

例如,在进行线性表的实践教学时,在掌握了线性表理论知识的前提下,每位学生都要将书中的算法予以验证性的实现,我们使用的是严蔚敏老师的《数据结构(C语言版)》,要求学生将顺序表和单链表的基本运算包括插入、删除等操作予以验证。这些基本的算法得到验证后,将其整合到现实中的问题作为综合性设计性实验,由学生自主完成,如:为某届学生建立一个通讯录管理系统,可以方便查询每一个学生的学号、姓名、年龄、专业、电话、电子邮箱等。其功能包括通讯录链表的建立、学生通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出等。

3.3 以项目为导向的课程设计

课程设计是对数据结构知识的梳理巩固和综合运用,好的课程设计能够使学生对理论知识举一反三、熟能生巧。传统的课程设计题目过于单一,学生应付式交作业的现象比比皆是且答案雷同。所以有必要采取多样化的题目,要求学生自由结合分组,每组3-4人,从给定题目中选取感兴趣并符合自身能力的设计题目,分别进行项目的Conceive(构思)、Design(设计)、Implement(实施)和Operate(运作),最后以项目小组的形式完成,上交项目报告。各不相同的任务迫使学生必须用学到的数据结构知识独立解决问题,小组中每个学生要发挥各自作用,积极思考,相互交流、沟通,在完成不同任务的同时,项目实施专业能力和团队协作能力得到很好的锻炼。在项目实施过程中,突出学生的主体地位,强调学生自学能力和动手能力的培养。

4 总结

综上所述,结合数据结构课程教学的特点和现状,将CDIO工程教育理念贯穿于教学中,并根据数据结构的教学内容和教学目标,在教学过程中“重学生、重理论、重实践、重项目”,培养学生的自学能力,提高学生的实践能力和团队协作能力。

参考文献:

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

[2] Edward F Crawley.Creating the CDIO Syllabus,a Universal Template for Engineering Education. 32nd ASSEE/IEEE Frontiers in Education Conference.November 6-9,2002,Boston,MA

篇10

1地球科学信息与技术专业中数据结构的教学现状与困境

笔者对中国海洋大学、同济大学、中山大学、浙江大学、中国地质大学(武汉)、中南大学、河南理工大学、石家庄经济学院8所院校的地科专业数据结构课程教学现状进行了调查和分析,认为该专业数据结构课程教学存在着一些亟待解决的问题。这些问题主要表现在以下两个方面:

1.1教学内容与专业应用脱节笔者对上述8所学校的地科专业的基础信息进行了汇总和分析(见表1),发现8所学校的地科专业成立时间比较晚,集中在2002年至2006年,而且依托学科多为地质学、勘察技术、地球物理学、测绘学,科研实力雄厚、教学经验丰富,但缺乏计算机学科方面有经验的教师。目前大部分从事数据结构教学的教师来自于计算机学科,这些教师具有丰富的计算机学科的专业知识,但缺乏的是如何把数据结构同其本专业进行有机地融合,使学生误认为学习数据结构仅仅是为了掌握相关的计算机技术,而与本专业的知识结构没有直接联系。

1.2学生的计算机语言基础较为薄弱数据结构就教科书的内容而言,主要介绍一些算法,理论性强,大部分算法只给出主体的部分,通常采用伪代码、C语言或者类C语言描述,如果没有很好的计算机语言基础,学生就不能很好地在上机实践中编写完整程序去检验算法[2]。目前,地科专业学生不重视高级语言程序设计课程的学习,导致其计算机语言基础较为薄弱,影响其对数据结构课程内容的理解和实践。

2数据结构课程改革的总体思路

2.1依据专业特色调整教学内容和教学重点由表1可知,8所学校地科专业的专业特色各不相同。依据专业特色调整数据结构课程的教学内容和教学重点,把地球信息科学专业知识与数据结构理论进行有机地融合,使学生明白数据结构课程在本专业知识体系中的位置。

2.2注意前导课程的复习针对学生计算机语言基础较为薄弱这种情况,在数据结构正式开始学习之前需要复习一下高级程序设计语言的相关知识,如数组、指针、函数(特别是指针做函数参数)、结构体等[3]。然后,对刚进入本课程学习的前几个算法给出完整的程序并加以详细讲解,使学生理解算法和源程序之间的关系。

2.3协调高级语言程序设计与数据结构关系为避免高级语言程序设计与数据结构课程使用的计算机编程语言不一致而导致数据结构课程教学效果差的情况发生,需要保持高级语言程序设计与数据结构编程语言一致、编译平台一致。在数据结构教学过程中应重视学生实践能力的培养,培养学生在编译平台环境中使用高级语言编写完整程序去检验算法的能力。

3数据结构课程改革的具体实施

3.1加强学生计算机编程能力的培养力度首先需要加强地科专业学生计算机编程能力的培养力度。学生应该明确自己学习高级语言程序设计的目的,不是把它作为纯理论的课程来学习,而是作为应用技术来掌握,为数据结构课程的顺利学习提供扎实的应用基础。根据这种情况,在这一模块的改革过程中需要对高级语言程序设计和数据结构课程教学的内容进行微调,在高级语言程序设计课程原有内容的基础上添加几章“数据结构”的基础内容,在数据结构课程正式开始学习之前需要复习一下高级语言程序设计的相关知识,使两门课程内容顺利过渡和衔接。这样既提高了学生的编程能力,也使两门课程融会贯通。

3.2培养学生算法验证能力在第一模块的基础之上,学生还必须理解数据结构基础理论,具有算法验证的能力。简单地说,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。对于学习数据结构的学生,不能靠死记硬背,必须理解数据结构中的各类定义,抓住研究数据结构的规律,这一规律就是,在研究一种数据结构时,要掌握它的逻辑和物理关系,逻辑关系在其定义中阐述,物理关系在它的存储结构中说明。另外,数据结构学习一定要要求学生自己独立完成代码实现,虽然有时候学生理解算法内容了,但是实现上面还是会遇到很多困难的,解决这些困难会帮助学生提高算法验证和程序设计的能力。

3.3培养学生专业应用能力在前两个模块的基础之上,学生还必须具备专业应用能力,将数据结构理论灵活的应用于本专业领域。对于地科专业的学生来说,在后续课程和以后的工作中有许多地方需要数据结构理论,如:在数据结构课程中学习的排序问题的算法,以及基本的树、图等数据结构,是计算机科学的基本功,无论是在数据库还是网络中,都将作为基本知识来运用;同时,通过B+树、Hash等高级数据结构的学习,也对学生今后数据库的学习影响颇深。根据这种情况,在这一模块的改革过程中首先需要依据专业特色调整数据结构课程的教学内容和教学重点,把地球信息科学专业知识与数据结构理论进行有机地融合,使学生明白数据结构课程在本专业知识体系中的位置。在数据结构课程教学中加入位图、遥感图像、DXF文件、MIF文件、SRF文件等常见图像或图形文件结构和四叉树、八叉树等二维和三维图形数据文件存储结构,使学生能够理解数据结构的真正内涵并能活学活用,为后续专业课程的学习和专业知识的理解奠定良好的基础。其次,鼓励学生参与数据结构与专业相结合方面的课题研究,如“基于VTK技术的三维地层可视化研究”项目需要将专业知识、数据结构理论、数据库理论、高级语言程序设计交叉融合,学生参与此项目既可以加深对数据结构理论的理解,又提高了专业综合应用能力。此外,在课程设计和毕业设计时布置相应的课题,在教师的指导下让学生自己动手去完成这些课题,以求进一步提高学生应用数据结构解决专业问题的综合能力。