数据结构课程设计范例6篇

前言:中文期刊网精心挑选了数据结构课程设计范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

数据结构课程设计

数据结构课程设计范文1

(中北大学 计算机与控制工程学院,山西 太原 030051)

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

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

基金项目:国家自然科学基金项目(61379125);山西省自然科学基金项目(2012011015-3);山西省高等学校科技创新项目(2014143)。

第一作者简介:庞晓琼,女,讲师,研究方向为信息安全与密码学,xqpang@nuc.edu.cn。

0 引言

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

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

1 设计过程

1.1 目的与思想

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

1.2 内容构建

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

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

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

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

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

2 实现过程

2.1 系统架构

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

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

2.2 技术特点

(1)平台是一个典型的富互联网应用(rich internet 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) 释疑解惑模块。

释疑解惑模块(如图8所示)是师生之间、学生与学生间互助学习的园地,分为3个功能区域:1区显示既往学生提出的问题及教师的答复;2区是学生向教师提出问题的区域;3区提供“中北大学数据结构论坛”的链接。

3 结语

数据结构课程设计辅助教学平台已在3届计算机、网络工程、软件工程专业学生的数据结构课程设计过程中使用。通过指导教师和每个学生进行一对一答辩的结果来看,学生的课程设计水平有了明显提高,对数据结构的运用更加灵活,思路也更加开阔,达到了建设该辅助教学平台的初衷。下一步,我们将设计开发与该平台对应的微信公众账号,使平台成为师生课余交流的重要途径。

参考文献:

[1] 庞晓琼. 案例驱动的数据结构课程设计教学改革实践[J]. 计算机教育, 2009(1): 53-55.

[2] 马巧梅, 庞晓琼, 杨秋翔. 数据结构课程设计案例教程[M]. 北京: 人民邮电出版社, 2012: 1-3.

数据结构课程设计范文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

关键词:数据结构课程;实验;设计;Java;软件工程

数据结构是计算机类专业的核心专业基础课之一,主要讨论数据的合理组织和有效存储、处理以及算法的正确设计、分析和评价,课程本身概念抽象、方法灵活、强调逻辑思维能力、难度较大,同时课程实践性强,实验是该课程不可或缺的重要环节[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

(School of Computer, Chongqing University of Technology, Chongqing 400050, China)

数据结构课程设计范文4

关键词:迭代增化增量模型;工作任务;数据结构

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

1引言

“数据结构”是高职学院计算机专业的核心课程,是程序设计的重要理论技术基础,为后继专业课的学习提供必要的基础知识、基本理论和方法。教学目的包括:熟练掌握基本的数据结构和算法;能应用重要的算法策略和分析方法;在实际的工程设计中应用算法。

“数据结构”是一门技术性很强的课程,以高职学生的思维习惯和抽象思维能力,在有限的时间里很难对课程的原理和方法的应用有清楚的认识。他们学习更注重知识和理论的应用性,而传统的实验课缺少有实用价值的工程应用设计,内容枯燥而缺乏创造性,学生的主动性和积极性不高。

为了将严谨抽象的理论教学延伸至现实生活中的问题情境,提高学生将数据结构中的知识应用于实际问题的能力,本文首先提出了基于迭代增量的开发方式设计实践学习情境,从接受任务到任务完成都遵循“需求分析数据结构/算法设计编码实现测试”这一基本的工作流程,然后根据数据结构课程知识体系结构设计了具有连续性和序列性的实验任务,进而分析各个任务如何在迭代增量过程具体实施操作,最后对比传统的实验教学来评价该实践方法的有效性。

2实验教学过程设计

迭代增量模型是软件开发过程中常用的开发模型,将其引入数据结构的实践教学中设置教学场景,使实践教学处于开放状态,不拘泥课堂内外的界限,也不受制于数据结构课程通常的总课时数。将设计的30个实验任务平铺于整个学期,每个任务从接受到任务完成都遵循“需求分析数据结构/算法设计编码实现测试”这一基本的工作流程,如图1所示。

从图中可知,迭代增量的迭代是通过对核心开发活动的重复应用,包括了对问题解决方案定义以及解决方案实现的连续细化,其中的增量是指:软件开发过程中,随着数据结构理论课程知识由少至多的学习,在一次迭代运行的周期中,学生对问题的理解以及解决方案提供的功能均会增长,先开发每个实验任务的主要功能模块,再开发次要功能模块,逐步完善,最终开发出相对完整的符合需求的软件作品。这样将整个实践的全过程都融入在一系列的工程任务中,在实践开发中,其中连续地组织起来数个或更多的应用,以构成一个完整的项目。

学生按照上面的开发模型,在实验课程中引入软件工程的原理,按照规范的开发过程学习和应用数据结构原理和方法,故而开展小规模软件数据管理系统调研,设计,编码测试工作。另外根据“软件技术应用岗位职业标准”,分析工作过程中的一系列真实职业角色,指导学生按照“需求分析员架构架构师编码员测试员”等不同角色的转换在迭代增量过程中完成任务,着力培养学生的职业能力。

3实验教学内容的组织与设计

本课程实践教学内容的组织、安排的基本思路是遵循迭代增量的开发基本流程,以真实工作任务及其工作过程为依据整合、序化教学内容,精心设计了30个学习性工作任务。从课程教学内容组织而言,考虑对于正在发生迅速变革的计算机领域,选择那些相对稳定、长期有用的、对应用领域必不可少的知识结构作为实验任务设计的内容。课程教学内容和学习工作任务的总体组织安排如图2所示。

其中,课程教学内容共计14个专题模块与30个学习工作任务交叉对应,全部任务将所有知识结构迭代覆盖,各个工作任务按教学内容的先后依照进度逐一展开。30个

结合具体问题构造的软件设计工作任务经常会要求学生“用特定的数据结构/算法”来解决某个问题,学生需要撰写详细的设计,描述现在要解决的问题和最后的结果。对于算法的描述,应该按照4点要求执行:

(1) 算法的中英文描述,提供伪代码(pseudocode)。

(2) 最少以一个工作例子或图表来更明确的显示算法怎样运作。

(3) 算法正确性的一个证明(或表示)。

(4) 算法执行时间的分析。

这样数据结构和算法设计这一核心工作流程尤为重要,教师必须加强的指导力度,做到边讲边练、边学边做。而在需求分析过程中,教师带领学生深入现实实际获取和调研需求,学生会跟随理论课知识进一步学习和调研,增加需求,迭代需求分析这一核心工作过程。每个任务持续的时间和任务本身的规模有关,如某个超市购物系统会持续到学期末,如后期学习的排序,查找会在系统中得到应用设计,整个迭代的过程会持续至数据结构课程全部结束,这样基于迭代增量过程就能发挥更大作用。而编码和测试过程则以学生为主导,自主自觉地根据前期的分析和设计展开具体的实现过程。在此过程中,学生觉得编码过程不再困难,而有想早点实现以见其效的积极想法。对每个任务,以软件工程流程或者角色为轴线的迭代,学生在教师的指导下参与所有的工作活动,按照如图3进行多次迭代开发设计。

根据迭代增量的工程流程,我们筛选了主要的项目活动:需求分析、分析设计、编码实现、测试、项目管理。理论上,每种软件工程流程都会对应一个单独的计划,而且每个软件工程流程会定义自己的迭代周期和迭代次数。教师的重要职责之一就是识别和管理各个任务与知识结构的依赖关系,保证各个设计任务的顺利进行。此外,在考核方面重点放在过程考核,强调素质与能力,不再进行单独的课程考核,按照工作任务评估表对学生的工作过程进行评价,课程成绩计算按任务的难度工作量规模大小分配权重,进行最后总评,直至完成整个工作任务的实施。

4实践教学评价与结论

我院从2005年开始在计算机专业采用基于迭代化的增量软件开发方式开放数据结构的实验教学,通过实验对比方法,将3年制计算机专业学生分为实验组和对照组,从定性和定量两个方面科学地观察实践课程的教学效果。通过学生数据结构课程考试成绩的对比分析、问卷调查以及实践成果的对比分析,汇总情况如表1所示:

从上表可知,实验组学生在基础数据结构系统知识学习、分析问题和解决问题能力以及后期专业知识的学习方面均具有更好的效果。此外,后期的问卷调查结果也表明,实验班学生对课程的总体印象在优良以上的占83%,教师对“实施基于迭代增量的实践课程总体印象”表示“较好”以上的为81%。

目前,数据结构课程实验课程的设计和实施还存在着一定问题,如同一任务体系间的相互融合贯通还不够,在教学方法上的改革还不足等;将来还需要进一步改进迭代增量法在教学情境的实施应用,研究和开发更多实用性实践课程工作任务,发挥其在后期专业课程学习中的延伸效果,持续提高高职计算机学生的专业和工程应用设计能力。

参考文献:

[1] [美]沙赫查. 面向对象软件工程[M]. 黄林鹏,T小辉,伍建j,译. 北京:机械工业出版社,2009.

[2] 殷人昆. 数据结构(用面向对象方法与C++语言描述)[M]. 北京:机械工业出版社,2007.

[3] [美]B.S.布卢姆. 教育目标分类学[M]. 罗黎辉,译. 上海:华东师范大学出版社,1986.

[4] 刘韶涛,王宁生. 软件体系结构的迭代增量构建方法[J]. 计算机应用研究,2003(20).

[5] 罗伟,张翠英. 对高职院校实践教学中“关键能力”培养的探讨[J]. 职业教育研究,2008(3).

数据结构课程设计范文5

【关键词】数据结构;知识体系;教学设计

1 课程的地位与作用

《数据结构》是计算机科学与技术专业的核心专业基础课程,是计算机程序设计的重要理论和实践基础,是计算机理论与技术的重要基石。《数据结构》上承高级语言程序设计,下启算法分析与设计,是计算机科学与技术人才素质框架中的脊梁骨,对学生能力培养至关重要,向来是计算机本科教学的重中之重。调查表明已毕业的学生通过他们的工作实践认为《数据结构》是最有用的课程之一,这也从另一方面说明了该课程的重要性。

计算机科学与技术专业的培养目标之一是掌握计算机科学与技术的基本理论、计算机软/硬件基本知识及应用技术,《数据结构》在培养目标的实现中具有举足轻重的作用,是理解计算机科学与程序开发技术的关键课程。作为一门重要的专业必修课程,《数据结构》课程既是对以往课程的深入和扩展,也是为将来更加深入地学习其他专业课程打下基础。课程中所学习的排序问题的算法,以及基本的树、图等数据结构,是计算机科学的基本功。B+树等高级数据结构,也是数据库、操作系统、编译原理、计算机网络等后续课程的基础。《数据结构》是计算机专业考研的统考课程,也是很多大赛(“蓝桥杯”、ACM等)必涉及的知识。

《数据结构》与其它课程关系如图1所示。

图1 《数据结构》与其它课程关系

《数据结构》在培养目标中的作用如图2所示。

图2 《数据结构》在培养目标中的作用

2 课程的教学目标与主要内容

2.1 课程的教学目标

学习本课程后,应达到下列基本要求:

(1)理解数据结构的基本概念;

(2)熟练掌握线性表、栈、队列、树、图等常用数据结构的基本运算的实现及应用;

(3)熟练掌握排序和查找的常用算法及应用;

(4)能够对算法进行时间复杂度度、空间复杂度的分析;

(5)培养学生分析数据、组织数据的能力,能够根据实际问题来选择合适的数据结构,设计有效的算法。

2.2 教材与主要参考资料

教材

耿国华《数据结构(用C语言描述)》,高等教育出版社,2011年

教材选择的依据:

(1)该教材跟踪技术发展需要,体系科学,是“十一五”国家级规划教材。

(2)该教材理论的阐述由浅入深、通俗易懂。

(3)该教材理论结合实际,配有大量的例题、习题与实习题。

主要参考资料

[1]严蔚敏,吴伟民《数据结构(C语言版)》,清华大学出版社,2006年

[2]张铭,王腾蛟,赵海燕《数据结构与算法》,高等教育出版社,2008年

[3]朱战立《数据结构――使用C语言(第4版)》,电子工业出版社,2009年

[4]王晓东《数据结构(C语言版).》电子工业出版社,2007年

[5]西北大学数据结构精品课程网站

http//:/datastr

[6]北大数据结构与算法课程网站

http:///pkujpk/course/sjjg/

[7]洛阳理工学院数据结构精品课程网站

http//:/sjjg

[8]洛阳理工学院数据结构精品资源共享课程网站

http//:/ds

2.3 知识体系

《数据结构》知识体系可分为分为三大块,如图3所示。

图3 《数据结构》知识体系

数据结构课程的基本知识模块是以数据的逻辑结构为主线,顺序介绍线性结构(线性表、栈、队列、串、数组、广义表)、树形结构、图结构。在介绍每种数据结构时,再讨论其存储结构以及相关的算法。在介绍完基本的数据结构及其存储结构和相关的算法后,介绍了两种常用技术:查找和排序。

3 课程教学内容安排

3.1 课程重点、难点

重点:线性表、栈、队列、二叉树、图典型数据结构的逻辑结构、存储结构和操作的实现方法,各种典型的排序和查找算法思想。

难点:各种数据结构的操作实现和应用

第1章是对数据结构课程的认识,基本概念比较多,概念要讲清楚、准确,第一章要通过丰富的例子讲解如何分析算法时间复杂度,这是贯穿整门课程的内容,也是本课程的一个难点,第2章是整个课程的重要基础,要讲得十分详细,为后面的章节打下良好的基础,第3章的栈与递归的实现是本书的一个难点,要通过例子讲透,并且在第6章还要进一步地讲递归到非递归的转换。第四章内容较简单,而且学生在高级语言程序设计中学习过字符串,因此留给学生自学,也可以培养学生的自学能力。第五章数组和广义表一般讲解即可。第6章的二叉树要详细讲解,第7章的几个关于图的算法较难,要结合例子讲解,第8章中的难点是平衡二叉树的调整和B树,要通过例子把算法的思想讲清楚,使学生能实际操作。第9章要把各种排序的思想、特点讲清楚,特别是较难的希尔排序、快速排序、堆排序、基数排序一定要结合实例讲解。

3.2 课时分配

表1 总课时:72;理论授课:58,实验:14

4 课程实践环节

数据结构是与实践紧密结合的课程,学生学习的理论必须经过大量的实践才能更好的掌握,因此必须强化实践教学。数据结构实践分两部分:一部分是随课程进行的实验,另一部分是课程结束后为期一周的课程设计。通过合理、有效地设计上机题目,改进实验考核方式,调动学生的积极性,启发引导学生掌握基础理论并能创新应用,增强学生综合运用有关知识的能力。

实验内容包括六个实验项目,分别为:线性表的基本操作(2学时),栈的基本操作(2学时),队列的基本操作(2学时),二叉树的建立及遍历(2学时),图的遍历的实现(2学时),宿舍管理查询系统(4学时)。其中宿舍管理查询系统实验为三性实验。

课程设计是课程结束后进行的很重要的实践环节,本课程课程设计给出14个题目,这些题目都是综合性的,学生可任选一题,完成后要写出课程设计报告。通过课程设计,使学生进一步理解和掌握所学各种基本知识,培养学生综合运用所学的理论知识和方法独立分析和解决问题的能力;训练学生用系统的观点和软件开发一般规范进行软件开发,使学生具备软件工作者所应具备的科学的工作方法和作风。

学生完成实验后,不仅要求学生提交高质量的规范的实验报告,还要引导学生互相交流,开阔视野。好的实验作业要放到班级公共邮箱里和所有学生共享。

5 课程的建设情况

5.1 课程资源情况

该课程教学文件完备。通过多年的教学,积累了必要的一些辅助教学资料(包括教学参考书、参考课件、声像、影像等),并且使用效果良好。补充的学习资料有:

(1)教学网站:http:///sjjg/

http:///ds/

(2)搜集了大量探讨数据结构理论与算法、介绍学科前沿动态的中、英文学术论文和硕、博论文,对其分类整理后在课程教学网站上提供下载链接,以供学生深入研究、学习;

(3)自编《数据结构实验指导书》;

(4)多媒体电子教案的纸制版和网络版;

(5)数据结构与课程实验指导书的纸制版和网络版;

(6)自编的算法演示器;

(7)Flash课件和Flash算法演示;

(8)图书馆内,国外优秀的经典教材。

5.2 实验实习条件

所有实验在计算机系机房进行,机房现有的实验平台功能齐全,课程中所涉及的实验项目均可在平台上完成。目前课程实验大纲中所列的实验开出率达到100%,实验教学效果良好。

5.3 课程成果

该课程2010年被评为河南省级精品课程,2012河南省级精品资源课程。

6 教学设计

《数据结构》是一门理论与实践相结合的课程。由于理论的抽象性,学生难以建立起数据结构的相应算法概念,容易产生畏惧和茫然的情绪。因此教学中在积极引导学生、启发学生,激发学生学习的积极性。教学以课堂讲授为主,同时借助网络教学平台,拓展课堂讲授的相关知识,便于同学自主学习、巩固课堂所学内容。另外,组织独立习题课,针对学生作业中出现的典型问题进行深入探讨。

在教学中要贯彻“以理论学习为主线,以课程实验、课程设计为补充”的教学思想。

6.1 精心组织教学内容

分析学生的需求和现实,同时紧紧抓住教学目的,参考相关院校的教材和教学计划,取长补短,参考考研大纲、软考大纲,对课程的内容进行严格的筛选,删除一些较深且应用不是很广泛的内容,对于重点的内容要精讲、细讲,而对于有些较简单且与先修课程交叉的内容(如字符串与数组),就粗讲,甚至可以留给学生去自学。这样重点突出,简洁明了。在课程内容的安排上由浅入深,循序渐进。对每种数据结构都按三个层次来组织教学内容,并且把这三个层次的思想贯穿于数据结构教学的各个环节。第一个层次,基本概念、方法,这是最基本的内容,学生必须掌握,在学生很好地掌握了这个层次的内容后,可进入第二个层次,基本概念、知识的简单应用,这一层次是对基本概念、知识加深理解,这个层次学生必须达到。第三个层次就是基本概念、方法的深入应用,把所学的知识、方法串起来灵活运用。要达到这个层次,需经过大量的训练才行。

6.2 实现数据结构课程与其先修和后续课程的无缝衔接

程序设计语言(如C语言)是本课程的一门非常重要的先修课程,数据库原理、编译原理、操作系统是该课程的后续课程,这些课程不能各自为政,而要无缝衔接,教这些课程的老师要互相交流,这样在讲程序设计语言时可以有的放矢的把和数据结构联系紧密的内容预先告知学生,这样学生就会对相关知识印象深刻,到数据结构课中就很容易用的得心应手。在数据结构课中讲到各种后续课程中用到的数据结构时也告诉学生,并且在后续课程中用到相关数据结构时提醒学生这是这种数据结构在本课程中的应用。这样使学生的知识一脉相承,使学生在学习各门课程时把知识融会贯通。

6.3 精讲多练,加强实践环节,培养学生分析问题解决问题的能力

数据结构既有大量的理论又是实践性很强的课程,学生要很好地掌握这门课,必须要有一定的理论知识,又要经过大量的上机实践。因此,针对应用型本科的特点,在教学过程中,即注重理论,又重视实践,加大上机实践的力度。实践由与理论课同时进行的上机实验和理论课讲授完毕后的课程设计两部分组成。对所学的每一部分内容都要要求学生完成相应的实验习题。整个实践过程要结合教学进度与学生的实际情况,制定实践的内容。每部分的实验习题必须精心挑选,和上述三个层次对应,分为基础与验证型实验、设计与综合型实验,开发与创新型实验。既要把基本知识掌握好,又要会灵活运用。基础与验证型实验是基本的、较简单的题目,主要结合课堂理论教学内容展开,学生可以对在课堂上学到的基本算法进行验证;设计与综合型实验是具有挑战性的较难的新颖有趣的题目,让学生充分利用所学的理论知识进行相对较复杂的应用设计,培养学生综合能力;开发与创新型实验培养学生的创新意识,提高综合能力和创新实践能力。

6.4 多样化的教学方法

6.4.1 启发式教学

教师主要起引导的作用,激发学生的学习兴趣,发挥学生的学习积极性,与学生进行互动,鼓励学生对教学内容提出问题,师生共同讨论,提高教学和学习水平。鼓励学生多动脑子进行思考,在学习过程中不拘于以往的解法,对同一个问题可以提出不同的解法,深化对问题的理解。另外还要强调学生自己学会对知识的总结、梳理、推演和挖掘。总结是教学中一个非常重要的环节,不可忽视。通过对所学内容的总结、梳理、推演和挖掘,理清内容的内在联系,使知识条理化、系统化,加强对知识的理解和掌握,培养学生的归纳总结能力和思维创造能力,对所学内容提炼出精华的东西。(下转第260页)

(上接第167页)6.4.2 对比式教学

对同一问题,引导学生从不同的角度去思考,找出多种方法来解决。比如,在解决约瑟夫环问题时,可以采用循环链表作存储结构,或采用线性表的顺序存储结构,也可以采用数组作存储结构。这种对同一问题寻找不同算法实现的教学方式,有效地开阔了学生的思路,同时通过对不同算法的比较,加深了学生对算法的理解和掌握。

6.4.3案例教学

通过实例引入知识点。比如讲最小生成树可以通过城市间建立通信联络网为例引入最小生成树及其求解算法,再比如讲最短路径可以通过去旅游选择最短路径为例引入最短路径及其求解方法。

6.5 把课程与考研、软考、相关竞赛有机的结合起来

数据结构是计算机专业考研和软考的必考科目,在教学过程中有意识地把考研和软考引入教学中,使学生学完本课程后能够从容应对考研和软考中的数据结构题目。组织和鼓励学生参加程序员,高级程序员证书考试,辅导学生参加各种编程竞赛比如ACM大赛。

7 考核方法

要加强平时的学习过程管理,不定时地进行一些随堂的小测试,课堂提问等。考试以学生完成日常作业和实验环节为必要条件,期末考试采用笔试方式。成绩评定由三部分组成:期末考试占总成绩的60%,平时成绩占总成绩的20%,实验占总成绩的20%,综合考核学生该科成绩。

8 结语

《数据结构》对计算机科学与技术专业的学生来说是非常重要的课程,组织好教学,使学生通过该课程的教学,很好地掌握数据结构的相关知识,为今后的学习奠定良好的基础是非常重要的。

【参考文献】

数据结构课程设计范文6

关键词:课程教学改革;课程群;民办独立高校;数据结构

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2016)46-0073-02

高等教育是培养高级专门人才的主要社会活动[1]。随着社会的不断发展,承担高等教育工作的公办高校已不能满足日益增长的就学需求;作为补充,民办独立高校为社会提供了高质量本科层次的大众化高等教育服务[2]。民办独立高校办学灵活,直面社会和职场,以培养高素质应用型人才为目标,因此其教育模式与传统公办研究型高校有所不同;这一差异也直接体现在其教学活动中。

课程是教学活动的组织方式,是实现教学目标的基本途径,因此课程建设直接关系到人才培养的质量,是高等教育改革的核心[3]。本世纪90年代以来,作为高等教育改革的热点问题之一,高校课程建设中的重要一环,课程群建设逐渐引起人们的重视。

课程群(以下简称课群)是某一学科内的诸多课程的集合,是“从属于某个学科,相互间性质相关或相近,如相承、渗透、互补等课程的集合体”[4]。显然,课程是课群的要素;课程教学改革则是从微观角度,以某一课程为对象,以提高教学效果为目标,对课程的实施手段和教学方法进行改进。

本文以南京航空航天大学金城学院(以下简称南航金城学院)信息工程系“数据结构”课程教学改革为例,探讨在“数据结构和算法”课群建设中“数据结构”课程教学改革方案的实施。在不改动课程原有学时的前提下,通过调整该门课程的具体教学内容和方法、考核方案,达到优化课程知识体系,提高教学质量的目的;同时满足民办独立高校因材施教、分层次、多渠道的人才培养模式的要求。

一、数据结构和算法课群的建立

“数据结构和算法”课群是以南航金城学院信息工程系计算机科学与技术专业的人才培养计划为指导,包含“离散数学”、“数据结构”、“数据结构课程设计”以及“算法设计与分析”四门课程;具体课群体系结构如图1所示。

其中“数据结构”是计算机科学与技术专业的专业基础课程;是“算法设计与分析”的重要先修课程。其教学目标是通过分析数据的结构特性,为具体应用(例如,建立用户广告服务系统)涉及的数据选择适当的逻辑结构、存储结构及其相应的解题算法;同时涉及算法的时间、空间效率分析技术。整个课程同时也是一个复杂程序设计的训练过程;要求学生编写的程序结构清楚,正确易读,符合软件工程的规范。而这一要求也直接体现在“数据结构课程设计”的实践教学过程中。“算法设计与分析”是计算机科学与软件工程中的核心研究领域之一。许多实际问题的求解都依赖于有效算法的设计与实现:如用户广告服务系统等一旦深入下去就能够被描述成一组以网络流为模型的问题[5]。“离散数学”是研究离散量的结构及其相互关系的数学类课程。“离散数学”在计算机科学与技术领域有着广泛的应用,同时也是“数据结构”和“算法设计与分析”的重要先修课程。

在课群建设中,首先处理数据结构和算法之间的关系,离散数学与数据结构、算法之间的关系;其次以数据结构为主线,结合算法设计技术对如何选择数据结构的教学内容进行分析,灵活处理离散数学中的基础知识,突出算法设计的中心思想,强化实践教学环节。整个课群建设遵循:“单门课程建设课群建设”模式;以单门课程教学改革为点,课群建设为线,专业建设为面。“点、线、面”逐步推进,从而达到优化课程知识体系,提高教学质量,满足民办独立高校高素质应用型人才培养的目标。

二、数据结构课程改革方案

1.理论教学改革。“数据结构”课程的理论教学内容主要包括:线性结构、非线性结构、查找和排序三大部分。其中前两部涉及线性表、栈和队列、字符串、数组和广义表、树和二叉树、图等多种基本数据结构。在实际教学中,任课教师多遵循“逻辑结构存储结构相关操作”的主线,对所涉及的知识点进行逐个讲解。查找和排序部分,则罗列出多种不同的解决计算机查找和排列数据的算法,讲解时需要比较不同算法在时间和空间上的性能差异。针对“数据结构和算法”课群建设的要求,“数据结构”课程的理论教学内容和教学方式做了如下调整:

(1)以实际案例为主线,将各个知识点串联起来。比如,在讲授图的应用时,最短路径算法是重点也是难点;不仅因为知识点本身在原理的理解上较为困难,同时学生也不太能够接触到该算法的实际应用。因此在实际教学过程中,以“游戏地图的查找”为例说明该算法,并强调图的结构特性(逻辑结构、存储结构以及涉及的基本操作);这实际上是一种案例分析方法。

(2)强调课程间的知识点的衔接。例如,讲解最短路径算法时,将案例(交通咨询系统)的实现,放置在“数据结构课程设计”的实践环节中;该算法的正确性证明则在“算法设计与分析”课程中给予解释。又如,讲解快速排序和简单交换排序时,重点让学生能够区分不同算法的执行步骤;着重强调程序本身的特性,操作对象的特性等涉及数据结构的知识点。而算法时间性能的比较则放在“算法设计与分析”课程中来解决。此外,“离散数学”中图论部分的知识点教学也需要和“数据结构”中图部分的知识点教学内容相衔接。

(3)在课程考核上增加平时成绩,提高理论知识点的实际掌握程度的考核比重;避免一次考试成绩定成败。将最终的考核总评成绩分为三部分:平时成绩(课后练习成绩、课堂回答问题成绩、出勤率等综合考评成绩)占总成绩的20%;上机实验环节评分(线性结构、非线性结构、查找和排序)占30%;结课考试(笔试)占50%。总体评分标准中,理论知识点的实际掌握程度通过实践环节来进行考核;对不同学生进行差异化教学(能力强、对知识点理解深入的学生可以选择难度较大的案例来实现)。事实证明,在2015年秋季的实际教学活动中,取得了较好的教学效果,很多同学的学习积极性被调动起来了;课堂回答问题的热情较高,同时课后提问的次数也明显增多。

2.实践教学改革。与“数据结构”课程密切相关的实践教学环节主要分两部分:一是理论课程中的实验上机环节;二是“数据结构课程设计”环节。将“数据结构”理论教学内容所涉及的应用案例分别安排在两个实践教学环节中,要求学生编程实现。同时,另外再增设多个较为复杂的典型案例实现。

在实践教学内容设置上,不但系统地阐述了“数据结构”的基本原理,同时也给出了一些的典型案例。每个案例的叙述完全按照解决实际问题的思路进行,这对学生如何面对实际工程项目问题有着很好的启迪作用。

三、结论

“数据结构”这门课程的开设如何满足民办独立高校的人才培养目标,如何满足课群建设的实际要求,是一个值得不断探索的课题。本文从南航金城学院信息工程系计算机科学与技术专业核心课程“数据结构”的课程教学改革出发,从课程的理论教学和实践教学两方面进行探讨,提出了相应的改革思路。在2015年秋季的实际教学过程中,取得了较为明显的效果。显然,学生不但获得了扎实的理论基础,同时也掌握了一定的专业技能:以数据结构知识为基础,分析案例、解决实际问题的能力。

参考文献:

[1]杨树勋.现代高等教育学[M].北京:化学工业出版社,1999:97-98.

[2]齐凤和.民办独立学院的四大困惑及解决途径[J].现代教育科学:高教研究,2005,(6):53-56.

[3]黄伟娣.课程与课程建设[J].杭州师范学院学报,1994,(5):116-120.