《数据结构与算法》课程教学大纲

本文由用户“kiss_mywife”分享发布 更新时间:2023-01-24 09:30:10 举报文档

以下为《《数据结构与算法》课程教学大纲》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

《数据结构与算法》课程教学大纲

课程代码: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字内容到此结束,中间部分内容请查看底下的图片预览]

以上为《《数据结构与算法》课程教学大纲》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览