《数据结构与算法(下)(Data Structure and Algorithms(Second Half))》教学大纲
制定时间:2025年4月
一、课程基本信息
(一)适用专业:本科计算机科学与技术专业
(二)课程代码:???
(三)学分/课内学时:3学分/48学时
(四)课程类别:专业教育
(五)课程性质:必修/理论课
(六)先修课程:C语言程序设计与应用、C语言程序设计专题实验、数据结构与算法(上)
(七)后续课程:数据库原理及应用、操作系统原理与实现、毕业设计等
二、课程教学目标
本课程是计算机科学与技术专业的一门专业教育必修课程,系统地介绍了软件设计中常用的数据结构及相应的存储结构和实现算法,介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法进行分析和评价。引入AI智辅工具,使学生深入理解典型数据结构的逻辑结构与存储结构的基本概念及操作算法,训练良好的程序设计技能,编制高效可靠的程序,为后续课程的学习以及毕业设计打下良好基础。培养批判性思维、解决行业复杂工程问题的能力以及人机协同学习能力,养成严谨细致的学习精神。本课程采用中文教学或中英双语教学。通过双语教学熟悉专业术语的英文表达,逐步培养英文文献阅读和对外交流能力。
课程目标及能力要求具体如下:
(一)具体目标
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。
课程思政目标2:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育。
知识能力目标1:熟练掌握各种典型数据结构的操作和实现,学会根据实际问题来选择恰当的数据结构。了解常见排序算法,理解图论常见算法,了解常见串匹配算法和正则表达式。
知识能力目标2:掌握分治法、动态规划、贪心法、回溯与分支限界等常见算法设计与实现。掌握设计和实现算法的步骤和算法分析方法,能够正确地设计高效的算法,训练出良好的程序设计技能,有能力编制高效可靠的程序。
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
1. 专业必需自然科学、工程基础和专业知识,能够用于解决计算机软件开发中的复杂工程问题。 |
1.3:计算机软件与理论、计算机系统结构、计算机应用技术的基本理论、基本知识和基本技能。 1.5:软件系统设计、开发的软件工程思想及其在开发团队中应用,实现对大型软件系统复杂工程问题的解决方案进行分析与改进。 |
知识能力目标1 |
算法的基本概念,排序与分治法,字符串。 |
作业、实验、期末考试 |
2. 能够应用自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析计算机软件系统中的复杂工程问题,以获得有效结论。 |
2.1:能识别和判断软件系统中的涉及问题的主要算法类别和方法,识别和判断嵌入式系统中硬件设备涉及问题的主要原理。 |
知识能力目标2 |
动态规划,贪心法,图论与搜索。 |
作业、实验、期末考试 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 (知识点) |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 教学目标 |
备注 |
1 |
绪论 |
教学内容: 算法的基本概念,算法特别是递归算法的复杂度计算方法与计算公式。 重点: 算法的基本概念。算法复杂度的计算。 难点: 递归算法的分析。 |
理解算法的定义、算法的5 个基本特点和分类;掌握常见的算法描述方法、算法时间复杂度的分析和度量方法。 重点: 算法的定义、算法的 5 个基本特点和分类、常见的算法描述方法以及算法时间复杂度的分析和度量。 难点: 算法时间复杂度的分析方法和度量结论的得出依据。 |
2 |
讲授 |
课程思政目标1、 知识能力目标1 |
作业 |
2 |
排序 |
教学内容: 几种基本排序方法及其改进的排序方法基本思想、排序过程、算法实现、时间和空间性能的分析以及各种排序方法的比较和选择。插入排序、快速排序、希尔排序和堆排序的基本思想,这四种算法的具体实现和各种内部排序的性能比较分析结论;归并排序和基数排序的基本思想。 重点: 快速排和归并排序算法的基本思想,并通过这两种排序算法理解分治法。 难点: 分治法及分治法的应用。 |
掌握几种基本排序方法及其改进的排序方法基本思想、排序过程、算法实现、时间和空间性能的分析以及各种排序方法的比较和选择。理解插入排序、快速排序、希尔排序和堆排序的基本思想,掌握这四种算法的具体实现和各种内部排序的性能比较分析结论;了解归并排序和基数排序的基 本思想 |
12 |
讲授 示范 实操 |
课程思政目标1、 知识能力目标1 |
作业 实验 |
3 |
动态规划 |
教学内容: 什么是动态规划、动态规划的 2 个基本要点和动态规划设计算法的方法。 用递归法和递推法实现动态规划时的特点和区别。 以矩阵乘法连、最大子段和、图像压缩问题和 0~1 背包问题等为例讲解动态规划的算法设计方法。。 重点: 堆栈和队列的逻辑结构定义、堆栈和队列的操作特点。 难点: 堆栈和队列的应用;递归程序的执行过程。 |
通过例示 动态规划算法,学会判别一个问题是否适合用动态规划求解、能给出简单问题的动态规划状态转移方程。 重点: 动态规划的 2 个基本要点和动态规划设计算法的方法。 难点: 判别一个给定问题是否适合用动态规划求解、能给出问题的动态规划状态转移方程。 |
10 |
讲授 示范 实操 |
课程思政目标2、 知识能力目标2 |
作业 实验 |
4 |
图论、贪心法和搜索 |
教学内容: 图的基本概念;两种常用的存储结构;图的搜索与遍历算法;深度优先搜索与回溯、剪枝;广度优先遍历与分支限界;贪心算法的本质和应用贪心算法求解问题的 2 个要件。贪婪算法与前述动态规划算法的区别。以经典的最小生成树、单源最短路径和哈夫曼编码问题为例。拓扑排序,关键路径。 重点: 图的基本概念、两种常用的存储结构、深度优先搜索、广度优先搜索、贪心法,动态规划算法在图论中的应用。 难点: 回溯与剪枝;分支限界;基于贪心法设计的图论算法(最小生成树Prim算法、Kruskal算法,最短路径Dijkstra算法);基于动态规划设计的图论算法Floyd算法。 |
掌握图的基本概念、两种常用的存储结构。掌握图的两种遍历算法;理解贪心法和动态规划算法在设计图论算法中的应用。理解最小生成树算法,最短路径算法,拓扑排序,关键路径。 |
20 |
讲授 示范 实操 |
课程思政目标2、 知识能力目标2 |
作业 实验 |
5 |
字符串 |
教学内容: 串匹配算法;正则表达式 重点: KMP算法 难点:有限状态自动机。 |
掌握KMP算法,理解正则表达式。了解确定有限状态自动机和不确定有限状态自动机。 |
4 |
讲授 示范 |
课程思政目标1、 知识能力目标1 |
作业 |
(二)教学方法
1.课堂讲授
(1)采用启发式教学,激发学生主动学习的兴趣,培养学生独立思考、分析问题和解决问题的能力,引导学生主动通过实践和自学获得自己想学到的知识。
(2)在教学内容上,系统讲授分治法、动态规划、贪心法、回溯与分支限界,使学生能够理解常见的算法设计思想,并在排序算法和图论算法中体会经典算法设计思想的应用。
(3)在教学过程中采用电子教案,多媒体教学与传统板书、教具教学相结合,提高课堂教学信息量,增强教学的直观性。除了讲授理论知识,还为学生演示如何编程实现各种典型数据结构。
(4)引入和建设AI智辅工具,培养学生批判性思维和人机协同学习能力。
(5)理论教学与工程实践相结合,引导学生应用数学、自然科学和工程科学的基本原理,采用现代设计方法和手段,解决计算机专业相关数据存储和处理的思维方法和实践能力。
(6)在教学中自然融入思政元素,实现知识技能传授同时达成育人目标。
2.实验教学
实验教学是数据结构与算法课程中重要的实践环节,目的是培养学生通过上机编程实践研究解决计算机中数据存储和处理的基本能力,理解常见的算法设计思想并掌握在排序和图论中的应用。课程必做实验8个。利用在线判题系统平台,客观统计和了解学生平时上机实验情况。实验成绩以实验结果为准,由系统自动导出程序代码文档作为实验报告。
鼓励学生结合自己的兴趣进行自主实验。
四、考核及成绩评定
(一)考核内容及成绩构成
课程考核主要包括课程思政和知识能力目标达成情况。考核形式包括平时实验、平时作业和期末考试三个部分,考核方式:考试。课程目标的考核内容、成绩评定方式、目标分值建议如下:
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标1:熟练掌握各种典型数据结构的操作和实现,学会根据实际问题来选择恰当的数据结构。了解常见排序算法,理解图论常见算法,了解常见串匹配算法和正则表达式。 |
绪论、排序、字符串 |
作业 |
4% |
28% |
A1 |
|
实验 |
4% |
25% |
B1 |
期末考试 |
21% |
30% |
C1 |
课程思政目标2:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育。 知识能力目标2:掌握分治法、动态规划、贪心法、回溯与分支限界等常见算法设计与实现。掌握设计和实现算法的步骤和算法分析方法,能够正确地设计高效的算法,训练出良好的程序设计技能,有能力编制高效可靠的程序。 |
动态规划、图论、贪心和搜索 |
作业 |
10% |
72% |
A2 |
|
实验 |
12% |
75% |
B2 |
期末考试 |
49% |
70% |
C2 |
总评成绩(100%)=期末考试(70%)+实验(16%)+作业(14%) |
100% |
—— |
—— |
|
(二)平时考核成绩评定
实验:完成8次,共同支撑知识能力目标2,共占总评分16%;作业:完成7次,共同支撑知识能力目标1,共占总评分14%。对应目标的评分标准如下:
对应目标 |
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标1:熟练掌握各种典型数据结构的操作和实现,学会根据实际问题来选择恰当的数据结构。了解常见排序算法,理解图论常见算法,了解常见串匹配算法和正则表达式。 |
课程思政目标1:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标2:掌握分治法、动态规划、贪心法、回溯与分支限界等常见算法设计与实现。掌握设计和实现算法的步骤和算法分析方法,能够正确地设计高效的算法,训练出良好的程序设计技能,有能力编制高效可靠的程序。 |
课程思政目标2:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育。 知识能力目标2:掌握分治法、动态规划、贪心法、回溯与分支限界等常见算法设计与实现。掌握设计和实现算法的步骤和算法分析方法,能够正确地设计高效的算法,训练出良好的程序设计技能,有能力编制高效可靠的程序。 |
考查点 |
基础理论知识掌握情况 |
典型数据结构操作实现 |
实际问题的灵活运用 |
总评分占比 |
36% |
32% |
32% |
评分标准 |
100% 至 90% |
深刻理解和熟练掌握各种典型数据结构的基本概念和基本理论。掌握常见的排序和串匹配算法。在线判题系统实验题目通过率在90%以上。 |
熟练掌握各种典型数据结构的基本操作和实现,掌握动态规划和贪心算法。在线判题系统实验题目通过率在90%以上。 |
会灵活根据实际问题来选择恰当的数据结构,能将学到的知识运用到实际问题中。在线判题系统实验题目通过率在90%以上。 |
89.9% 至 80% |
熟练掌握各种典型数据结构的基本概念和基本理论。掌握常见的排序和串匹配算法。在线判题系统实验题目通过率在80%以上。 |
熟悉各种典型数据结构的基本操作和实现,掌握动态规划和贪心算法。在线判题系统实验题目通过率在80%以上。 |
可以根据实际问题来选择恰当的数据结构,能将学到的知识运用到实际问题中。在线判题系统实验题目通过率在80%以上。 |
79.9 至 70% |
较熟练掌握各种典型数据结构的基本概念和基本理论。掌握常见的排序和串匹配算法。在线判题系统实验题目通过率在70%以上。 |
较熟悉各种典型数据结构的基本操作和实现,掌握动态规划和贪心算法。在线判题系统实验题目通过率在70%以上。 |
可以根据实际问题来选择恰当的数据结构,能将学到的知识运用到实际问题中。在线判题系统实验题目通过率在70%以上。 |
69.9% 至 60% |
基本掌握各种典型数据结构的基本概念和基本理论。掌握常见的排序和串匹配算法。在线判题系统实验题目通过率在60%以上。 |
基本能实现各种典型数据结构的基本操作,掌握动态规划和贪心算法。在线判题系统实验题目通过率在60%以上。 |
基本能根据实际问题来选择合适的数据结构,基本能将学到的知识运用到实际问题中。在线判题系统实验题目通过率在60%以上。 |
59.9%至 0 |
未掌握各种典型数据结构的基本概念和基本理论。掌握常见的排序和串匹配算法。在线判题系统实验题目通过率在60%以下。 |
不能实现各种典型数据结构的基本操作,掌握动态规划和贪心算法。。在线判题系统实验题目通过率在60%以下。 |
不能根据实际问题来选择合适的数据结构,不能将学到的知识运用到实际问题中。在线判题系统实验题目通过率在60%以下。 |
五、参考学习资料
(一)推荐教材:《数据结构与算法分析(C语言描述)》,马克·艾伦·维斯著,冯舜玺译,机械工业出版社,2020,第1版,ISBN:9787111621959。
(二)推荐教材:《算法(第4版)》,RobertSedge wick, Kevin Wayne著,人民邮电出版社,2018,第4版,ISBN:9787115293800。
(三)推荐教材:《数据结构与算法分析(Java语言描述)》,马克·艾伦·维斯著,冯舜玺,陈越译,机械工业出版社,2022,第1版,ISBN:9787111528395。
(一)参考资料:程序设计类实验辅助教学平台,https://pintia.cn/。