数据结构与算法设计
TIP
2025-2026-1 学期的数据结构与算法设计是 3.5 学分,看样子可能会把计算理论的内容拆出去吧?
课程评价
数据结构是最经典的八股课,永垂不朽的八股课。
课程内容
虽然他叫"数据结构与算法设计",但实际上还融合了第三部分"计算理论"。
数据结构按照目前的内容设置是《数据结构》《算法设计》《计算理论》三本书,但是 80 学时 5 学分,可以说是非常拥挤了。这个计算理论放进去就是很突兀啊,不说学生学不学的完,正常带课的老师也很难带完,教学大纲也是只讲了四章大概是皮毛的东西。
然后放到考试里就是 4 个概念小题加一个泵引理证明。
数据结构与算法设计两个部分的内容倒是没有什么诟病的地方,最多就是某些名词取得比较个性化。
考核方式
1. 乐学
乐学上的题目质量烂应该也是共识了。具体体现在:
数据范围及数据类型不标注
例如:题目平面最近点对数据是浮点数类型的,但是样例都是整数类型的,如果你不使用
double
类型会被 IO 卡 TLE。题意不清楚
例如:题目股票撮合系统,这题对买入和卖出的限制是不对称的,而且逻辑非常反人类。如果没能抄到学长的源码,我相信很少有人类能通过这题。
有些题目明明是在实现数据结构,但是所对应的过程输出必须要求与题设答案一致。
网站自身问题
如格式显示、判题速度慢的网站自身原因。
2. 考试题目设计
选择题:
数据结构的考试题目选择题喜好出死扣字眼的概念题,也就是俗称的八股。特点就是繁杂且细碎,还喜欢给模棱两可的。有些选项看了就生理不适,就是会造出两个都很对的答案,而且你还知道这俩答案他是想从哪个方向坑你,形似高中生物。
例如:第一题:"线性表中的所有元素都有前驱/后继"。这个应该是错的吧,但是我当时想的是:就算第一个元素没有前驱,你在定义类似于双向链表的元素的时候,你会特意给第一个 node 不设 prev 指针吗,你会特意给最后一个 node 不设 next 指针吗,那你纠结于这个东西的前驱后继到底有什么意义呢。反正我看这个就特别不适,你明明知道他是在这个地方恶心人,还在这个地方纠结。
简答题:
反人类的手写代码。如果是上机的话大部分题目 5 分钟不到就能做完吧,但是手写代码又为自己撰写的步骤加上了一点神秘色彩,既要写思路分析还要写代码。正常来说代码肯定会在行前行后加修正的东西的,而手写代码却只能因此把卷面变得乱七八糟涂涂改改。见过的没有不喷的。
另外有一道反人类的题令人十分印象深刻,他要求脑子输出 Bellman-Ford 的所有中间变量。一个 O(nm) 复杂度的算法每次还要输出规模为 n 的变量,更何况 Bellman-Ford 实际上是没有考虑任何贪心情况下的朴素递推,人脑是没法跟着最优状态走的,除了恶心人实在搞不懂意义何在。难道能把中间变量输出的一丝不差的人脑肉编器就是掌握了数据结构的好人才吗。
有些大粪真的是从小吃到大的。从自己做过的 2019-2020 的 CSP-J/S 初赛,到信息技术的高考。再到大学的《C 语言程序设计》《数据结构》,以及未来可能面对的 408 八股,出题人都在用一脉相承的方法去恶心人,在知识点细微之处埋坑,把本身承载着自由意志的计算机科学变成了死记硬背的新时代八股。
数据结构或许是国内教育的集大成者,也是国内计算机教育最典型的缩影,也只是悄悄地告诉我之前的幻想都是假的罢了。
更可怕的是,数据结构只是一个开始,后面还有更加反人类的课程。
复习方式
八股课的考核内容就注定了是不好复习的。
因为无论你怎么复习,他总能在你没复习到的角落挖一个概念题给你,就算挖出来了之后,他还会按照他所理解的方式去模糊概念,让你在两个选项之间纠结。
数据结构这门课还好,有比较多的数据结构模拟题目(就是给具体的数据,然后给出对应的数据结构结果)。
如果你掌握了课内的数据结构、算法,懂了泵引理,那你基本能拿到 90 分了。
那剩下的 10 分呢,只能看天命了,复习到了就有,复习不到就没有。
老师评价
老师本人教学水平应该不算差,不过大部分时间都是在念 PPT。上课效果一般。听课的人感觉比较少。最后是把课程要求的章节都讲完了,别的有老师好像到最后都没讲完。
高春晓老师是比较亲和的一位老师,私下钉钉里问问题她很多时候都是秒回的,印象比较深刻。个人因为自己的原因找老师请过若干次假也直接通过了。