首页 > 文章中心 > 数据结构课程设计

数据结构课程设计

数据结构课程设计

数据结构课程设计范文第1篇

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

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

数据结构课程设计范文第2篇

关键词:程序设计基础;数据结构;计算思维;教学衔接

0、引言

程序设计基础与数据结构是计算机类专业的两门专业基础课,在计算机类专业教学中具有举足轻重的作用,都旨在培养学生的编程能力和计算思维能力,并为后续课程打下坚实的专业基础,但在这两门课程的教学过程中,存在一系列问题,严重影响课程的教学效果。笔者分析和研究产生这些实际问题的原因,对这两门课程的知识融合、内容衔接以及教学实践等进行探讨,提出切实可行的解决方案,更好地实现两门课程的教学目标。

1、课程教学内容和教学目标

程序设计基础课程是学生接触的第一门专业基础课,也是进行计算机编程的入门课程。课程的教学目标是使学生掌握程序设计的基本方法,培养其拥有良好的程序设计风格、较强的软件开发能力以及一定的计算思维能力,为后续课程打下良好的基础。

数据结构是继程序设计基础课程之后的一门综合专业基础课,是计算机类专业的核心课程之一,具有举足轻重的作用。它是程序设计基础课程所讲知识的自然延伸和具体应用。对数据结构的理解、掌握和应用拓展,将对学生解决具体实际问题时的数据分析、数据组织、数据处理和编程能力有着深远的影响。课程的教学目标是培养学生缜密的逻辑思维和数据抽象能力以及学生在软件设计领域中科学的计算思维能力,帮助学生将数据结构和算法与具体的编程实现相结合并灵活地应用到实践和工程实际中。

2、两门课程间的关系

从程序与数据结构本身的关系来说,一个好的程序离不开合适的数据结构,而数据结构中算法的实现离不开具体的程序设计。在计算机类专业的课程体系中,数据结构和程序设计基础课程虽然独立开设,但是它们之间的联系是紧密的。在课程设置上,程序设计基础是数据结构的前导课程,两门课程一脉相承,不可分割。

学生对程序设计基础课程的掌握程度、具备的计算思维和编程能力,直接关系到以程序设计语言实现算法的数据结构课程的教学效果。数据结构课程通过创造性思维的训练,重点突出数据抽象与程序抽象能力的培养,从而进一步提升学生的计算思维能力和编程能力,但两门课程在实际教学中存在一些问题,主要原因是课程设置、教学内容、教学方法和教学实践方式等多方面存在缺陷。经分析,对程序设计基础和数据结构课程进行知识整合和内容衔接,采用适当的教学方式,改进教学实践是探讨和研究的主要内容。

3、两门课程在实际教学中存在的衔接问题

3.1 两门课程教学内容的脱离

目前,在实际教学中,程序设计基础和数据结构课程虽然关系紧密,但是一直被设定为两门完全独立的课程,而且教师在制订教学大纲和教学目标时容易忽视两门课程问的联系,在教学过程中出现一些盲区,要么两门课程在教学内容上出现不同程度的交叉,要么出现知识衔接的断层,令学生对两门课程的内在联系没有整体概念和认识,从而导致不能深入系统地学习相关知识。尤其是先行课程序设计基础的教学内容和课程案例完全脱离了数据结构课程,使数据结构中最频繁使用的知识和内容在程序设计基础课程中甚少提及,不能为数据结构课程的讲解打下扎实的程序设计基础。

3.2 程序设计编程语言与数据结构实现语言不一致

程序设计基础课程所教授的编程语言与数据结构教材或实验所使用的实现语言不一致,如将C++语言作为程序设计基础的教授语言,而在数据结构的实现上选择c语言或Java语言,以至于数据结构的理论教学与具体上机编程实现脱节,严重影响了上机实验和课程设计环节。

3.3 程序设计方法与数据结构实现方法不一致

程序设计基础课程中或注重面向过程的程序设计方法,或注重面向对象的程序设计方法,但在数据结构课程中却很难利用前导课程中学到的程序设计方法实现相关的数据结构和算法,从而影响了学生对数据结构课程知识的应用与实现。另一方面,学生在学习过程中没有充分理解数据结构课程的作用和实际意义,以至于在实际项目和问题中不知使用什么方法(面向过程或面向对象)分析解决问题,不知如何运用数据结构知识解决实际问题。

3.4 前导课程对后续课程实践环节的影响

数据结构实验环节相对课堂理论环节较薄弱。此问题的存在多半是因为数据结构具体实现的关键技术在程序设计基础课中未被讲解或强调,在进行数据结构算法从理论到伪代码、再由伪代码到真代码转换的过程中难以真正编程实现,使学生对数据结构的理解和掌握仅停留在抽象层、概念层、理论层,难以上升到实现层,从而影响学生的学习兴趣和积极性。同时,课程中的实践项目过于单一且相对独立,使实践环节与实际项目的联系过于松散,学生运用所学知识解决实际问题的能力和实际工程能力很难得以锻炼。

3.5 缺少计算思维能力的培养,缺乏理论知识与实际应用的联系

提高学生计算思维能力是程序设计基础和数据结构课程共同的目标。计算思维是抽象的多个层次上的思维,而抽象是表达实际的方法。然而,现行教学方法过多关注程序设计和数据结构知识点的讲解,缺乏对学生思维能力的培养。

如果缺乏理论联系实际,那么将影响学生计算思维的培养。数据结构中的知识又太抽象,如果缺乏相应的实际案例对抽象知识加以应用,那么就会导致学生不知道怎样将所学的知识应用到实际中,缺乏具体问题具体分析和解决的能力。

3.6 教师本身知识结构欠缺,上机实践指导教师数量不足

授课教师知识结构的缺乏将导致一些现实问题:如果程序设计基础的教师不懂数据结构,那么其自然不会将相关知识引入课堂,同时也缺乏用所教授的语言具体实现数据结构中结构和算法的能力;如果数据结构的教师缺乏相关编程语言知识,那么就会给上机辅导带来困难。同时,两门课程具有很强的实践性,若上机实践辅导教师不足,将不利于学生编程能力的提升以及相关软件大赛学生的培养和辅导。

针对以上实际教学中存在的问题,可知为提高程序设计基础与数据结构课程的教学效果,根据计算机类专业这两门课程教学内容和目标,对两门课程进行知识整合和内容衔接的必要性,对课程衔接的方法和思路等进行探讨势在必行。同时,课程教学不仅要关注知识的传授,还要培养学生主动获取知识并综合已有知识创造新知识的能力。

4、程序设计基础和数据结构课程衔接的新方法和思路

4.1 做好两门课程教学内容的融合和衔接

教师需紧密结合计算机类专业的培养目标,精心设计程序设计基础和数据结构课程的教学内容,既要满足课程的专业基础性,又要满足后续课程学习的需要,严密制订教学大纲,做好程序设计基础与数据结构教学内容的衔接以及相关教材的选定。

在程序设计基础课程教学中,教师需要关注学生计算思维能力的培养,将重点放在讲解思路上,教学生如何对问题进行抽象,还要介绍一些简单的基础算法和数据结构。程序设计与数据结构的联系过程必须做到循序渐进,若引入的数据结构相关知识过难,会打击学生的学习积极性。例如,教师讲数组时可引入几种数据结构中简单的排序算法冒泡排序、选择排序等;讲完指针和结构体后可引入最基本的数据结构――链表;讲完嵌套函数调用后可引入“递归”,它是数据结构中解决问题的常见思想和算法,可以通过简单的递归函数帮助学生理解递归思想和递归调用过程,这些是理解数据结构中复杂递归函数的基础。在程序设计基础教学中,只讲递归函数的简单应用,而在数据结构教学中,需要介绍递归函数的复杂应用:栈、树、八皇后问题、N个数的全排列等。围绕“递归”这一重要知识点,从易到难并结合课程本身特点进行理论分析,将有益于整合课程教学内容,引导学生循序渐进地学习和思考。

针对在程序设计基础课程中不重要但在数据结构及算法中被广泛使用的知识点,教师需要在讲解程序设计课程时将其点出并告诉学生此知识在后续数据结构课中的重要性,引起学生对该知识点的兴趣和重视,如指针的灵活使用、结构体类型的复杂应用、类型重命名、类的拷贝构造函数(深拷贝)、函数模板、类模版等。

同时,教师要对程序设计基础课程内容进行适当补充和扩充,如增加c++函数模板、类模板的相关知识,为将泛型程序设计、c++的STL引人数据结构课程奠定知识基础,缩小教学知识与实际运用的距离,提高学生的动手编程能力和知识运用能力。

4.2 保证程序设计编程语言与数据结构实现语言的一致

程序设计基础课程所教授的编程语言要与数据结构教材或实验所使用的编程语言一致,这样不仅能大大提高学生的编程能力,还有利于数据结构课程的上机实现。

4.3 将面向对象思想引入程序设计与数据结构中

随着程序设计方法从传统的结构化程序设计演化到面向对象程序设计,数据结构在面向对象程序设计中也将成为面向对象的数据结构,且将随着程序设计理论和技术的发展而不断变化发展。在程序设计基础课程中讲授面向对象的编程语言如c++语言,既可以实现面向过程的数据结构,又能实现面向对象的数据结构。数据结构课程采用面向对象的观点讲授并以C++语言作为算法的描述工具,从而强化数据结构基本知识和面向对象高级程序设计基本能力的双基训练以及实际动手能力培养。在设计数据结构实践项目时,将面向对象的程序设计思想、面向对象的程序设计语言和数据结构课程教学内容恰当地融合,有效整合两门课程中的重叠部分,突出各自的侧重点,符合当前软件设计思想和软件开发趋势。

4.4 加强课程中计算思维能力的培养

在程序设计和数据结构的教学方法上,将面向语法为中心的教学逐渐转变为面向问题求解的教学,从问题出发采用适当的数据结构,将其抽象成解决问题的算法描述,用程序设计语言实现问题求解,使课程从过去的仅讲授孤立的知识点,转变为讲授计算思维和问题求解的过程,从而达到突出思维方法训练的目的。在程序设计基础和数据结构授课时尽量将理论联系实际,将知识点解释和应用为身边容易理解的真实案例。例如,讲“图”时,可以把现在流行的复杂网络、社交网络引入其中;讲解“队列”时,可将春节买票引入其中,让学生从身边的例子理解理论知识的具体应用。对有些案例可以提倡“一题多解”,不局限于一种数据结构、解题思路和实现方法,通过一题多问、一题多解带动学生探索、比较、寻求更好的解决途径,达到学生分析解决问题能力的提高和计算思维能力的培养。

4.5 提升教师能力,配备充足的上机辅导教师

学校要加强程序设计基础与数据结构课程相关授课教师整体能力的提升。教师不仅要掌握自己所教授课程的知识,还要对该课程的前续及后续课程内容有所了解,便于维护教学的整体秩序和融合学生的知识体系。同时,教师要积极参与各种软件大赛和企业培训,将教授的理论知识和实际项目相结合,达到应用知识解决复杂问题的目的。此外,两门课程的上机实践环节要配备足量的辅导教师,不让学生输在编程入门的起跑线上。

4.6 依托程序设计竞赛,提高学生的编程能力

依托全国软件大赛、ACM大赛等程序设计竞赛,将竞赛题目引入程序设计基础和数据结构课堂中。此类题目强调考查学生对各种算法的应用能力,综合性较强,非常适合辅助学生学习和体会数据结构的妙用,提升学生分析和解决实际问题的能力,引导学生将所学知识准确而灵活地运用到实际生活中,大大提高学生的实践动手和程序设计能力,促进其知识的融会贯通。另外,通过竞赛等多种活动可以为学生提供展现程序设计能力的舞台,激发学生学习的主动性,培养其计算思维能力。

例如,在教授程序设计基础时,讲完逻辑表达式和多重循环结构后,可以将大赛中的逻辑推理题目引入教学中并引出常见的解题方法和思路一枚举法,从而加深对枚举法的认识。通过采用数据结构中的双向链表和线性数组两种方式实现大赛中常见的约瑟夫环问题。

4.7 引入OJ平台。加强课程实践环节

引人在线判题(Online Judge,oJ)系统,提高学生的实践能力。能力需要以丰富的知识作为支撑,而实践是能力赖以生长的土壤。在OJ系统中,学生可以在线提交程序源代码,系统对源代码进行编译和执行并通过预先设计的测试数据检验程序源代码的正确性。引入0J系统不仅可以辅助教师批改作业,减轻教师工作压力,还可以促使学生加强平时上机编程练习,通过编程排名方式提高学生的学习兴趣。OJ系统中拥有大量题库,可以让学生进行上机实践,培养自身的计算思维能力,提高编程能力。0J系统不仅可以作为程序设计基础课程的实践平台,还可作为数据结构课程的实践平台。

数据结构课程设计范文第3篇

关键词:数据结构;实验教学方案;栈;队列

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2016)24-0274-03

一、引言

实验教学是学生从学习理论知识到走向社会的桥梁,对提高学生综合素质、培养学生创新精神和实践能力有着理论教学不可替代的特殊作用[1]。特别是主干课程的实践教学,它是应用型人才培养中的关键环节[2]。课内实验是指与理论课相捆绑的实践教学,即嵌入到专业基础课或专业课内的实验实践教学[3]。它是与理论教学并行实施的实践教学环节,能够帮助学生深入理解和掌握所学的专业知识。

数据结构是随着处理对象的复杂性不断增加而发展起来的一门课程,作为计算机专业的核心课程,在专业人才培养链条中占有举足轻重的地位[4-7]。数据结构主要研究数据在抽象视图和实现视图中的表示和处理方法[8,9]。抽象视图涉及的是数据结构的理论性部分,实现视图主要体现的是数据结构的实践性,理论指导实践,实践支撑理论,因此设计有助于课堂理论教学的实验教学方案是非常有必要的[10]。它可以解决学生对所学知识缺乏必要感性认识的问题,将知识传授、技能训练、能力培养融于一体,使所学理论知识在实验中得到验证和应用[11]。

栈和队列是两种非常重要的数据结构,它们有非常多的实际应用并且是实现其他复杂结构的基础,因此为了帮助学生掌握并灵活运用这两种结构,本文给出一种栈和队列的实验教学方案。该方案的设计思路也可以应用于其他数据结构或课程的实验教学方案的设计。

二、认识两种重要的数据结构――栈和队列

栈和队列是两种运算受限的线性表,它们的插入和删除运算都被限制在表的端点处进行,只是具体的受限规则不一样[12,13]。

(一)学习对象

栈(stack)是运算受限的线性表,它被限制在表的一端进行插入和删除操作。能进行插入和删除的一端称为栈顶,另一端称为栈底。正是由于它插入和删除操作上的限制使得它具有了一种独特的“后进先出”(LIFO)的特性。栈的LIFO特性使得它具有非常多的应用,如:符号平衡问题、中缀表达式转换为后缀表达式问题、后缀表达式的计算问题、函数调用的实现(包括递归函数的实现)、在股票市场中查找划分、Web浏览器中的网页访问历史、文本编辑器中的撤销序列等。此外,栈还是其他很多算法的辅助数据结构和其他数据结构的组成部分。

队列(queue)也是一种运算受限的线性表,它被限制在表的一端进行插入操作,在表的另一端进行删除操作。进行插入操作的一端称为队尾,进行删除操作的一端称为队首。正是由于它插入和删除操作上的限制使得它具有了一种独特的“先进先出”(FIFO)的特性。队列的FIFO特性使得它具有非常多的应用,如:操作系统中的作业调度、异步数据转换、多道程序设计等。此外,队列还是其他很多算法的辅助数据结构和其他数据结构的组成部分。

(二)学习目标

学习这两种重要的线性结构需要学生重点消化的知识点有:(1)栈/队列的概念、类型定义及基本操作的定义和实现;(2)栈/队列的结构特性;(3)栈/队列的灵活应用。

为了配合栈和队列的理论教学,帮助学生理解和掌握上述知识点,我们需要精心设计栈和队列的实验教学方案。

三、栈和队列的实验教学方案设计

(一)实验题目设计

根据栈和队列的学习目标和遵循循序渐进的学习和教学原则,实验题目被分为以下三个层次:基础型实验题目、设计型实验题目和加强理解型实验题目。

所谓基础型实验是指围绕课程讲授的栈/队列的物理实现和其基本运算的实现来设置的实验题目。设计基础型实验的目的是,通过实践的方式验证课堂上讲授的重要知识点,给学生切身的感受,摆脱“纸上谈兵”的感觉,这种立体的感受有助于学生深入理解和掌握这些知识点。设计型实验要求学生能分别运用栈/队列解决简单应用问题。这类实验题目主要是用来引导和加强学生对栈/队列的灵活运用。设计加强理解型实验的目的是强化学生对栈和队列的结构特性的理解和体会。为了达到这个目的,加强理解型实验题目的设计思路有两个方面:(1)引导学生去思考并解决这样两个问题:能否利用栈的LIFO特性来实现队列的FIFO特性?能否利用队列的FIFO特性来实现栈的LIFO特性?(2)让学生实现其他更为复杂的栈和队列。

在栈的理论教学过程中可以开设栈的基础型实验,在栈的理论教学结束后可以开设栈的设计型实验,在队列的理论教学过程中可以开设队列的基础型实验,在队列的理论教学结束后可以开设队列的设计型实验和加强理解型实验题目。表1给出了具体的实验安排。

学生必须在相关内容的理论教学过程中利用自己的课外时间完成全部基础型实验题目,教师根据学时安排选择1~2道设计型实验题目让学生在上机课上完成,未选择的题目应向学生提供完整的源代码和设计说明。相关内容的理论教学结束后,学生必须利用自己的课外时间完成加强理解型实验题目中的第1题和第2题,剩下两题可以选做。

(二)教学方法

因为三种类型实验的要求、难易程度不同,因此在学生参与形式、教师参与程度、教师参与方式等方面需要区别对待。表2给出了对三种类型实验在上述这几个方面的设计。

基础型实验要求每位学生利用课外时间独立完成,教师全程参与指导。所谓全程参与指导是指从算法基本思想到算法实现的各个环节(包括编程技巧、程序调试与测试等)都要参与指导。参与方式多种多样,例如利用QQ等即时通讯工具进行指导,约定时间和地点进行答疑,等等。

设计型实验要求每位学生在上机课上独立完成,教师前期参与指导。所谓前期参与指导是指教师参与学生在算法设计环节的讨论,教师可以给出提示,同时鼓励学生设计不同的算法。参与方式是面对面的交流。

加强理解型实验要求每位学生利用课外时间独立完成,教师后期参与指导。所谓后期参与指导是指教师在收齐学生提交的源码和设计报告后,对其进行分析总结,并将总结结果以班级为单位采用面对面的方式反馈给学生。

(三)考核方法

对三种类型的实验采用不同的考核办法。表3给出了这方面的设计。

对基础型实验不做专门考核的原因是学生基础型实验完成的好坏会直接影响设计型实验和加强理解型实验的完成,因此对其他两种类型实验的考核间接考核了基础型实验。

对设计型实验的考核分两个部分:一是本次上机课上实验的完成情况,包括程序是否调试成功、程序的运行结果是否正确,代码编写的质量等;二是本次上机课结束后提交的实验报告的完成情况,包括内容是否完成、书写是否规范等。

对加强理解型实验的考核主要是考核学生提交的源代码和设计报告的完成质量。

设计型实验的成绩占总实验成绩的70%,加强理解型实验的成绩占总实验成绩的30%。

四、结语

数据结构是一门理论性和实践性很强的课程,其理论教学环节与实验教学环节相辅相成。栈和队列是两种重要的线性结构,为了提高它们的教学效果,增强实验教学对其理论教学的促进作用,本文提出了一种栈和队列的实验教学方案。该方案的设计思路同样适用于其他数据结构或课程的实验教学方案设计。

参考文献:

[1]朱金秀,金纪东,周妍,等.实践教学与就业能力培养相融合的研究与探索[J].实验室研究与探索,2011,30(4):105-107.

[2]荣瑞芬,闫文杰,李京霞,等.实践教学课程考核评价模式探索[J].实验技术与管理,2011,28(3):232-234.

[3]张纯容,施晓秋.问题与案例驱动的课内实践教学分级模式探索[J].实验室研究与探索,2012,31(1):145-148.

[4]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业人才专业能力构成与培养[M].北京:机械工业出版社,2010:143-147.

[5]董丽薇.数据结构课程教学方法的改进[J].沈阳师范大学学报(自然科学版),2012,30(2):307-309.

[6]刘城霞,董宛,蔡英.数据结构中基本教学案例的研究[J].计算机教育,2010,(03):144-146.

[7]韩建民,钟发荣,赵相福,等.基于ACM-ICPC训练模式的数据结构实践教学探讨[J].计算机教育,2013,(10):103-107.

[8]沈华.数据结构、算法和程序之间关系的探讨[J].计算机教育,2013,(04):58-61.

[9]沈华.数据结构入门教学中的实例法[J].计算机教育,2013,(24):64-66.

[10]沈华.数据结构课内实践教学方案[J].实验室研究与探索,2013,32(10):396-400.

[11]刘光蓉.以计算思维能力培养为导向的C程序设计实验教学[J].实验技术与管理,2013,30(1):154-156,191.

数据结构课程设计范文第4篇

关键词:网络精品课程;远程教育;网络资源建设

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

1引言

实施网络教育精品课程建设对于促进优质网络教育资源的建设和共享,减少低层次重复开发,促进网络教学改革和创新,提升网络教育的社会地位等都具有十分重要的意义。2007年4月,教育部颁发了《关于2007年度国家精品课程申报工作的通知》(教高厅[2007]25 号),把网络教育精品课程纳入到国家精品课程建设体系。网络教育精品课程是具有一流的教师队伍、一流的教学内容、一流的教学方法、一流的资源和教材、一流的教学管理和支持服务的高水平网络课程。因此,网络精品课程的建设是“高等学校教学质量和教学改革工程”重要内容之一。本文针对网络教育的特殊性,从网络资源建设、师资队伍建设、教学和学习活动设计以及网络服务支持等几方面,介绍了部级网络教育精品课程“数据结构与算法设计”的建设与实践。

2针对网络教育的特殊性,构建资源丰富的网络教学平台

网络教育是指远程网络教育。这种教育不同于一般的在校面授教育,其教育的对象不像全日制学生那样有大块的学习时间,而是利用零散的、业余的时间学习,而且学生的基础也不一样。他们更多的是为了学习实用的知识帮助他们解决工作中的问题。在学习的过程中还会有工作和学习的矛盾、家庭负担等影响因素。因此,远程教育课程教学设计的总体原则应该是,所教授知识有充分的实用价值和可实践性,适合于在职从业人员业余学习和终身学习,满足远程教育对象最紧迫的工作和应用需要。而在教学内容的选取上,则应采用教学与应用相结合的方式,将课程的基础性的理论与综合应用知识相结合,优化课程知识内容体系,达到应用型人才培养目标。

远程教育师生时空分离导致远程学习中学与教的时空分离,这是远程教育的重要特征之一。因此,要构建资源丰富的网络教学平台,将教学内容与学习资源整合起来,以实现远程教育。

北京理工大学现代远程教育学院成立于2000年,是经教育部2000年批准的15所现代远程教育试点高校之一。在发展和建设中,逐步形成了以人为本的教育理念。在实施远程教育过程中,加强对教学过程管理,并不断完善教育质量管理体系。“数据结构与算法设计”课程作为计算机基础教学基本要求的第三层次课程,2003年开始了网络教学和网络辅助教学。

“数据结构与算法设计”网络教学平台充分利用了多种媒体技术,构建了多种媒体资源优势互补的、支撑网络教学的立体化资源,风格独特,特色鲜明,实现了以“学生为中心,教师为主导”的教育思想。在选取教学内容和学习资源的建设时依据以下四个原则:第一,以学生为中心的原则,按照业余学习特点进行教学设计;第二,围绕网络教育应用型人才培养目标,选择适合远程教育对象学习的教学内容组织教学;第三,紧扣时代和学科最前沿,为学生提供多种形式的学习资源的原则;第四,紧扣网络教育特点和要求,选择适当课程授课方式。在学习资源建设方面,根据学生的学习条件和自身基础的差异性,采用多种媒体(文字、音频、视频、模拟、仿真、动画等)技术的应用呈现课程内容,为学生自主学习提供最大方便。我们编写并开发了该课程的教材、实验指导书、视频、电子教案、流媒体课件、Flas、实验案例、素材库、网络课件等,形成了丰富的立体化的教学资源,并将这些资源放在教学网站上供教师和学生浏览。在媒体设计上一体化,突出各自优势、形成优势互补。除具备课程所需的课件外,还设置了诸如实时交互、网上答疑、远程网站、自学导读、电子阅览等网络教育可以实现的现代教学形式。

课程的教学平台是立体化的,在设计上既体现了基于建构主义理论的教师主导型,引领型的价值理念,又给予学生自主选择、自主讨论、自我测试的平台空间,实现了教师主导引领和学生自主选择的统一。通过导学,学生可以快速掌握网络学习的方法,利用教学平台进行师生交互。同时,我们还创建了一个完整的教学支持服务体系,可以合理、有效地组织每个教学环节,注重教学过程和教学质量的跟踪管理,以确保应有的教学成效,培养了学生网络环境下的自主学习能力与实践能力,达到培养优秀应用型人才的目标。

3针对网络教育的特点,建设师资队伍

在网络教育中,师生分离的特征决定了师生之间的交流不方便、不及时,教师从学生身上获得的信息很少,相反也是如此。这就从客观上决定了网络教学中的师生需要建立更多同步或异步的交流途径,以弥补师生交互的缺失,而教师则需要投入大量的时间和精力与学生进行交流,如解答学生疑问,指导学习过程,组织网上教学活动等。

在现代远程教育中,教师通常由学校教师兼任,教师的学校教学和网络教学之间经常发生矛盾。为了解决这些问题,我们在师资队伍建设时注意了各种不同类型人员的配备,包括了主讲教师、教学辅导教师、班主任以及网络维护技术人员。其中,主讲教师主要负责课程的学术质量,包括:制定课程目标,设计教学大纲,组织教学内容,完成教学设计,录制课程讲解,设计考试试题等;辅导教师主要负责教学过程的指导与支持,包括:课程信息,组织教学活动,指导学习过程,答疑讨论,布置和批阅作业,批阅试卷等;班主任则负责学生的管理工作,随时在网上和学生沟通,一方面增加了学生的归属感,另一方面能及时把握学生各方面的动态,及时解决他们的问题,对促进学生持续、有效的学习,降低辍学率有很大的帮助。网络维护技术人员则全天候为学生提供技术支持服务,维护与建设网络教学资源,确保系统平台正常运行。

经过几年的建设,目前我们已经形成了一支稳定的教师队伍。在完善的网络教学制度管理下,促进了学生个性化的自主学习,规范学生个性化自主学习的行为,引导学生按照开放教育的要求学习,并保证学生个性化自主学习的质量。

4网络资源建设中的教学设计与学习活动设计

在网络教育中,网络教学资源是学生进行自主学习、获得知识和技能的基本途径。远程学习者与本科生在自身特征上存在很大不同,需要建立导学策略和组织学习活动,引导和督促其完成学业。通过网络教学资源,应该能为学生系统化呈现教学内容,促进学生对课程的理解,引导学生进行学习。因此,我们在课程的网络教学资源建设时,精心进行了教学设计,主要包括以下几个方面:

(1) 学习内容设计:选择适应应用型人才培养的课程内容;打破课程内容的线性章节结构,设计出适合学生自主学习的内容组织结构。

(2) 教学策略设计:设计教学内容的呈现方式和使用方式,如文字呈现、教师讲解、动画演示、效果对比、模拟操作等。

(3) 动机策略设计:设计富有激励性的学习环境,激发和维持学生的学习动机,如技术的新颖性、界面的艺术性、反馈语的归因导向、学习伙伴的伴学等。

(4) 学习指导设计:设计学习指导的内容和呈现策略,包括学习的重点、难点、学习方法的建议等。

(5) 学习评价设计:设计学生自我评价的内容和评价策略,如自测练习、模拟考试、学习游戏等。

(6) 学习资源设计:设计并提供与教学内容紧密相关的扩展学习资源。

同时为满足学习者的需要,学习活动则设计了以下一些模块:

(1)“课程概况”,包括“课程介绍”、“课程大纲”、“考试大纲”和“参考资源”等模块,为学生提供学习的准备性材料。

(2)“自学周历”模块为学生的学习时间和活动安排提供指导。

(3)“教学互动”中“主讲教师”、“课程论坛”、“小组论坛”、“语音答疑”、“留言信息”、“问题解答”等模块是学生与老师和同学进行交流讨论学习的平台。

(4)“教学互动”中“学习进度”、“在线作业”等模块,帮助学员把握自己的学习进度以完成学习任务。

(5) 每一章的学习中,给学生提供了“学前指导”、“内容讲解”、“总结评价”和“扩展学习”模块。“学前指导”为学生学习章的内容提供准备性的材料,使学生明确学习的目标、方法、重点难点等;“内容讲解”是学生学习的主要内容,由老师进行讲授;“总结评价”让学生及时地评价自己对内容的学习情况及效果;“扩展学习”为学生提供更多的学习资料,满足学生的个性化学习需求。

(6)“原理动画”模块将课程中比较难以掌握的学习知识点内容,以动画和具体操作的方式呈现,帮助学生更好地理解学习内容。

(7)“概念速查”为学生学习提供一些辅的工具。

(8)“参考资源”模块给学生以广博的辅助材料,拓展学生的理论视野,增强学生的学习兴趣和知识面。

上述的教学设计和学习活动设计,在课程的远程教学方面起到了重要的作用。

5网络支持服务

远程教育不仅要为学生提供教学内容和资源、组织学习活动,还要提供强大的学习支持服务。这不仅包括提供关于课程内容答疑、资源、实践等与学习有关的服务,而且包括提供与教学管理及其他相关的支持服务。

为了网络教育的顺利开展,在本课程在网络资源建设中,提供了包括授课、课程发送、学习辅导、学习资料提供、作业批改和意见反馈、考试实施和成绩管理,技术培训等支持服务内容。

授课过程中,注重培养学生的自主学习、协作学习和探究性学习的能力,包括对资料的收集、整理、分析、判断、评价、综合等能力。

通过在线课程基本信息和课程导学完成了“学习目标、学习要求、学习内容、学习模式、学习方法、考核方式、评价标准、评价内容”等课程发送功能。

在学习过程中提供“语音答疑”,使学生能跟老师实时地交流学习中问题;在“主讲教师”、“小组论坛”、“班级论坛”等教学互动的模块中,可以通过发帖提问、跟帖学习的方式,让师生共同参与,讨论学习中出现的问题,引导学生积极思考,逐步提高;另外,学生还可以通过“友情链接”进入到与课程相关的资源网站。

完成课程学习后通过“总结评价”、“自测习题”、“模拟试题”等模块,帮助学生总结所学的知识,并对学习效果进行评价;通过“扩展学习”、“参考资源”等模块,帮助学生拓宽学科的视野,把握学科前景。

提供的学习资源具体包括:静态资源和动态资源。教学视频、教学讲义、教学实验录像、参考书目、历年考卷、在线习题、案例讨论、在线答疑、网络课堂、课程论坛、优秀作业等等。

考试实施和成绩管理,具体包括“编制考卷、施测、评阅考卷、成绩查询”,考卷的编制,由教学办公室组织,任课教师具体完成。考试工作的开展,由学院统一组织,各教学点配合,统一按北京理工大学考试管理制度进行实施。教师阅卷后,在线登录成绩,学生可在线查询成绩。

专职技术人员全天候为学生提供技术支持服务。北京理工大学现代远程教育学院还设立了技术支持免费网络电话,用来提供关于网络学习、操作指南、常见问题的支持。

另外,北京理工大学远程教育学院坚持定期开展教学效果评价和实时跟踪评价。建立了包括教学内容、教学手段、教学过程、媒体应用、考试管理等方面的多种评价措施,对教学效果进行全面评估。

对学习过程的监控,则利用教学管理平台,统计学生网上资源使用情况和教师对学生开展支持学习服务的情况。

经过几年的建设,本课程的学习支持服务系统全部实现了网络化,极大提高了服务的效率和水平。

6结论

“数据结构与算法设计”网络教育精品课程的建设,主要是针对远程教育的特性进行的。通过对“一流的教师队伍、一流的教学内容、一流的教学方法、一流的资源和教材、一流的教学管理和支持服务”的建设,体现了一流网络教学的特点,体现应用型人才培养目标,符合科学性、先进性及网络教育规律和教学改革的方向,适合于在职从业人员和业余学习和终身学习。通过现代教育技术、方法和手段的运用,到位的学习支持服务,发挥着示范、辐射和共享的作用。“数据结构与算法设计”2008年被评为部级网络教育精品课程。该课程所建设的网络教学资源始终开放,这些资源已经与北京理工大学该门课程的本科教学共享。课程资源网址为/2008/ public/。课程资源今后将会不断地更新维护,以保障该课程的可持续建设与发展。

参考文献:

[1] 教育部办公厅. 关于2007年度国家精品课程申报工作的通知(高教厅函[2007]25 号)[EB/OL]. jpkcnet. com/new/ zhengce/default.asp.

[2] 教育部高教司. 关于2007年度网络教育精品课程建设与申报工作的通知(教高司函[2007]103 号)[EB/OL]. /new/zhengce/Announces_detail.asp?Announces_ID=98.

数据结构课程设计范文第5篇

关键词:数据结构;教学效果;存在问题;改革总结

一、课程的重要性

《数据结构》课程是计算机专业中一门重要的专业基础必修课,它为操作系统、数据库原理、编译原理、单片机原理等后续专业课程的学习奠定了基础。其次,数据结构课程是计算机相关专业的考研专业课之一。该课程的重要性显而易见。

二、教学中存在的问题

《数据结构》课程的教学目标是全面系统地介绍数据的逻辑结构、存储结构和算法实现,并介绍常用的非数值计算方法,如数据插入、删除、排序、查找检索等,使学生掌握各种数据结构的特点和算法思想,并能结合具体应用,运用各种数据结构和算法解决实际问题。但大部分高校《数据结构》课程的教学效果都不尽如人意,影响课程学致有如下原因:

1.程序设计课程掌握较差,基础薄弱。

2.实践机会少,动手能力差。

3.缺乏课外辅导,学生自学时障碍重重。

三、解决方法

鉴于以上几点,可以从这几方面进行教学改革:

1.加大对先行课程的重视程度。首先加大C程序设计课程的课时。C程序设计课程是数据结构课程的直接先行课,因此,学好C语言,为后续若干课程的学习打好坚实的基础。另外,增加数学及线性代数课程的课时。学习算法离不开数学的思想,学习数组的存储结构也离不开线性代数的应用。最后,增加了32课时的C程序设计课程设计。

2.实际操作方面,计算机专业要求有很高的实际操作技能,而我们的学生在长期被动的学习过程中却养成了勤于动脑,懒于动手的学习特点,这样教出的学生却是不能满足实际工作要求的。因此,数据结构的实验教学要紧密配合理论教学,通过相关实验与课程设计,帮助和加深对数据结构的整体理解,所以在本课程结束前安排两周实践进行课程设计,不要求实现过多的项目,但每个学生都要动手去做,亲身经历从需求分析到算法分析,最后的代码编写与调试这样的过程,从而更深刻的理解数据结构的逻辑结构、存储结构以及在某种具体的存储结构下的运算及其实现方法。

3.构建《数据结构》网络视频课程,加强师生互动环节。为了弥补课外辅导的缺陷,制作与《数据结构》课程内容相适应的视频,尤其是该课程中典型的算法及其实现过程,学生在课外学习时遇到问题可随时登录校园网观看视频,进行查漏补缺,达到巩固知识的效果。另外,在网站上可以设置在线答疑或留言功能,从而实现师生互动。

四、改革成果

根据以上改革方法,经过实施,数据结构课程教学效果颇见成效,简单做以总结:

1.加大C语言程序设计课程的课时,教师能够在足够的课堂时间将课程内容系统化的进行讲解,尤其是数组、指针、结构体等重要知识。从而给数据结构课程的学习打下了夯实的基础。

2.网络视频的构建,给学生提供了更为丰富的学习参考资料。学生在课外复习时遇到不理解的算法,随时登录校园网观看视频,好像再一次回到了课堂,从而解决了疑难问题。另外,校园网上开通了该课程的在线答疑功能,学生可以通过在线答疑功能随时和任课教师进行沟通。

3.加强数据结构课内实践与课程设计的实施,学生可以将课堂上的理论知识应用于实践中。尤其是课程设计的开设,如:简单文本编辑器的设计与实现、科学计算器的设计与实现等,通过案例让学生真正体会到数据结构课程的实用性,并从本质上理解该课程的内容。

五、结束语

《数据结构》不仅是计算机科学与技术专业的专业基础课,也是大多数院校研究生入学考试的专业必考课,因此,《数据结构》课程教学的讨论将会持续下去,最终能找到一条行之有效的教学方法。以上是作者结合自己多年教学经验和体会,提出的若干改革方法,不足之处会继续探讨研究。

参考文献:

[1]李春葆.数据结构(C语言)[M].北京:清华大学出版社,2013

[2]严蔚敏.数据结构(C语言)[M].北京:清华大学出版社,2011