以下为《《数据结构与算法》课程教学大纲》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
《数据结构与算法》课程教学大纲
课程代码:SS1005
学 分:4
学 时:72(理论学时:36,实验学时:36)
先修课程:面向过程程序设计(SS1030) 或 Linux环境C程序设计(SK1001) 或 C语言程序设计(EI1004) 或 C语言程序设计I(CC1004) 或 C++面向对象编程(CC1002) 或 C++语言(GG1001) 或 c语言程序设计 I(NN1008) 或 C程序设计基础(GF1003) 或 嵌入式C程序设计(SU1001) 或 C语言程序设计(LL1007)
适用专业:软件工程专业
课程性质:必修
开课单位:软件工程系
一、课程的性质和任务
《数据结构与算法》是软件类相关专业的一门重要专业基础课程,是软件工程专业、专业的专业必修课程。
通过本课程的学习,使学生了解基本的数据结构与常用的算法,理解数据在计算机内存中的存储方式以及相应的处理方法,掌握各类数据结构与各类算法的计算机程序实现,能设计合适的数据结构与优化的算法以解决实际问题,为学生后续的专业课程学习或从事软件开发相关工作打好基础。
二、课程教学目标
(一)知识目标
目标1:理解数据结构与算法的基本概念,掌握各类常用数据结构与各类常用算法的计算机程序实现。
(二)能力目标
目标2: 能够针对实际问题,分析问题涉及的数据的特性,选用合适的逻辑结构和存储结构,设计高效的算法以解决具体应用问题。
(三)素质目标
目标3:能够综合运用数据结构与算法的基本原理和设计方法,研究复杂问题的特性,设计较优的解决方法,并使用程序设计语言编写程序验证其正确性。
课程目标对毕业要求的支撑关系
毕业要求
毕业要求指标点
课程目标
毕业要求1. 工程知识:熟练运用本专业所需的数学、自然科学、工程基础和软件工程的专业知识解决复杂软件工程问题。
1-2:能够对复杂软件工程问题建立恰当的模型,满足工程设计的实际要求。
目标1:理解数据结构与算法的基本概念,掌握各类常用数据结构与各类常用算法的计算机程序实现。
毕业要求2. 问题分析:能够应用数学、自然科学、工程科学的基本原理和软件工程的专业知识,识别、表达复杂软件工程问题,并通过文献研究对其进行分析,以获得有效结论。
2-2:能够基于数学、自然科学、工程科学的基本原理和模型方法,正确表达复杂软件工程问题。
目标2: 能够针对实际问题,分析问题涉及的数据的特性,选用合适的逻辑结构和存储结构,设计高效的算法以解决具体应用问题。
毕业要求3. 设计/开发解决方案:能够针对复杂软件工程问题提出解决方案,设计满足特定需求的系统和模块,并能够在设计环节中体现创新意识,能够综合考虑其对社会、健康、安全、法律、文化以及环境的影响。
3-2:能够针对特定需求,完成模块设计并提出解决方案。
目标3:能够综合运用数据结构与算法的基本原理和设计方法,研究复杂问题的特性,设计较优的解决方法,并使用程序设计语言编写程序验证其正确性。
三、课程思政目标及安排
课程思政目标与课程教学目标相辅相成,融为一体。充分发掘课程的专业知识点与育人目标的内在联系,并以贴切的案例进行类比与分析,从而达到润物无声的效果。课程从知识、能力、价值观三个方面进行教学设计,通过在课程学习具体知识点的同时,培养学生的科学素养、职业素养和集体认同感,引导学生勇于担当社会责任,树立创新精神和工匠精神,在科技领域为国家的建设和发展贡献一份力量。
四、课程教学内容、要求及学时分配
(一)教学内容与学时分配
教学内容
推荐学时
讲授学时
实验学时
支撑课程目标
第1单元 绪论
4
2
2
目标1
第2单元 线性表
8
4
4
目标1,2,3
第3单元 栈和队列
8
4
4
目标1,2,3
扩展:线性表的应用与扩展
4
2
2
目标2,3
第4单元 递归
4
2
2
目标1,2
第5单元 树和二叉树
12
6
6
目标1,2,3
第6单元 图
8
4
4
目标1,2
第7单元 查找
12
6
6
目标1,2
第8单元 排序
8
4
4
目标1,2
复习与总结
4
2
2
目标1,2,3
总计
72
36
36
(二)教学内容与要求
第1章 绪论
教学目标:
了解数据结构研究的内容;
理解数据结构与算法的定义;
掌握算法时间复杂度的判断方法。
教学内容:
数据结构研究的内容;
数据结构的定义;
逻辑结构与存储结构;
抽象数据类型;
算法的定义与特性;
时间复杂度。
教学重点:
数据结构的定义;
逻辑结构与存储结构;
算法的定义与特性。
教学难点:
逻辑结构与存储结构;
时间复杂度。
第2章 线性表的顺序存储
教学目标:
了解线性表的顺序存储结构(顺序表);
理解顺序表在内存中的存储方式;
掌握顺序表的基本操作的实现。
教学内容:
线性表的定义;
线性表的逻辑结构;
线性表的抽象数据类型;
线性表的顺序存储结构(顺序表);
顺序表的查找、插入、删除等基本操作的实现。
教学重点:
顺序表在内存中的存储方式;
顺序表的基本操作的实现。
教学难点:
顺序表的插入操作的实现;
顺序表的删除操作的实现。
第3章 线性表的链式存储
教学目标:
了解线性表的链式存储结构;
理解链式存储结构的特点;
掌握单链表的基本操作的实现。
教学内容:
线性表的链式存储结构;
单链表的查找操作;
单链表的插入操作;
单链表的删除操作;
链式存储结构的特点。
教学重点:
线性表的链式存储结构;
链式存储结构的特点。
教学难点:
单链表的插入操作;
单链表的删除操作。
第4章 栈
教学目标:
了解栈的定义;
理解栈的抽象数据类型;
掌握栈的基本操作的实现。
教学内容:
栈的定义;
栈的抽象数据类型;
栈的顺序存储结构与基本操作的实现;
栈的链式存储结构与基本操作的实现;
栈的应用。
教学重点:
栈的顺序存储结构与基本运算的实现;
栈的链式存储结构与基本运算的实现。
教学难点:
栈的应用:数制转换;
栈的应用:表达式求值。
第5章 队列
教学目标:
了解队列的定义;
理解队列的抽象数据类型;
掌握队列的基本操作的实现。
教学内容:
队列的定义;
队列的抽象数据类型;
队列的链式存储结构与基本操作的实现;
队列的顺序存储结构与基本操作的实现。
教学重点:
队列的链式存储结构与基本操作的实现;
队列的顺序存储结构与基本操作的实现。
教学难点:
顺序队列(循环队列)的基本操作的实现;
顺序队列(循环队列)队空与队满的判断。
扩展:线性表的应用与扩展
教学目标:
了解线性表的删除操作;
理解线性表删除操作的需求;
掌握在线性表中删除所有指定值的方法。
教学内容:
顺序表删除操作的应用与扩展;
单链表删除操作的应用与扩展。
教学重点:
顺序表删除操作的应用与扩展;
单链表删除操作的应用与扩展。
教学难点:
顺序表删除操作的应用与扩展;
单链表删除操作的应用与扩展。
第6章 递归
教学目标:
了解递归的定义;
理解递归的执行过程;
掌握递归的设计方法。
教学内容:
递归的定义;
递归的执行过程;
递归的实现;
递归的设计方法;
递归算法到非递归算法的转换。
教学重点:
递归的实现;
递归的设计方法。
教学难点:
递归的执行过程;
递归的设计方法。
第7章 树与二叉树
教学目标:
了解树与二叉树的定义与概念;
理解二叉树的相关性质;
掌握二叉树存储结构的设计。
教学内容:
树的定义与相关概念;
二叉树的定义;
满二叉树与完全二叉树;
二叉树的性质;
二叉树的顺序存储结构;
二叉树的链式存储结构。
教学重点:
二叉树的定义;
二叉树的链式存储结构。
教学难点:
满二叉树与完全二叉树;
二叉树的性质。
第8章 二叉树的遍历及应用
教学目标:
了解二叉树的遍历顺序;
理解二叉树的遍历算法;
掌握二叉树遍历的多种应用。
教学内容:
二叉树的遍历顺序;
二叉树的遍历算法;
二叉树的创建;
二叉树遍历的应用。
教学重点:
二叉树的遍历算法;
二叉树遍历的应用。
教学难点:
二叉树的创建;
二叉树遍历的应用。
第9章 线索二叉树与哈夫曼树
教学目标:
了解线索二叉树、哈夫曼树的定义;
理解线索二叉树、哈夫曼树的用途;
掌握线索二叉树、哈夫曼树的创建方法。
教学内容:
线索二叉树的定义;
线索二叉树的创建与相关操作;
哈夫曼树的定义;
哈夫曼树的创建与哈夫曼编码。
教学重点:
线索二叉树的定义;
哈夫曼树的定义。
教学难点:
线索二叉树的创建与相关操作;
哈夫曼树的创建与哈夫曼编码。
第10章 图的存储与遍历
教学目标:
了解图的定义和表示;
理解图的相关概念;
掌握图的深度优先、广度优先遍历方法。
教学内容:
图的定义和表示;
图的相关概念;
图的存储结构与实现;
图的遍历方法。
教学重点:
图的相关概念;
图的存储结构与实现。
教学难点:
图的深度优先遍历;
图的广度优先遍历。
第11章 图的应用
教学目标:
了解图的相关应用;
理解图的应用的相关算法;
掌握构造最小生成树的两种算法。
教学内容:
最小生成树的概念;
普里姆(Prim)算法构造最小生成树;
克鲁斯卡尔(Kruskal)算法构造最小生成树;
最短路径(单源点最短路径);
拓扑排序。
教学重点:
普里姆(Prim)算法构造最小生成树;
克鲁斯卡尔(Kruskal)算法构造最小生成树。
教学难点:
普里姆(Prim)算法构造最小生成树;
最短路径(单源点最短路径)。
第12章 线性表查找
教学目标:
了解查找的概念;
理解查找的效率;
掌握线性表查找的三种方法。
教学内容:
查找的概念与效率;
顺序表查找;
有序表查找;
索引表查找;
查找方法的比较。
教学重点:
查找的概念与效率;
有序表查找。
教学难点:
有序表查找;
索引表查找。
第13章 二叉排序树
教学目标:
了解二叉排序树的定义;
理解在二叉排序树中进行查找的过程;
掌握创建二叉排序树的方法。
教学内容:
二叉排序树的定义;
结点的插入与二叉排序树的创建;
二叉排序树中进行查找;
结点的删除:叶子、单某某、双分支结点。
教学重点:
结点的插入与二叉排序树的创建;
二叉排序树中进行查找。
教学难点:
二叉排序树中单某某结点的删除;
二叉排序树中双分支结点的删除。
第14章 哈希表查找
教学目标:
了解哈希查找的概念;
理解哈希函数的构造方法;
掌握进行哈希查找的过程。
教学内容:
哈希查找的概念;
哈希函数的构造方法;
处理冲突的方法;
哈希查找的过程。
教学重点:
哈希函数的构造方法;
处理冲突的方法;
教学难点:
处理冲突的方法;
哈希查找的过程。
第15章 插入排序与选择排序
教学目标:
了解排序的基本概念;
理解排序算法的性能指标;
掌握直接插入排序和简单选择排序的实现。
教学内容:
排序的基本概念;
排序的分类;
排序算法的性能指标;
直接插入排序;
简单选择排序。
教学重点:
排序的基本概念;
排序算法的性能指标;
直接插入排序的思想;
简单选择排序的思想。
教学难点:
直接插入排序算法的实现;
简单选择排序算法的实现。
第16章 交换排序与归并排序
教学目标:
了解交换排序与归并排序的基本概念;
理解交换排序与归并排序的设计思想;
掌握快速排序和二路归并排序算法的实现。
教学内容:
交换排序:冒泡排序、快速排序;
归并排序:二路归并排序;
各种排序算法的比较。
教学重点:
交换排序的思想;
归并排序的思想。
教学难点:
快速排序算法的实现;
二路归并排序算法的实现。
五、课程实验内容及要求
(一)实验安排
实验名称
实验类型
实验要求
实验学时
实验1:程序设计基础知识、抽象数据类型设计
验证性
课内必做
2
实验2:线性表的顺序存储结构实现
验证性
课内必做
2
实验3:线性表的链式存储结构实现
验证性
课内必做
2
实验4:栈的实现与应用
验证性
课内必做
2
实验5:队列的实现
验证性
课内必做
2
课余实验:线性表的应用与扩展
设计性
课余必做
2
实验6:递归调用
验证性
课内必做
2
实验7:二叉树的链式存储结构、性质
验证性
课内必做
2
实验8:二叉树构造及遍历
验证性
课内必做
2
实验9:线索二叉树和哈夫曼树
验证性
课内必做
2
实验10:图的存储结构与遍历
验证性
课内必做
2
实验11:图的应用
验证性
课内必做
2
实验12:线性表查找
验证性
课内必做
2
实验13:二叉排序树
验证性
课内必做
2
实验14:哈希表查找
验证性
课内必做
2
实验15:插入排序与选择排序
验证性
课内必做
2
实验16:交换排序与归并排序
验证性
课内必做
2
(二)实验内容与要求
实验1 程序设计基础知识、抽象数据类型设计
实验目的:
了解函数的使用;
理解结构体、指针的使用方法;
掌握抽象数据类型的设计方法及实现;
掌握使用Visual Studio开发应用程序的方法。
实验内容:
结构体的使用;
参数传递方法的比较;
抽象数据类型的设计。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验2 线性表的顺序存储结构实现
实验目的:
了解Visual Studio项目的文件组织方式;
理解线性表中数据元素间的关系及其顺序存储结构方式表示方法;
掌握顺序表的操作方法与接口函数的设计方法。
实验内容:
顺序表的设计;
顺序表的操作;
顺序表的合并。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验3 线性表的链式存储结构实现
实验目的:
了解线性表的链式存储结构的定义;
理解链式存储结构结点的访问方法;
掌握链表的基本操作。
实验内容:
链表的操作;
链表的简单应用;
链表的扩展应用。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验4 栈的实现与应用
实验目的:
了解栈的后进先出的特性;
理解栈的顺序存储结构的实现;
理解栈的链式存储结构的实现;
掌握使用栈解决实际问题的方法。
实验内容:
顺序栈的基本操作;
链栈的基本操作;
栈的应用。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验5 队列的实现
实验目的:
了解队列的后进先出的特性;
理解队列的链式存储结构的实现;
理解队列的顺序存储结构的实现;
掌握使用队列解决实际问题的方法。
实验内容:
链式队列的基本操作;
顺序队列的基本操作;
队列的应用。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
课余实验 线性表的应用与扩展
实验目的:
了解线性表的删除操作;
理解线性表删除操作的需求;
掌握在线性表中删除所有指定值的方法。
实验内容:
顺序表删除操作的应用与扩展;
单链表删除操作的应用与扩展。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验6 递归调用
实验目的:
了解递归的基本概念;
理解递归调用的实现原理;
掌握递归算法的设计;
掌握递归转换成非递归的方法。
实验内容:
递归的执行过程;
汉诺塔问题;
递归转换成非递归。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验7 二叉树的链式存储结构、性质
实验目的:
了解二叉树的存储结构;
理解二叉树链式存储结构的设计方法;
掌握二叉树的相关性质。
实验内容:
二叉树相关性质的运用;
二叉树的链式存储结构。
二叉树相关性质的验证。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验8 二叉树构造及遍历
实验目的:
了解树形结构中结点和结点间关系的基本概念;
理解二叉树的链式存储结构;
掌握二叉树结点的递归访问方法;
掌握二叉树的遍历方法。
实验内容:
二叉树的遍历;
计算二叉树的深度;
二叉树遍历的应用。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验9 线索二叉树和哈夫曼树
实验目的:
了解线索二叉树和哈夫曼树的基本概念;
理解线索二叉树和哈夫曼树的用途;
掌握二叉树的线索化及其应用;
掌握哈夫曼树的构造和哈夫曼编码的设计。
实验内容:
线索二叉树的设计;
线索二叉树的算法实现;
哈夫曼树的设计;
哈夫曼树的算法实现。
实验要求:
(1)实验分组人数:1人;
(2)实验环境要求:Visual Studio开发环境;
(3)实验过程、现象或数据记录等要求:参照实验文档
实验报告要求:
实验报告内容需包括:实验目的、实验设备、实验内容与要求、实验过程和实验结果。
实验10 图的存储结构与遍历
实验目的:
了解图的邻接矩阵表示方法;
了解图的邻接表表示方法;
理解图的遍历的思想;
掌握基于邻接矩阵的深度优先、广度优先遍历方法的实现;
掌握基于邻接表的深度优先、广度优先遍历方法的实现。
实验内容:
图的邻接矩阵;
图的邻接表;
深度优先遍历方法;
广度优先遍历方法。
实验要求:
(1)实验分组人数:1 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 达成度评价方式
课程目标1达成度 = 课程目标1成绩组成项的平均分之和 / 课程目标1成绩组成项的总和
课程目标2达成度 = 课程目标2成绩组成项的平均分之和 / 课程目标2成绩组成项的总和
课程目标3达成度 = 课程目标3成绩组成项的平均分之和 / 课程目标3成绩组成项的总和
课程达成度 =(课程目标1达成度 + 课程目标2达成度 + 课程目标3达成度)
八、推荐教材与参考书目
(一)推荐教材
严某某,李某某,吴某某. 数据结构(C语言版)(第2版). 人民邮电出版社,2017年8月.
(二)参考书目
(1)李某某. 数据结构教程(第5版). 清华大学出版社,2017年5月.
(2)毛某某. 数据结构实验指导教程(第1版). 清华大学出版社,2014年10月.
(三)其他参考资源
(1)《数据结构与算法》精品资源共享课. 网址:http://172.16.31.53/course/sjjgysf/
九、其他说明
本教学大纲制订(修订)于2021年8月,适用于2021年修订的本科人才培养方案。
制订人:(教学团队/课程负责人)钟某某
审定人:(专业负责人)
批准人:(系主任)
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]
以上为《《数据结构与算法》课程教学大纲》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。