《数据结构与算法(上)(Data Structure and Algorithms(First Half))》教学大纲
制定时间:2025年4月
一、课程基本信息
(一)适用专业:本科计算机科学与技术专业、软件工程、物联网工程、智能科学与技术
(二)课程代码:???
(三)学分/课内学时:4学分/64学时
(四)课程类别:专业教育
(五)课程性质:必修/理论课
(六)先修课程:C语言程序设计与应用、C语言程序设计专题实验
(七)后续课程:数据结构与算法(下)、数据结构与算法课程设计、数据库原理及应用、数字逻辑与计算机组成、操作系统原理与实现、毕业设计等
二、课程教学目标
本课程是计算机科学与技术专业的一门专业教育必修课程,系统地介绍了软件设计中常用的数据结构及相应的存储结构和实现算法,介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法进行分析和评价。引入AI智辅工具,使学生深入理解典型数据结构的逻辑结构与存储结构的基本概念及操作算法,训练良好的程序设计技能,编制高效可靠的程序,为后续课程的学习以及毕业设计打下良好基础。培养批判性思维、解决行业复杂工程问题的能力以及人机协同学习能力,养成严谨细致的学习精神。本课程采用中文教学或中英双语教学。通过双语教学熟悉专业术语的英文表达,逐步培养英文文献阅读和对外交流能力。
课程目标及能力要求具体如下:
(一)具体目标
课程思政目标1:从课程所涉计算机相关行业、国家、国际、文化、历史等角度,增加课程的知识性、人文性,让学生了解学习计算机科学家的科学精神和科学发现过程,激励学生进行自主创新的意识。
课程思政目标2:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。
课程思政目标3:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育,培养学生精益求精的大国工匠精神,激发学生科技报国的家国情怀和使命担当。
知识能力目标1:了解数据结构的基本术语,掌握数据结构及算法的基本概念。能够准确地对算法进行分析和评价。
知识能力目标2:熟练掌握各种典型数据结构的操作和实现,学会根据实际问题来选择恰当的数据结构。掌握常见的排序和查找算法,能运用到实际问题中。
知识能力目标3:掌握设计和实现算法的步骤和算法分析方法,能够正确地设计高效的算法,训练出良好的程序设计技能,有能力编制高效可靠的程序。
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
3. 能够设计针对计算机应用系统设计中的复杂工程问题的解决方案,设计满足特定需求的系统,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。 |
3.1:能够根据用户需求确定计算机应用系统设计目标。 |
知识能力目标2 知识能力目标3 |
线性表、堆栈、队列、树型结构、并查集、哈希表的基本概念、基本操作及应用 |
作业、实验、期中考试、期末考试 |
9.能够就计算机应用系统的复杂工程问题与业界同行及社会公众进行有效沟通和交流,具有一定的写作能力、表达能力和人际交往能力;掌握一门外语,具备一定的国际视野,能够在跨文化背景下进行沟通和交流。 |
9.1:熟练地掌握一门外语,具有一定的国际视野和跨文化交流能力;能阅读本专业外文资料,了解国际上信息技术的发展趋势和前沿技术。 |
知识能力目标1 |
绪论、线性表、堆栈、队列、树型结构、并查集、哈希表的基本概念、基本操作及应用 |
作业、期末考试 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 (知识点) |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 教学目标 |
备注 |
1 |
绪论 |
教学内容: 数据结构各种基本概念和术语;算法描述和分析的方法;数据结构的逻辑结构、存储结构及数据运算三方面的要领及相互关系;算法复杂度的分析方法。 重点: 数据结构的三个基本要素:数据的逻辑结构、数据的存储结构和算法。 |
了解各种基本概念和术语,掌握算法描述和分析的方法。了解数据结构的逻辑结构、存储结构及数据运算三方面的要领及相互关系。初步掌握算法复杂度的分析方法。 |
2 |
讲授 |
课程思政目标1、 知识能力目标1 |
作业 |
2 |
线性表 |
教学内容: 线性表的逻辑特性和两类不同的存储结构;顺序存储结构和链式存储结构的描述方法;单链表、循环链表、双向链表的特点;线性表在两类存储结构中实现基本操作(查找、插入、删除、合并等)的算法及分析;用时间和空间复杂度分析线性表。 重点: 线性表的逻辑结构、顺序存储结构的实现、链表结构的实现。 难点: 链表结构中指针的使用。 |
掌握线性表的逻辑特性和两类不同的存储结构;掌握两类存储结构(顺序和链式存储结构)的描述方法,以及单链表、循环链表、双向链表的特点;掌握线性表在顺序存储结构中实现基本运算(查找、插入、删除、合并等)的算法及分析;掌握线性表在链式存储结构中实现基本操作(查找、插入、删除、合并等)的算法及分析。掌握用时间和空间复杂度分析线性表。 |
16 |
讲授 示范 实操 |
课程思政目标2、 课程思政目标3 知识能力目标1 知识能力目标2 知识能力目标3 |
作业 实验 |
3 |
堆栈和队列 |
教学内容: 堆栈和队列的基本概念;堆栈和队列在存储结构上的基本运算;循环队列中对边界条件的处理;堆栈的典型应用及编程实现。递归的概念和基本程序设计方法。 重点: 堆栈和队列的逻辑结构定义、堆栈和队列的操作特点。 难点: 堆栈和队列的应用;递归程序的执行过程。 |
了解堆栈和队列的基本概念;掌握堆栈和队列在存储结构上的基本运算;循环队列中对边界条件的处理;熟悉堆栈的典型应用并编程实现。掌握递归的概念和基本程序设计方法。 |
14 |
讲授 示范 实操 |
课程思政目标2、 课程思政目标3 知识能力目标1 知识能力目标2 知识能力目标3 |
作业 实验 |
4 |
树型结构 |
教学内容: 树的基本概念、二叉树的基本概念、满二叉树和完全二叉树的定义和性质、二叉树的遍历;二叉搜索树的定义及基本操作(创建,插入,遍历,查找最小值,查找最大值,查找元素,删除);AVL树(平衡二叉树)的定义及基本操作(单旋转,双旋转,插入,删除);红黑树的定义及基本操作(创建、插入和删除);二叉堆/优先队列;哈夫曼树和哈夫曼编码;B树和B+树的定义。 重点: 二叉树的各种遍历算法、二叉搜索树的基本操作、AVL树的基本操作、红黑树的基本操作、哈夫曼树的实现。 难点: 二叉树的遍历算法的递归分析。 |
清晰掌握树的基本概念;深刻理解二叉树的基本概念;准确把握二叉搜索树、AVL树(平衡二叉树)、红黑树、二叉堆 / 优先队列、哈夫曼树、B 树和B+树的定义,理解它们各自的特点与适用场景。 精通二叉树的各种遍历算法;熟练掌握二叉搜索树的基本操作原理;深入理解AVL树的基本操作;明晰红黑树的基本操作原理;理解二叉堆 / 优先队列的操作原理;掌握哈夫曼树的构建原理及哈夫曼编码的生成过程。了解B树和B+树的基本操作原理。 |
26 |
讲授 示范 实操 |
课程思政目标2、 课程思政目标3 知识能力目标1 知识能力目标2 知识能力目标3 |
作业 实验 |
5 |
并查集 |
教学内容: 并查集的定义及相关术语。并查集核心操作,包括初始化、查找和合并的原理与实现。并查集应用场景分析。 重点: 核心操作初始化、查找和合并的理解与实现。 难点: 面对涉及集合划分、连通性判断等实际问题时,学生能够快速识别并将其抽象为并查集可以解决的问题模型。 |
熟练掌握并查集的初始化、查找和合并这三个核心操作的原理。能详细解释这些操作如何协同工作来解决集合相关问题。 |
2 |
讲授 示范 |
课程思政目标2、 课程思政目标3 知识能力目标1 知识能力目标2 知识能力目标3 |
作业 |
6 |
哈希表 |
教学内容: 哈希表查找的基本思想;哈希函数的定义;分离链接法的实现;开放定址法的实现;再散列的原理和实现。 重点: 分离链接法、开放定址法。 难点: 开放定址法 |
深入理解哈希表查找的基本思想;深入理解哈希表查找的基本思想;透彻理解分离链接法和开放定址法这两种解决哈希冲突的基本方法的原理;理解再散列的原理,明白在哈希表冲突严重或负载因子过高时,通过再散列重新计算哈希值、调整哈希表结构以提高哈希表性能的必要性。 准确实现分离链接法;熟练掌握开放定址法的实现。 |
4 |
讲授 示范 实操 |
课程思政目标2、 课程思政目标3 知识能力目标1 知识能力目标2 知识能力目标3 |
作业 实验 |
(二)教学方法
1.课堂讲授
(1)采用启发式教学,激发学生主动学习的兴趣,培养学生独立思考、分析问题和解决问题的能力,引导学生主动通过实践和自学获得自己想学到的知识。
(2)在教学内容上,系统讲授绪论、线性表、堆栈、队列、树型结构、并查集、哈希表的基本概念、基本操作及应用,使学生能够系统掌握用于解决计算机专业数据存储和处理问题的专业基础知识。
(3)在教学过程中采用电子教案,多媒体教学与传统板书、教具教学相结合,提高课堂教学信息量,增强教学的直观性。除了讲授理论知识,还为学生演示如何编程实现各种典型数据结构。
(4)引入和建设AI智辅工具,培养学生批判性思维和人机协同学习能力。
(5)理论教学与工程实践相结合,引导学生应用数学、自然科学和工程科学的基本原理,采用现代设计方法和手段,解决计算机专业相关数据存储和处理的思维方法和实践能力。
(6)在教学中自然融入思政元素,实现知识技能传授同时达成育人目标。
2.实验教学
实验教学是数据结构课程中重要的实践环节,目的是培养学生通过上机编程实践研究解决计算机中数据存储和处理的基本能力。课程必做实验12个。利用在线判题系统平台,客观统计和了解学生平时上机实验情况。实验成绩以实验结果为准,由系统自动导出程序代码文档作为实验报告。
鼓励学生结合自己的兴趣进行自主实验。
四、考核及成绩评定
(一)考核内容及成绩构成
课程考核主要包括课程思政入脑入心情况和知识能力目标达成情况。考核形式包括平时实验、平时作业、期中考试和期末考试四个部分,考核方式:考试。课程目标的考核内容、成绩评定方式、目标分值建议如下:
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
课程思政目标1:从课程所涉计算机相关行业、国家、国际、文化、历史等角度,增加课程的知识性、人文性,让学生了解学习计算机科学家的科学精神和科学发现过程,激励学生进行自主创新的意识。 知识能力目标1:了解数据结构的基本术语,掌握数据结构及算法的基本概念。能够准确地对算法进行分析和评价。 |
绪论、线性表、堆栈、队列、树型结构、并查集、哈希表 |
作业 |
8% |
100% |
A |
|
基础知识客观题 |
期末考试 |
18% |
30% |
D1 |
课程思政目标3:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育,培养学生精益求精的大国工匠精神,激发学生科技报国的家国情怀和使命担当。 知识能力目标2:熟练掌握各种典型数据结构的操作和实现,学会根据实际问题来选择恰当的数据结构。掌握常见的排序和查找算法,能运用到实际问题中。 |
线性表、堆栈、队列、树型结构、哈希表 |
实验 |
12% |
100% |
B |
|
典型数据结构及基本操作的实现能力 |
期中考试 |
10% |
50% |
C1 |
图表计算题 |
期末考试 |
30% |
50% |
D2 |
课程思政目标2:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标3:掌握设计和实现算法的步骤和算法分析方法,能够正确地设计高效的算法,训练出良好的程序设计技能,有能力编制高效可靠的程序。 |
算法的设计和实现能力 |
期中考试 |
10% |
50% |
C2 |
|
算法题 |
期末考试 |
12% |
20% |
D3 |
总评成绩(100%)=期末考试(60%)+实验(12%)+作业(8%)+期中考试(20%) |
100% |
—— |
—— |
|
(二)平时考核成绩评定
实验:完成12次,共同支撑知识能力目标2,共占总评分12%;作业:完成4次,共同支撑知识能力目标1,共占总评分8%;期中考试:完成1次,支撑知识能力目标2,3,共占总评分20%。对应目标的评分标准如下:
对应目标 |
课程思政目标1:从课程所涉计算机相关行业、国家、国际、文化、历史等角度,增加课程的知识性、人文性,让学生了解学习计算机科学家的科学精神和科学发现过程,激励学生进行自主创新的意识。 知识能力目标1:了解数据结构的基本术语,掌握数据结构及算法的基本概念。能够准确地对算法进行分析和评价。 |
课程思政目标3:培养学生正确认识问题、分析问题和解决问题的能力。注重强化学生工程伦理教育,培养学生精益求精的大国工匠精神,激发学生科技报国的家国情怀和使命担当。 知识能力目标2:熟练掌握各种典型数据结构的操作和实现,学会根据实际问题来选择恰当的数据结构。掌握常见的排序和查找算法,能运用到实际问题中。 |
课程思政目标2:科学思维方法的训练和科学伦理的教育,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。 知识能力目标3:掌握设计和实现算法的步骤和算法分析方法,能够正确地设计高效的算法,训练出良好的程序设计技能,有能力编制高效可靠的程序。 |
考查点 |
基础理论知识掌握情况 |
典型数据结构操作实现 |
实际问题的灵活运用 |
总评分占比 |
8% |
22% |
10% |
评分标准 |
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。
(二)推荐教材:《数据结构(C语言版|第2版)》,严蔚敏、李冬梅、吴伟民编著,人民邮电出版社,2015,第2版,ISBN:9787115379504。
(三)推荐教材:《数据结构的C++伪码实现(英文版)》,Richard F.Gilberg Behrouz A.Forouzan,人民邮电出版社,2002,第1版,ISBN:9787115097668。
(一)参考资料:程序设计类实验辅助教学平台,https://pintia.cn/。