“数据结构与算法”教学大纲

作为一门重要的专业必修课程,“数据结构与算法”课程既是对以往课程的深入和扩展,也是为将来更加深入地学习其他专业课程打下基础。课程中所学习的排序问题的算法,以及基本的树、图等数据结构,是计算机科学的基本功。B+树、Hash等高级数据结构,也是数据库、操作系统、编译原理、计算机网络等后续课程的基础。

1.课程基本情况

课程编号

04830540

课程名称

数据结构与算法A(实验班)

DataStructureAndAlgorithmA

一年级

二年级

三年级

四年级

适用院系

信息学院全体学生

课程定位

骨干基础课,必修课

学分

3学分

总学时

54学时

先修课程

计算引论,程序设计实习,集合论与图论,

概率统计A

后续课程

数据结构与算法实习,程序设计语言原理

教学方式

本课程是“数据结构与算法A”替代课程,针对基础比较好、学习能力突出、学有余力的实验班学生设置。课程将加大“数据结构与算法A”的深度和广度,提供更多的研究和讨论机会,因材施教、培养领袖人才。

鉴于数据结构与算法是与实践紧密结合的课程,配合理论教学,将加强上机实习的训练,通过合理、有效地设计上机题目,改进作业评核方式,调动学生的积极性,启发引导学生掌握基础理论并能创新应用,增强学生综合运用有关知识的能力。

课时分配

3(课堂教学)+1(教学实验)/周

考核方式

平时(书面作业、课堂测试)20%,上机(+报告)15%,期中20%,期末20%,高级数据结构20%,考勤和态度5%。

期中、期末考试,全学院的“数据结构与算法A”和“数据结构与算法A(实验班)”统一出题、统一阅卷。平时作业和上机作业由各班根据专业要求灵活掌握,教员协调给出成绩。

注重综合能力的考评,平时表现突出、上机实践能力较强的可以得到奖励加分。

主要教材

参考资料

其它信息

2.教学目的和要求

3)初步掌握稀疏矩阵、广义表等高级线性结构技术,了解Trie结构、AVL树等高级树形结构。

4)对抽象数据类型有深入的理解,能根据所求解问题的性质选择合理的数据结构,设计并完成处理海量数据的复杂应用系统。

3.课程特色

“数据结构与算法”是一门重要的计算机类骨干基础课程。其主要目的是使学生较全面地理解数据结构的概念、掌握各种数据结构与算法的实现方式,比较不同数据结构和算法的特点。通过学习,使学生能够提高用计算机解决实际问题的能力。

在讲授过程中,将调动学生的积极性,采取研究式的学习方法。有些较基础的内容采用学生综述、答辩、小测验的形式,培养学生的自学能力。引导学生跟踪数据结构与算法的前沿应用技术,引入研读论文并作报告的讨论班形式,培养学生的捕捉新理论、新技术的科研能力。

最后的合作大实习题由学生自己提出,并组织团队完成。由助教引导讨论,从需求分析、模块设计、编程实践、调试测试各个阶段进行引导,加强学生们综合应用数据结构和算法知识的能力。

本课程将通过设置的课程网站提供课堂讲义和最新的参考材料。

4.课程内容摘要和知识点

章节

课时

内容摘要和知识点

重要性

1

数据结构和算法简介

2

数据结构定义(逻辑结构、存储结构、运算)

抽象数据类型

算法及其算法度量和评价(大O表示法及其运算规则)

难度

▃▄▅

★★★★★

线性表、栈和队列

8

线性表(向量、链表)

栈和队列(顺序、链接)、栈的应用

根据专业选讲递归到非递归的转换机制和方法

▃▄▅▆

★★★★

3

字符串

4

字符串抽象数据类型,存储表示和类定义

字符串的运算

字符串的模式匹配

▃▄▅▆▇

★★★

二叉树

10

二叉树的概念及性质,二叉树的抽象数据类型

二叉树的周游

二叉树的存储实现

二叉检索树、堆与优先队列、Huffman编码树

★非递归深度优先周游二叉树和穿线二叉树

5

树与森林

树的概念,森林与二叉树的等价转换,树的抽象数据类型

树的周游

树的链式存储,树的顺序存储

6

图的基本概念,图的抽象数据类型,图的存储结构

图的周游(深度优先、搜索、广度优先、拓扑排序)

最短路径问题,最小支撑树(Prim算法、Kruskal算法)

7

内排序

排序问题的基本概念,三种简单排序算法(插入排序、冒泡排序、选择排序)

Shell排序,快速排序,归并排序,堆排序,基数排序

文件管理和外排序

外排序的特点

二路外排序

置换选择排序

9

检索

检索的基本概念

基于线性表的检索

基于集合的检索

散列方法

索引技术

倒排索引

B+树等动态索引组织

★红黑树

11

高级数据结构

广义表

字符树

★AVL树

★伸展树

1)课程基本情况

04830050

数据结构与算法

平时(书面作业、课堂测试)20%,上机(+报告)15%,期中20%,期末40%,考勤和态度5%。

1.张铭、王腾蛟、赵海燕,《数据结构与算法》,高等教育出版社,2008年6月。

2.许卓群、杨冬青、唐世渭、张铭,《数据结构与算法》,高等教育出版社,2004年7月。

3.张铭、赵海燕、王腾蛟,《数据结构与算法习题指导》,高等教育出版社,2005年8月。

4.ThomasH.Cormen,CharlesE.Leiserson,RonaldL.Rivest,CliffordStein,InroductiontoAlgorithms,MITPress,2ndedition,2001.高等教育出版社影印。

2)教学目的和要求

4.对抽象数据类型有深入的理解,能根据所求解问题的性质选择合理的数据结构,设计并完成处理海量数据的复杂应用系统。

3)课程特色

最后的合作大实习题由教师指导学生自己提出,并组织团队完成。由助教引导讨论,从需求分析、模块设计、编程实践、调试测试各个阶段进行引导,加强学生们综合应用数据结构和算法知识的能力。

课程通过设置的课程网站提供课堂讲义和最新的参考材料。

4)课程内容摘要和知识点

★选讲递归到非递归的转换机制和方法

★选讲非递归深度优先周游二叉树和穿线二叉树

★选讲置换选择排序、多路归并选择树

★选讲红黑树

12

★选讲AVL树

★选讲伸展树

数据结构与算法B

DataStructureAndAlgorithmB

信息学院编程能力不太强的学生

计算引论,程序设计实习

考虑到选修B类课程的学生编程能力较弱,会安排助教加强对学生上机实习的辅导。

期中考试、期末考试与学院的《数据结构与算法A》和《数据结构与算法A(实验班)》有60%的基础内容统一出题、统一阅卷,另外40%独立命题。平时作业和上机作业由各班根据专业要求灵活掌握,教员协调给出成绩。

4.算法与数据结构,张乃孝主编,高等教育出版社,2006年1月

5.ThomasH.Cormen,CharlesE.Leiserson,RonaldL.Rivest,CliffordStein,InroductiontoAlgorithms,MITPress,2ndedition,2001.高等教育出版社影印。

“数据结构与算法”是一门重要的计算机类基础课程。其主要目的是使学生较全面地理解数据结构的概念、掌握各种数据结构与算法的实现方式,比较不同数据结构和算法的特点。

树的链式存储

048305170

数据结构与算法实习

PracticeofDataStructuresandAlgorithms

计算机系和智能系

专业必修

2学分

32+80(理论+上机实习)

数据结构与算法A

算法分析与设计

理论与实践结合

理论32学时:教员课堂讲授26小时,学生编程经验交流6小时

学生独立实践80学时:数据结构与算法实验50小时,综合上机实习30小时

平时20%,算法实验20%,综合上机题40%,期末考试20%。

1.张铭、赵海燕、王腾蛟,《数据结构与算法习题指导》,高等教育出版社,2005年8月。

2.张铭、王腾蛟、赵海燕,《数据结构与算法》,高等教育出版社,2008年6月。

3.许卓群、杨冬青、唐世渭、张铭,《数据结构与算法》,高等教育出版社,2004年7月。

5.M.H.Alsuwaiyel,AlgorithmsDesignTechniquesandAnalysis,电子工业出版社影印,2003年1月。

6.B.Kernighan&R.Pike,ThePracticeofProgramming,Addison-Wesley,1999.(中译本:《程序设计实践》,裘宗燕译,机械工业出版社,2000年8月

同修课程:数据结构与算法A

配合“数据结构与算法”理论课程的学习,介绍一些程序风格、设计、测试和排错等软件工程的基本知识和方法;通过一些趣味例题,系统地介绍“数据结构与算法”理论课程涉及到的穷举法、回溯法、贪心法、分治法、动态规划等算法基本思想;介绍图和问题建模、数据结构与算法的应用和实践。

培养学生独立地实现常用基本数据结构的ADT以及相应的STL数据结构,解决一些实际问题,独立编写中小型应用程序。灵活应用基本数据结构,并结合排序、检索、文件、索引等技术,合作编写比较综合的大型应用程,提高学生的实际动手能力。通过本课程的学习,为后续的专业基础课和专业课程打下坚实的基础。

把《数据结构与算法实习》作为辅助《数据结构与算法》的计算机系学生必修课,强化了计算机系学生的实践能力训练。实习课内容划分为C/C++基本程序技巧训练、界面排错和测试、基本数据结构训练、基本算法、数学建模训练5个模块。

从问题求解的角度,培养学生数据结构理论基础、问题数据和算法抽象、数据结构与算法设计的能力。在培养基本问题求解能力的同时,注重实践能力和工程能力的培养,使得学生遵从软件开发的规范性。以项目驱动,从软件工程的角度对学生系统地进行需求分析、数学建模、数据结构与算法设计、程序实现测试调试、文档编写训练。不仅要求进行简单的实现,更要求进行工程实现的设计。学生不仅仅能完成自己承担的开发任务,还能从系统级认识整个项目,积累重大项目的组合、合作协调经验,培养项目组织和管理能力,创造性地解决工程中遇到的问题。

通过典型案例教学,引导学生深入思考,激发创新思想火花,充分调动学生学习的主动性,实现教与学的互动。学生从案例中进行研究型学习,并在研究性学习过程中主动运用所学知识来分析问题、解决问题,根据问题的需求来主动获取新知识,从而强化创新意识和创新能力,相应地提高理论联系实际能力、实践动手能力和科研能力。

简介

数据结构与算法实习简介

C/C++基本程序技巧

界面排错和测试

问题空间和典型的算法思想

数学建模基本思想

程序设计风格

程序的良好风格

程序设计和实现技巧

面向对象技术

STL的基本概念和常用容器

界面技术

人机界面基本原则

排错的技巧

测试

性能

可扩展性

项目管理

项目需求分析

项目开发计划

软件项目的实施(控制)

基本算法与枚举法

问题状态空间的建立

枚举的思想

例题:百钱百鸡、猴子分桃、宴会彩灯、质数方阵

回溯法

递归思想强化

搜索解空间的思想

DFS和BFS搜索策略,分枝限定思想

例题:八皇后,0-1背包,火车进出栈

贪心法

最优子结构分解

最优解的正确性证明

例题:活动安排、可分割背包、区间覆盖

分治法

分-治-合的分治法原理思想

算法复杂性问题

例题:统计逆序对、导线与开关、二进制大整数乘法

动态规划

最优子结构和重复子问题,备忘录方法

各种算法的比较

例题:最优二叉搜索树、最长子序列、邮局问题、最大全1正方形

问题建模

问题建模专题讨论

数学模型

13

图的应用

图模型的建立

图的有效搜索

回溯高级技巧

14

数据结构综合应用

搜索引擎和数据库等应用系统中的线性表、字符串、图等基本数据结构

THE END
1.数据结构和算法数据结构和算法这门计算机必修课历来无论在哪个学校,都是无比乏味和催人入睡的。 但是,小甲鱼决定要投入大量的精力来将这门课程打造成有屎以来最为华丽的,最为欢乐地https://study.163.com/course/courseMain.htm?courseId=468002
2.算法基础Coursera算法代表着用系统的方法描述解决问题的策略机制,北京大学《算法基础》课程将带你一一探索枚举、二分、贪心、递归、深度优先搜索、广度优先搜索、动态规划等经典算法,体会他们巧妙的构思,感受他们利用计算解决问题的独特魅力。顺利完成本课程,你将不但能够掌握这些算法的原理,还能够对这些算法进行灵活应用以及准确实现。本https://www.coursera.org/learn/suanfa-jichu
3.算法设计课程简介算法课设一般做什么算法设计是一门计算机科学的核心课程,旨在教授学生如何设计、分析和优化各种算法,以解决实际问题。该课程不仅涉及具体算法的实现,更注重算法在时间复杂度和空间复杂度上的优化,帮助学生培养编写高效、可扩展代码的能力。 算法设计的学习可以让学生掌握从简单的排序和搜索问题,到复杂的图论、动态规划、分治法等高级算法。在https://blog.csdn.net/m0_52796585/article/details/142836840
4.算法概念的教学9篇(全文)这里重点是通过设计理解算法概念,而不在于算法所涉及问题本身。教学时可以先让学生回顾问题的解题过程,再让他们整理出步骤,并有条理的用自然语言表达出来。通过这样的教学使学生体会算法设计的基本思路。 在例题之后,借助课本中的思考,得出算法的特征,并通过练习促进对算法概念的理解与掌握。通过案例的运用,引导学生体会https://www.99xueshu.com/w/ikeyg30ktwru.html
5.算法教学设计作为一名辛苦耕耘的教育工作者,有必要进行细致的教学设计准备工作,教学设计是对学业业绩问题的解决措施进行策划的过程。那么什么样的教学设计才是好的呢?以下是小编帮大家整理的算法教学设计,希望能够帮助到大家。 算法教学设计1 【教材分析】 本节教材的地位、作用等分析。 https://www.ruiwen.com/jiaoxuesheji/7729127.html
6.算法教学设计精品教案(8页)算法教学设计-精品教案.pdf 8页内容提供方:jijifujiji 大小:627.57 KB 字数:约1.52万字 发布时间:2021-12-05发布于江苏 浏览人气:101 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)算法教学设计-精品教案.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线https://max.book118.com/html/2021/1205/5021000021004132.shtm
7.信息技术八年级初识算法教学设计课题初识算法学科信息技术年级八年级学习目标信息意识:理解计算机处理问题的一般过程;了解流程图计算思维:了解算法的概念;数字化学习与创新:通过自主学习和合作学习提高解决具体生活问题的能力;通过体验观摩形象直观的生活实例,学会建立数学模型。重点算法的概念;流程图的使用难点数学模型的初步建立 http://i.yanxiu.com/user/train/personal/viewHomework.tc?projectid=9242&hwid=25817962
8.《枚举算法》教学设计教学过程: 教学过程 教师活动 学生活动 情景导入 情景: 老师这里有一把锁和一串钥匙(共有8把钥匙),怎样才能知道有哪些钥匙能开这把锁呢? 学生上来尝试 (八把钥匙逐一尝试) 算法定义 解题关键 流程框架 上机运行 我们把解决上述问题所用的方法称为枚举算法。 https://qpez.qpedu.cn/kcjh/jxqjs/208532.htm
9.《用2用口诀求商的算法教学部分我也事先预设了几个教学层次:首先放手让学生独立思考寻找计算12÷3的方法,再通过小组交流,得出多种计算12÷3的商的方法后,进行算法优化,引导学生对各种方法进行比较,最终得到共识:即采用乘法口诀求12÷4的商的办法最简便。然后通过有层次的练习让学生充分体验、掌握用口诀求商的方法。整个https://www.yuwenmi.com/jiaoxuefansi/1508841.html
10.高中数学“算法初步”在VB环境下的教学研究高中数学 算法初步 VB 教学设计 教学研究https://cdmd.cnki.com.cn/Article/CDMD-10635-1020327003.htm
11.九年级信息技术《算法与流程图》教学设计模板教学内容: 知识与技能:(1)了解编制程序解决问题的大致过程(2)了解算法概念,了解流程图(3)会用流程图设计和描述算法。 过程与方法:在自主学习常用的程序流程图符号中了解流程图,在小组合作绘制“计算商品金额”流程图中加强对算法的理解,学习用流程图设计和描述算法。 https://www.oh100.com/kaoshi/jiaoxuesheji/508667.html
12.对计算教学中算法多样化的思考这样的教学,背离了算法多样化的目的。教师应该认真领会,准确把握算法多样化的内涵:算法多样化并不是追求数量上的“多”,尤其在课堂教学中出现的同一个思维层次的算法,教师不能一概叫好,要观察判断学生思维水平是否有质的提升。 误区二:忽略教师的主导作用http://www.360doc.com/content/19/1221/11/28704984_881162152.shtml
13.AlgoCasts用心做好每一个算法视频简明、轻松、易懂的算法教学视频 加入AlgoCasts,和2732位用户一起轻松学算法! 现在加入,即可观看视频程序员找工作指南 介绍视频播客立即注册加入 试看视频 判断单链表是否有环 ?易 最长递增子序列的长度 ?中 简易正则表达式匹配 ?难 雨后盛水量 ?难 https://algocasts.io/
14.《十几减九》教案设计(精选13篇)(1)掌握十几减九的简便算法——破十法或想加做减的思维过程。 (2)体验到计算方法的多样化。 四、教学过程: (一)引入 创设情境 师:华美学校的夏令营中开展了丰富多彩的游园活动,你们想看看当时的情景吗?我们先来看看套圈活动吧! (将教材中的套圈活动投影到银幕上)并复述:我投了13个圈,套中了9个,有几个没https://www.unjs.com/jiaoan/qita/20190607161907_2098041.html
15.“枚举算法”教学实践的几点反思“枚举算法”并没有出现在我们高中信息科技教材上,然而它又是非常普遍和实用的算法之一,因此,在学生已经能够理解并掌握程序设计的三种基本结构之后,我们备课组决定将此纳入课堂,作为循环结构的拓展之一。我也在此基础上进行了教学实践与反思。 教学设计 本节课的教学目标,知识技能方面,要求学生理解枚举法的概念https://www.qpshs.sh.cn/site/73ee013c-6b37-41a3-b0e1-71a0871ff706/detail/3a59efd3-f778-4616-9d9e-6e9053421306_222a947a-688e-46e2-925e-00b84ff8fd4e.html
16.苏教版五年级信息科技《身边的算法》教学设计五年级学生认知发展处于从具象思维到抽象思维的过渡时期,教学中要注重具象内容和抽象内容的关系与平衡。学生作为数字时代的“原住民”,经过两年多的信息科技课程学习和生活中的浸润式接触,已经具备一定的解决问题的能力,甚至很多同学会运用图形化编程软件进行作品的设计与制作。但多数学生尚未建立算法的观念,对于算法的理解https://www.wenmi.ren/Article/ShowArticle.asp?ArticleID=296048
17.捐书活动教学设计(精选11篇)如果学生对连加的算法理解有困难,教师可用方块图来帮助学生直观理解算法。实际教学中,也可以让学生自己尝试酸楚得数后,利用它来验证计算结果。 学情分析: 1、 学生在一年级学习了百以内的连加运算,在本册第六单元又学习了万以内数(三位数)的加法运算。本课正是在两个知识点基础上继续学习的。 https://www.cnfla.com/jiaoxuesheji/1399776.html
18.《连加连减》教学反思(通用18篇)4、在连加、连减、加减混合的算法教学过程中只重视引导数学理解方面的思维,而忽略了让学生开口算,开口读,巩固算法,一年级学生对于学到知识还不能一学就全部明白,必须通过多读才能巩固所学的知识。 《连加连减》教学反思 10 学习完这个单元后,我深深的感到,作为一名教师要有耐心,要把机会让给每一个学生,让每一https://www.jy135.com/jiaoxuefansi/2295859.html