_课程设计指导书_数据结构与算法_哈工大
- 格式:pdf
- 大小:1.03 MB
- 文档页数:66
计算机科学与工程学院集中性实践教学计划书( 2014-2015 学年第一学期)课程名称:数据结构与算法课程设计专业:计算机科学与技术软件工程、网络工程班级:计算机科学与技术131-6软件工程131-4网络工程131-4课程负责人:李锡祚指导教师分配情况:专业指导教师计算机科学与技术孟佳娜(1班) 张恒博(2班) 王巍(3班) 刘爽(4班) 李威(5班) 李笑牛(6班)软件工程王玲芬(1班) 赵丹丹(2班) 王存睿(3班) 宋海玉(4班) 网络工程王晓强(1班) 郭海(2班) 于艳莉(3班) 王波(4班)教学起止周:第17 至19 教学周一、教学目的:使学生能够根据数据对象的特性,合理的组织数据并能综合运用数据结构与算法基本知识和程序设计基本知识解决实际问题,培养基本的、良好的程序设计技能。
二、主要阶段、内容、时间及地点安排(以天为单位计):1、阶段与内容第1阶段(17周,校企合作指导)在为期一周校企合作模式的训练中,让学生对数据结构有一定的掌握,熟悉数据结构的常用算法并灵活运用,熟练使用开发工具,简单了解开发流程和团队协作的开发模式,并充分认识到数据结构在以后实际的项目开发中的重要作用。
(具体流程见企业实训计划书)第2阶段:(18-19周,校内教师指导)通过为期二周的课程设计集中训练, 使学生能够根据数据对象的特性,合理的组织数据并能综合运用数据结构与算法基本知识和程序设计基本知识解决实际问题。
1. 指导教师布置设计任务并解析有关题目的设计指标和任务的具体内容,学生选择题目,明确问题描述和要求,查阅资料(要求:各班长或学习委员将本班的选题表交给辅导教师,一人一题,每道题的选择人数原则上不能超过3人,第一天课程设计结束后,每名学生都要确定题目)(1天)。
2. 明确题目要求、确定数据结构、设计算法,编写程序、调试程序、测试程序(7天)(要求:准备足够的测试数据,对软件进行测试与调试。
)。
3. 验收与答辩(上机演示,回答教师提问)(1天);4. 撰写课程设计报告(1天)。
数据结构课程设计指导书迷宫求解1.设计目的仅仅认识到栈是一种特殊的线性表是远远不够的,本次实习的目的在于使学生深入了解栈的特征,以便在实际问题背景下灵活运用它,同时还将巩固这种数据结构的构造方法。
2、问题描述迷宫问题是取自心理学的一个古典实验。
在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。
盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。
对同一只老鼠重复进行上述实验,一直到老鼠从入口走到出口,而不走错一步。
老鼠经过多次试验最终学会走通迷宫的路线。
设计一个计算机程序对任意设定的矩形迷宫如下图A所示,求出一条从入口到出口的通路,或得出没有通路的结论。
图A3.设计要求要求设计程序输出如下:(1) 建立一个大小为m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏幕上显示出来;(2)找出一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。
(3)用一种标志(如数字8)在迷宫中标出该条通路;(4)在屏幕上输出迷宫和通路;(5)上述功能可用菜单选择。
顺序栈的类型定义如下:# define StackSize 100typedef char datatype;typedef struct {datatype data[stacksize]; int top; }seqstack; seqstack *S;设S是SeqStack类型的指针变量。
若栈底位置在向量的低端,即s–>data[0]是栈底元素,那么栈顶指针s–>top是正向增加的,即进栈时需将s–>top加1,退栈时需将s–>top 减1。
因此,s–>top<0表示空栈,s–>top =stacksize-1表示栈满。
当栈满时再做进栈运算必定产生空间溢出,简称“上溢”;当栈空时再做退栈运算也将产生溢出,简称“下溢”。
数据结构课程设计指导书2012.12一、实验目的通过训练,实现以下三方面目标:1.使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
2.使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
3.使学生初步掌握查阅参考资料的方法,提高学生进行程序设计等综合的应用能力。
二、涉及的基本理论数据结构中关于“线性表、栈和队列、树和二叉树、图、查找和排序”等基本理论。
三、基本要求1.巩固和加深对数据结构基本知识的理解,提高综合运用课程知识的能力。
2.培养学生自学参考书籍,查阅手册、图表和文献资料的能力。
3.通过训练,使学生初步掌握简单软件的分析方法和设计方法。
4.了解与课程有关的工程技术规范,能正确解释和分析实验结果。
5.题目具有足够的工作量。
6. 课程中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。
7. 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
8.趣味题除外,按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;其中包括:a)需求分析:在该部分中叙述,每个模块的功能要求b)概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。
c)详细设计各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)源程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。
课程设计总结:(保存在word文档中)总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容;9. 每组实现的结果必须进行检查和演示;程序源代码和程序的说明文件必须上交,作为考核内容的一部分;(上交时每人交一份,文件夹的取名规则为:“学号姓名”,如“200413498 高魁”。
计算机科学与技术专业数据结构课程设计指导书数据结构课程教学组2009.8.2【课程设计目的】“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。
在我国,”数据结构与算法”已经作为理工科非计算机专业必修的信息技术基础课程之一。
世界上许多科技人员对学习、研究数据结构和算法都非常重视,对于从事计算机科学及其应用的科技工作者来说,数据结构与算法更是必须透彻地掌握的重要基础。
学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。
课程设计是加强学生实践能力的一个强有力手段。
课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编程大型作业的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
【课程设计要求】学生必须仔细阅读《数据结构》课程设计任务书与本指导书,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时向教师汇报。
课程设计按照教学要求需要两周时间完成,由于安排的课内机时有限而且数据结构课程本身没有课内上机学时, 为保证完成课程设计任务,每位同学必须做好充分准备。
数据结构课程是多门重要专业课的先行课程,难度较大,需要较好的程序设计和调试能力。
如果学生能够按照要求,从时间和精力上保证完全的投入,相信能够有很大的收获。
具体要求如下:1.诚实代码要求:每个学生要独立完成设计任务,严禁抄袭现象。
《算法与数据结构》实验指导书.目录第一部分算法与数据结构课程实验概述 (1)一.实验目的 (1)二.实验要求 (1)2.1实验步骤 (1)2.2实验报告格式 (2)第二部分上机实验内容 (3)实验一迷宫问题 (3)实验二锦标赛问题 (4)实验三 Kruskal算法的设计 (6)实验四哈夫曼编码 (7)实验五树和二叉树 (8)实验六查找和排序 (10)附:实验(设计)报告封面 (11)附:实验(设计)报告参考格式 (11)其中实验一、实验二选择其中一题完成,实验三、实验四选择其中一题完成。
第一部分算法与数据结构课程实验概述一.实验目的《算法与数据结构》是计算机专业的主干课程和必修课程之一,其目的是让大家学习、分析和研究数据对象特征,掌握数据组织方法和计算机的表示方法,以便选择合适的数据逻辑结构和存储结构,设计相应的运算操作,把现实世界中的问题转化为计算机内部的表示与处理的方法,要求掌握算法的时间、空间复杂度分析基本技术,培养良好的程序设计风格,掌握进行复杂程序设计的技能。
在计算机科学领域,尤其是在系统软件和应用软件的设计和应用中要用到各种数据结构,因此,掌握数据结构对提高软件设计和程序编制水平有很大的帮助。
二.实验要求2.1实验步骤设计步骤的规范不但可以培养学生科学的工作方法和作风,而且还能有效地减少错误,提高工作效率。
因此必须严格执行良好的实验步骤规范(包括上机操作规范)。
本课程实验的基本步骤是:2.1.1问题分析充分地分析和理解问题本身,明确问题要求做什么。
对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。
例如;输入、输出数据的类型、值的范围以及形式等。
同时为调试程序准备好测试数据,包含合法的输入数据和非法形式输入的数据。
2.1.2设计和编码设计即是对问题描述中涉及的操作对象定义相应的数据类型,定义主程序模块和各抽象数据类型;定义相应的存储结构并写出各过程和函数的伪码算法。
哈工大854数据结构大纲
哈工大854数据结构课程的大纲主要包括以下内容:
1. 数据结构基础概念,介绍数据结构的基本概念、术语和基本
操作,包括数据的存储方式、数据的逻辑结构和物理结构等。
2. 线性表,介绍线性表的定义、基本操作和实现方式,包括顺
序表、链表和线性表的应用。
3. 栈和队列,介绍栈和队列的定义、基本操作和实现方式,包
括顺序栈、链式栈、顺序队列、链式队列和栈和队列的应用。
4. 树和二叉树,介绍树和二叉树的定义、基本操作和实现方式,包括二叉树的遍历、线索二叉树、树和二叉树的应用。
5. 图,介绍图的定义、基本操作和实现方式,包括图的遍历、
最小生成树、最短路径和图的应用。
6. 查找,介绍查找的基本概念和常用的查找算法,包括顺序查找、二分查找、哈希查找和查找的应用。
7. 排序,介绍排序的基本概念和常用的排序算法,包括插入排序、选择排序、冒泡排序、快速排序、归并排序和排序的应用。
8. 动态存储管理,介绍动态存储管理的基本概念和常用的存储
管理算法,包括分配与回收、内存碎片整理和动态存储管理的应用。
9. 高级数据结构,介绍高级数据结构的概念和应用,包括平衡
二叉树、B树、红黑树、哈希表和高级数据结构的应用。
以上是哈工大854数据结构课程大纲的主要内容。
通过学习这
些内容,学生可以掌握数据结构的基本概念、常用数据结构的实现
方式和操作方法,以及数据结构在实际问题中的应用。
数据结构与算法综合设计课程设计指导书合肥工业大学计算机与信息学院2014年6月一、概述课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。
通常,课程设计中的问题比平时的习题复杂的多,也更接近实际。
课程设计着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
平时的习题较偏重于如何编写功能单一的“小”算法,局限于一个或两个知识点,而课程设计题是软件设计的综合训练,包括问题分析,总体结构设计,用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
此外,还有很重要的一点是:计算机是比任何教师更严厉的检查者。
为达到上述目的,使学生更好地掌握程序设计的基本方法和C++语言的应用,本课程安排了课程设计环节,提供了各类题目供学生选择。
每个设计题采取了统一的格式,由问题描述、基本要求、测试数据、实现提示和选做内容等五个部分组成。
问题描述旨在为学生建立问题提出的背景,指明问题“是什么”。
基本要求则对问题进一步求精,划出问题的边界,指出具体的参量或前提条件,并规定该题的最低限度要求。
测试数据部分旨在为检查学生上机作业提供方便。
在实现提示部分,对实现中的难点及其解法思路等问题作了简要提示,提示的实现方法未必是最好的,学生不应拘泥与此,而应努力设计和开发更好的方法和结构。
选做部分向那些尚有余力的读者提出了更高的要求,同时也能开拓其它读者的思路,在完成基本要求时就力求避免就事论事的不良思想方法,尽可能寻求具有普遍意义的解法,使得程序结构合理,容易修改、扩充和重用。
二、总体要求1.系统分析与系统设计“分析就是在采取行动之前,对问题的研究”(Demarco,1978)。
系统分析在软件开发过程中是非常重要的,其任务就是通过对问题本身的研究,产生一个系统需要做什么的规范的、一致的和可行的需求说明。
《数据结构与算法》实验指导书基本要求1.学生必须按时到实验室做实验,不得迟到早退,未经老师批准不得中途离开。
凡迟到者,应给予批评并作适当扣分。
实验课迟到20分钟以上及无故缺席者视为旷课,旷课者不予补做实验,本次实验以零分计。
学生因病或特殊情况不能按时到实验室做实验时,应办理正常请假手续。
请病假必须有医生签字的病假条,请事假必须有班主任签字的事假条。
不符合请假手续的,以旷课论处。
请假的学生由指导教师安排补做实验。
对于未做实验数达三分之一以上(含三分之一)的学生,实验课程按0分计。
2.学生在每次实验课之前,应仔细阅读实验教材,查阅相关的资料,写出预习报告。
预习报告的具体容包括:实验容、实验目的、实验原理图、实验步骤、实验数据记录表格等。
实验课前由任课教师检查预习报告,未写预习报告者不予做实验。
3.做实验前,了解设备的原理和正确使用方法。
在没有弄懂仪器设备的使用方法前,不得贸然使用,否则因使用不当造成仪器设备损坏的,根据民族学院《仪器设备损坏丢失处理暂行办法》规定进行处理。
实验室设备在实验过程中不准任意搬动和调换,非本次实验所用仪器设备,未经指导教师允许不得动用。
4.要求每位学生在实验过程中,要具有严谨的学习态度、认真、踏实、一丝不苟的科学作风。
实验过程中学生按照预习的容进行实验,且重视实验的调试过程,学会如何根据实验现象判断问题所在。
坚持每次实验都要亲自动手,不可“坐车”,每个实验每个学生都要独立完成,不允许抄袭,无特殊原因,中途不得退出实验,否则本次实验无效。
5.实验中若接线、改接、拆线都必须在切断电源的情况下进行,线路连接完毕再送电。
实验中,特别是设备刚投入运行时,要随时注意仪器设备的运行情况,如发现有过热、异味、冒烟、火花等,应立即断电,并请指导老师检查、处理。
6.实验过程中,如出现事故,就马上拉开电源开关,然后找指导教师和实验技术人员,如实反映事故情况,并分析原因和处理事故。
如有损坏仪表和设备时,应马上提出,按有关规定处理。
《数据结构与算法》实验指导书.《数据结构与算法》实验指导书实验1 顺序表一、实验目的(1)掌握顺序表的逻辑结构、存储结构及描述方式。
(2)掌握顺序表的定位、插入、删除等操作。
二、实验要求(1)调试程序要记录调试过程中出现的问题及解决办法;(2)给出每个问题的算法或画出流程图;(3)编写程序要规范、正确,上机调试过程和结果要有记录,并注意调试程序集成环境的掌握及应用,不断积累编程及调试经验;(4)做完实验后给出本实验的实验报告。
三、实验设备、环境奔腾以上计算机,装有Turbo C 2.0或Visual C++软件四、实验步骤及内容实验步骤:1.根据题目,编写程序。
2.上机调试通过。
3.按照金陵科技学院实验报告格式,撰写各实验报告。
实验内容:(1)编写一个函数print_all_data,该函数的作用是逐个输出顺序表中所有数据元素的值。
编写主函数,从键盘输入顺序表,调用函数print_all_data,测试结果。
(2)编写顺序表定位操作函数locata,该函数的作用是在顺序表中查找是否存在数据元素的值与变量x的值相等。
如果存在满足条件的数据元素,则返回顺序表中和x值相等的第1个数据元素在表中的下标;如果不存在,则返回-1。
编写主函数,从键盘输入顺序表,以及变量x的值,调用函数locate,测试结果。
(3)编写一个函数insert,该函数的作用是在递增有序的顺序表中插入一个新结点x,要求保持顺序表的有序性,输出插入前后顺序表状态。
编写主函数,从键盘输入顺序表以及变量x的值,调用函数insert,测试结果。
(4)编写一个函数delete,该函数的作用是删除顺序表中所有等于X的数据元素。
若顺序表中没有满足条件的数据元素,则输出合适的信息。
若有满足条件的数据元素,则输出删除前后顺序表状态。
编写主函数,从键盘输入顺序表以及变量x的值,调用函数delete,测试结果。
五、讨论、思考题1、如何在排列有序的顺序表中插入新元素,而保证顺序表的有序性?2、如何在排列有序的顺序表中删除某元素,而保证顺序表的有序性?实验2 单链表一、实验目的(1)掌握单链表的逻辑结构、存储结构及描述方式。
数据结构与算法课程设计指导书数据结构与算法课程设计指导书李治军 张岩 李秀坤编哈尔滨工业大学计算机学院2005年7月前 言数据结构与算法是计算机及相关专业的一门专业基础课程,该课程的学习为计算机专业许多其它课程的学习奠定了技术基础,尤其是对其它软件系列课程更是不可或缺。
那么如何深刻的认识和掌握这门课程就成为了一个很重要的问题,由于课程的实践性很强,许多内容如果只进行单纯的课堂讲授是根本不能够深刻认识的。
比如线性表多种存储结构的对比分析,如不进行实际的上机练习就不能有直观、形象的认识,学习就只能变成死记硬背了。
所以实践是数据结构与算法课程的一个重要环节,这一环节能否处理好直接影响着课程教学的成败。
目前,数据结构与算法课程的实践环节主要包含两个部分:实验和课程设计。
其中实验的主要目的是为了进一步加深和巩固对课堂内容的认识,所以实验内容一般都集中在基本数据结构及其基本算法上。
而课程设计则不同,课程设计都安排在课程讲授完毕之后,是对所学内容进行的综合训练,培养的是学生应用所学知识来解决问题的综合能力。
另外,课程设计的授课方式存在特殊性,一般不采用集中讲授的方式,而是采用单独指导、单独答疑的方式,不易于完成教学过程的控制。
为此,特编写该指导书以更好的完成课程设计的指导工作:帮助学生进行选题;辅导学生的课程设计工作;规范课程设计报告的撰写等等。
目 录前 言第1章数据结构与算法课程设计概述 (1)1.1数据结构与算法课程设计的目的及意义 (1)1.2数据结构与算法课程设计的教学模式 (2)1.2.1数据结构与算法课程设计的特点分析 (2)1.2.2面向问题求解的教学模式 (3)1.3数据结构与算法课程设计的教学手段 (4)第2章数据结构与算法课程设计内容 (5)2.1数据结构与算法课程设计的过程 (5)2.1.1设计选题 (5)2.1.2题目分析 (5)2.1.3系统设计 (6)2.1.4系统实现 (7)2.1.5结果分析 (8)2.1.6报告撰写 (8)2.2数据结构与算法课程设计报告与撰写规范 (8)2.2.1数据结构与算法课程设计报告的内容规范 (8)2.2.2数据结构与算法课程设计报告的格式规范 (9)2.3数据结构与算法课程设计的考核 (10)第3章数据结构与算法课程设计范例分析 (12)3.1范例分析1——传感器网络的单机模拟与分析 (12)3.1.1题目分析 (12)3.1.2概要设计 (12)3.1.3数据结构设计 (12)3.1.4算法设计 (12)3.1.5物理实现及结果分析 (12)3.2范例分析2——Gossip模型的分析 (13)3.2.1题目分析 (13)3.2.2概要设计 (13)3.2.3数据结构设计 (13)3.2.4算法设计 (13)3.2.5物理实现及结果分析 (13)3.2范例分析3——应用遗传算法解决函数极值问题 (13)3.3.1题目分析 (14)3.3.2概要设计 (14)3.3.3数据结构设计 (14)3.3.4算法设计 (14)3.3.5物理实现及结果分析 (14)第4章数据结构与算法课程设计题目汇编 (15)附录1 课程设计任务书 (48)附录2 课程设计中期检查结果表 (49)附录4 课程设计报告样例 (50)参考文献 (62)数据结构与算法课程设计指导书第1章数据结构与算法课程设计概述课程设计是课堂理论教学的延伸和补充。
作为一门独立的课程,它应该完成如下基本目标:应能够完成理论与实践的结合,应能够锻炼学生的设计创新能力、问题分析能力和解决能力。
数据结构与算法课程设计是在数据结构与算法课程结束时开设的一门独立课程,注重学生综合能力的培养,是数据结构与算法课程体系中必不可少的、且非常重要的一个环节。
通过对实际问题的分析和解决,使学生学会如何灵活的应用所学知识解决实际问题,为后续工作,尤其是从事软件工作打下了实践基础;而更有一些问题是较为复杂的,可能是触及计算机的前沿问题,可能是和现实生产紧密相关的,也可能是需要数学建模以及模型的计算机模拟实现能力的理论型问题,这些问题的解决势必会对今后的学习和研究奠定了基础,激发了探索热情。
为了更好的完成课程设计这一环节,特在本章阐述数据结构与算法课程设计的基本目的和基本的教学模式、教学手段,希望能够帮助需要进行课程设计的学生形成一个完整的认识和清晰的定位。
1.1数据结构与算法课程设计的目的及意义数据结构与算法课程是计算机科学与技术各专业以及相关转业的一门专业基础课程,同时也是计算机科学与技术各专业的课程体系中的核心课程之一,它在计算机科学与技术的课程体系,特别是软件系列课程体系中处于承上启下、联系左右的中心地位。
大量的实践表明是否学好数据结构与算法课程对能否学好计算机本科课程有着相当重要的作用,同时也对后续的工作和研究有着深远的影响。
现今,各大学在该课程的内容安排和教材内容上,都主要集中在如下三个基本方面:(1)基本数据结构的阐述和分析;(2)基本数据结构的应用;(3)典型算法的适当渗透。
在这些内容的学习过程中,必须辅以大量的课程实践。
所以通常的数据结构与算法的课程教学中都有大量的课程实验作为辅助。
但是,从计算机科学与技术的知识体系可以看出,上述基本知识的学习并不是数据结构与算法课程的最终目标,只是为到达最终目标打下的基础,而学习该课程更深层次的目标应该是:能够针对实际问题来选择、扩展甚至是设计全新的数据结构,然后设计相应的存储结构并加以实现,从而最终完成问题的求解。
可以看出,这一过程是一个对所学知识融会贯通的过程,只通过课程实验是不能完成的,而在课程学完之后的课程设计就为完成这一需求而设定的。
因此数据结构与算法课程设计就应能够达到如下基本目标:(1)训练学生掌握数据结构与算法的基本设计方法,具备独立的分析能力和设计能力;(2)培养学生应用数据结构基本知识来分析问题、解决问题的综合能力;(3)帮助学生建立计算机问题求解的全局意识,主要是通过认识数据结构在问题求解中的地位来完成全局认识的建立(这一全局认识如图1-1所示);(4)训练学生从系统的、规范的观点来完成计算机问题的分析、设计、编码及测试优化等;(5)培养学生养成计算机科学工作者所应具备的严谨工作作风,软件工作者所应具备的系统化工作方法以及年轻学者所应具备的勇于探索和大胆创新的科学精神。
图1-1 数据结构在问题求解中的地位1.2数据结构与算法课程设计的教学模式任何事物都是一般性和特殊性的统一,数据结构与算法课程设计也是一样的。
和许多其它课程的课程设计一样,它有着课程设计课程的共性,也有其自身的特性。
上面阐述的数据结构与算法课程设计基本目标,是符合一般的课程设计规律的。
但数据结构与算法课程具有自身的区别于其它课程的地方,再加上计算机专业的特点,这就决定了数据结构与算法课程设计在其进行过程中需要建立相应的特殊性来适应课程的需要,这一特殊性尤其显著的体现在该课程的教学模式上。
1.2.1数据结构与算法课程设计的特点分析经过和其它课程的课程设计相对比,本文认为数据结构与算法课程设计主要具有如下特殊性:(一)不具有明显的整体性这是由数据结构与算法课程本身的特点决定的。
由于数据结构与算法课程的核心内容主要集中各种数据结构的认识上,虽然各种数据结构之间总是存在许多内在的联系,但总的来说还是自称体系、较为独立的。
就这一点而言,就和其它许多课程存在不同,从而也就使得数据结构与算法课程设计具有相应的特点。
比如像计算机组成原理的课程设计就可以做一个完整的简化计算机硬件系统(包括的简化的存储器、控制器、运算器等部件)以完成课程内容的全面训练,并建立整体认识。
而像机械原理的课程设计内容就可以集中在一个简单机械系统的设计上,即使是一个简单的机械系统,大多数也都能完成对机械原理各部分内容的综合训练。
而对于数据结构与算法课程设计,几乎不可能构造一个题目能够使所有的数据结构都参与其中。
实际上这样做也是毫无意义的,因为数据结构本身就是在不断扩展的,在学习、掌握基本数据结构的基础上能够对知识加以扩展并灵活的解决实际问题才是真正重要的。
所以,在数据结构与算法课程设计中应强调以问题求解能力的培养为中心。
(二)课程内容具有很强的可伸缩性由数据结构课程的历史以及当今的发展现状来看,数据结构与算法的内容发展是极其迅速的,不断出现新的数据结构,不断涌现新的算法,而且针对不同的问题,数据结构及算法可以做出非常灵活的调整。
在这一点上它和许多其它课程不同,如就操作系统而言,可能会不断出现各种各样的调度算法,但都集中在进程管理中,并总归结于资源管理这一基本框架下,只要冯⋅诺伊曼体系结构不变,操作系统的资源管理框架就不会改变。
而数据结构就不同,如就树结构而言,二元树虽然在概念上较为规整,但在实际问题中,大多数采用的结构都是树结构的变形,如B-树以及其它新型变形等,似乎两者都可成为教学的重点。
正是因为这一可收缩性,培养针对问题的数据结构设计能力才是重要的。
(三)具有极其广泛的渗透性在计算机问题中,也包括许多其它行业的问题,如经济领域问题,只要涉及到对数据的组织与处理,都能或多或少的找到数据结构发挥用武之地的地方。
所以培养依托数据结构完成各类问题求解的嗅觉是必要的。
总的来说,基于数据结构与算法课程的特点,只有建立适合其特点的数据结构与算法课程设计教学模式才能更好的完成教学。
1.2.2面向问题求解的教学模式基于上面的分析,本文提出一种面向问题求解的课程设计教学模式,如图1-2所示。
图1-2 面向问题求解的数据结构与算法课程设计教学模式(一)问题可以具有及其广泛的来源数据结构与算法课程设计中的问题可以来自各个领域,但考虑到授课的对象都是计算机专业的学生,所以其来源主要集中在计算机及相关领域。
主要包括如下基本方面:(1)基本数据结构在解决实际问题中的应用;(2)基本的算法策略在解决实际问题的应用;(3)新兴数据结构的相关问题;(4)新兴算法的相关问题及实践;(5)经典问题的求解及经典算法的实践和分析研究;(6)典型系统的计算机模拟;(7)须自行设计数据结构和算法来解决的实际问题等等。
(二)问题的描述和问题定义在问题的描述上,侧重于用半自然语言进行描述。
完全的形式化描述将减少问题分析能力的培养力度,完全的自然语言描述有包含太少的启发信息。
一般要求问题的描述必须清晰的说明问题的含义和目标,并适当就采用的数据结构给出启发。
但也可以设计一些题目故意将问题的目标隐去,加大学生问题定义能力的培养。
(三)问题的迭代性问题求解一般不是一蹴而就的,一开始设计(选取)的数据结构与算法往往存在这样或那样的缺点。
建立逐步求精、多次迭代的问题求解思维是必要的。
为此需在学生课程设计过程中鼓励学生对其解决方案进行理论分析和实验分析并大胆提出优化方案,鼓励积极主动的创新意识。