数据结构与算法

课程性质:考试

学分:3.5

分数构成 = 10% 作业与出勤 + 20% 实验 + 70% 期末考试(2022级-2023秋)

关于课程

1. 总体介绍

数据结构与算法是计算机类所有专业的最核心基础课程之一,是计算机解决离散型实际问题的方法论课程,主要分为数据结构和算法两部分,数据结构部分主要介绍线性表、树、图三种常见数据结构;算法部分主要介绍排序和查找两大类最重要算法。本课程具有知识量大、重难点多、知识应用灵活等特点。

课程难度:总体难度较大、区分度较高,想要彻底学懂学透需要花费很大的功夫。

本课程涉及的基础知识与【高级语言程序设计】和【集合论与图论】一脉相承,理解起来不算困难,但是每一章到了后半部分具有一定拓展性的内容难度就会加大,并且重点和核心常常分布在这些部分。(详见后面【学习经验】)

2. 关于授课

  • ZTY
  • 经验极其丰富,Z老师甚至与课程中会讲到的很多算法的创始人大牛们曾经都共事过。讲课风格属于冷幽默,知识点讲述较为清晰,进度安排还算合理(符合学校的进度要求,但是由于课时紧张,某些重难点给的时间还是略少),但是课堂氛围稍显沉闷,偶使人困倦。老师非常耐心,课堂内容每推进一段就会停下来问同学们有无疑惑之处,下课后也会一直留在教室里直到给全部同学解答完疑惑后才走。
  • 课堂没有点名和小测,但是Z老师偶尔会与当堂的同学们自拍合照,不知道算不算签到的一种~
  • PPT会在每一章全部讲完后统一发

  • ZYY

  • 知识点讲解清晰,进度安排合理,有问题可以找老师或助教答疑(线上/线下)
  • 课堂没有点名和小测,有按名单提问环节,但缺勤不会扣分
  • 助教会维护一个在线文档,更新授课PPT、作业、实验和LeetCode推荐题目等内容

3. 关于实验

(2022级-2023秋)

实验一共四次,每次4课时,但是其实每次试验前老师都会提前下发实验内容(少则提前3、4天,最多甚至提前10天),时间比较充裕。

实验内容就是课堂知识的具体代码实现,难度都不大,基本上每一次实验课都是大家把提前写好跑通的代码带过去直接找主教验收,验收完即走,回头交一个实验报告(据说有些老师会要求在实验课之前就完成报告,不过影响不大,报告也不难写)

实验代码只要验收的时候没有bug,讲的稍微清楚一些,报告别太糊弄,几乎都是给满分。实验代码中的关键函数如果实在不会写,PPT里基本上也都有,因此实验部分真的是属于给大家送分了。

4. 关于考试

(2022级-2023秋)

考试范围:课上讲解的全部知识点,大于考研考纲范围

题型:10道选择(10分)+5道填空(10分)+3道简答+3道算法设计 (简答和算法设计我不记得是25+25还是20+30了,敬请后人增删)

难度:广度和深度都很大,并且算法设计题的最后一道具有很强的创新性

给分特点:高分人数很少,区分度很高,绝大部分人的分数分布在75~89之间(统计总体有限可能稍有误差),90分非常难得,95分就有很大几率在除计科以外的专业排名榜首。会捞人,挂科率不到3%。

5. 分数参考

2022级内容编者1 94分 教学班第2 2022级内容编者2 97分 教学班第2

一些可能有用的资源

学习经验

数据结构与算法是最重要的基础,因此学习要求要深入熟练应用

学习过程中会遇到一些一两遍无法理解清楚,需要反复揣摩,甚至弄清楚原理也很难精准记忆的算法,对于实在通过自己努力琢磨不懂的算法,建议去B站找视频。对于所有的算法都不要死记硬背其具体代码实现,需要牢记的是算法的核心思想、基本步骤(宏观而非具体)、优点和不足、注意事项等等,根据算法的思路自己写出代码实现。考试的算法设计题是要求手写代码实现的,因此建议对于比较复杂的算法都在空闲时间去leetcode、洛谷等刷那么几道简单题,目的是加强熟练度,提高根据脑中思路快速写代码的能力。如果时间不充裕,也建议将作业和实验的选做部分和其他主题(通常会让你在几个主题中选择一个)都做一做。

学校统一订购的自编高教版教材(ZY主编)适合夯实基础概念,但是对于那些复杂的算法,讲解稍显混乱并且偶有错误,容易越读越迷。注重听课,老师们的PPT质量很高,图示直观、解释清楚,美中不足在于没有对基本概念的解释,建议以PPT为主要参考资料,配合教材记忆基础知识。

考试的知识覆盖面和知识考查深度都较大,且具有一定的创新性。老师上课讲过的所有知识都是考试范围,大于考研考纲,在学习和复习的过程中切忌自己画重点,一定不要只复习那些自己认为重点的知识,考试时很有可能一道10分大题考查你所谓“冷门”知识的应用(2022级实录),对于每一个算法都要按照以上要求逐步深化。

参考书目

  • [1] 《数据结构与算法分析 C语言实现》 Mark Allen Weiss编著 机械工业出版社
  • [2] 《算法导论》 Thomas H. Cormen等编著 机械工业出版社
  • [3] 《计算机程序设计艺术》—<卷一 基本算法>的后半部分和<卷二 排序与查找> Donald E.Knuth编著 中国工信出版集团 这本书难度太大,不建议在平时学习的时候当作参考书看,建议花大段时间啃读

资源列表