数据结构第一课·课程导入方案

《数据结构》第一课 · 课程导入方案

面向对象:本科二年级学生(首次接触数据结构) 单次课长:90 分钟(含 45 分钟压缩版) 本课目标:不讲定义,只做三件事 —— 建立用途感、建立信心、建立课堂契约


一、设计思路:第一节课不要讲"什么是数据结构"

第一节课最大的浪费,是把 40 分钟花在"数据结构是研究数据之间关系的一门学科"这类定义上。学生记不住定义,只会记住第一节课的感受。

本方案按三层递进组织:

层次 要回答的问题 手段 时长占比
体验层 "这东西长什么样?" 猜数游戏、扑克牌排序 约 30%
意义层 "它和我有什么关系?" 跨领域结构案例(建筑/人体/语言/城市) 约 25%
契约层 "我该怎么跟这门课配合?" 课堂价值的实验证据、课程地图、考核与节奏 约 25%
收束 "第一件事做什么?" 第一个作业 约 10%

一个原则贯穿全程:先具体,后半抽象,最后才抽象。所有抽象概念都必须在课堂里先被学生"身体感受"过一遍。


二、学生真实困惑清单(16 条)

下面每一条都按"学生原话 → 背后真正担心的事 → 一句话应答"整理。建议上课时把这张表印给学生,或在 PPT 上展示,然后说一句:"这些你们想问又不好意思问的,我今天一次讲完。"

A. 价值类:学了到底有什么用

# 学生原话 背后真正担心的事 一句话应答
1 "学这个有什么用?我以后又不写算法。" 抽象结构与具体业务之间的连接看不见 它练的是结构化思维——一种在写代码之前就已经在用的通用能力;先用游戏让你自己感觉到
2 "工作里谁还手写链表?" 分不清"理解"和"实现" 你可以不手写,但你必须能判断——什么时候该用哈希表、什么时候该用堆
3 "框架都封装好了,我调 API 不就行了?" 把"会用"当成"懂了" 线上性能事故,最后都要回到结构选择上;封装替你实现,不替你判断
4 "我不做开发,做测试/产品,学它干嘛?" 担心投入产出比 结构化表达是通用职业技能(金字塔原理、MECE),和数据结构是同一个脑子的两种用法

B. 学习方式类:为什么要来课堂

# 学生原话 背后真正担心的事 一句话应答
5 "网上有更好的课,为什么要来教室?" 课堂的不可替代性从未被证明 用实验数据回答:主动学习让挂科率降低 55%;MOOC 完成率只有 3.13%(见第四部分)
6 "听懂了,但自己做不出来。" 懂 ≠ 会,这是最普遍的挫败 课堂专门处理"你卡住的那 30 秒",这恰恰是一对一辅导有效的核心机制
7 "一节课没跟上,后面就全崩了。" 怕节奏被甩下 第一个课就讲清"预习—课堂—复盘"的节奏契约,让进度可预测

C. 难度与信心类

# 学生原话 背后真正担心的事 一句话应答
8 "我 C 语言和指针很烂,是不是注定学不好?" 自我设限 教育实验证明:绝大多数人都能达到高水平,缺的是条件不是天赋(Bloom 1984)
9 "递归太抽象了,脑子转不过来。" 缺少心理表征,不是缺少智商 用汉诺塔和扑克牌先建立身体记忆,再形式化
10 "这么多结构,我记不住哪个是哪个。" 把它当成记忆任务 核心结构只有四大类(线性、树、图、哈希/散列),真正的考点是"选择依据"不是"背诵清单"

D. 与 AI 的关系(这一代学生最真实的困惑)

# 学生原话 背后真正担心的事 一句话应答
11 "AI 一秒钟就能写出快排,我背它有啥用?" 我的比较优势到底在哪 人类负责选择什么抽象、判断什么取舍,机器负责实现(Wing 计算思维,2006)。不会判断的人,连 AI 给的答案对不对都不知道
12 "让 AI 写就行了,我只要会提需求。" 把 AI 当拐杖而非搭档 AI 会给你一个能跑的答案,但不会替你承担线上事故;这门课教你审 AI 的作业

E. 考试与后续

# 学生原话 背后真正担心的事 一句话应答
13 "期末怎么考?刷题能过吗?" 想要一条可控的投入路径 第一节课就把考核方式、及格线、优秀线讲明白,别让他们猜
14 "这门课和操作系统、数据库、编译原理什么关系?" 脑子里没有知识地图 画出后续课程依赖图(见第六部分课程地图)
15 "学完就忘,怎么办?" 对遗忘的无力感 间隔重复 + 课堂检索练习,这两件事有百年实证支持
16 "教材伪代码和能跑的代码不一样,学哪个?" 抽象层级混乱 伪代码是思想层,代码是工程层;先思想后工程,两个都要

给老师的提示:第 5、8、11、12 条是这一代学生真正的痛点。建议这四条不要一口气讲完,而是分散在课程里逐层回应——第一节课先给"答案的影子",后面每讲到对应章节再收一次网。


三、核心论点:数据结构训练的是"结构化思维"

这是回应第 1 条困惑的正面论证。分三层讲,从现象到机制再到能力。

3.1 现象层:结构无处不在

教学建议:不要说"结构思维很通用",直接把例子摆出来,每个例子只讲 30 秒,让密度本身产生说服力。

领域 结构形态 权威出处 课堂上讲这一句
建筑与城市规划 树 vs. 半格(semi-lattice) Christopher Alexander, A City is Not a Tree, Architectural Forum, 1965 1965 年就有建筑师在吵"城市不是树、是半格"——数据结构里树与图的区别,规划师早就在为它付出代价
建筑 → 软件 模式语言 → 设计模式 Alexander, A Pattern Language, 1977;GoF Design Patterns, 1994 自述受其启发 计算机界最著名的"设计模式",直接借自建筑师亚历山大
人体解剖 组织层次:化学→细胞→组织→器官→系统→个体 Marieb & Hoehn, Human Anatomy & Physiology;Gray's Anatomy 人体教材第一章讲的就是"结构层次"——你的身体是一棵倒过来的树
血液循环 / 呼吸 分形分枝网络 West, Brown & Enquist, Science 276:122 (1997) 血管做成树,是为了用最小的能量把氧送到每个细胞——这就是"树形结构的效率优势"
人类语言 句法树、递归嵌套 Chomsky, Syntactic Structures, 1957 "我知道你以为他说……"句子套句子,正是递归定义;树是人类语言的底层结构
生物分类 分类树(域界门纲目科属种) Linnaeus, Systema Naturae, 1735 生物学家是最早的"树结构重度用户"
复杂系统与组织 层级 = 近可分解系统 Herbert A. Simon, The Architecture of Complexity, 1962 钟表匠 Hora 把 1000 个零件拆成 10 个一组,效率比 Tempus 高约 4000 倍——组织结构、模块化、微服务,都是同一件事
地图导航 图 / 最短路 Dijkstra, Numerische Mathematik 1:269 (1959) 你的导航每秒上亿次运算,核心是 1959 年那个图算法
社交网络 图 / 小世界 Milgram, The Small World Problem, 1967 "六度分隔"说的就是一张图的直径
法律 层级条款 + 检索索引 法典的章—节—条—款—项层级;法律检索系统的倒排索引 找一个法条 = 一次树搜索;法律检索系统 = 倒排索引
化学 分子图(原子=顶点,键=边) 化学图论的标准表述 分子式本身就是一张图,化学家靠拓扑判断手性
结构化表达 金字塔 / 树形论证 Barbara Minto, The Minto Pyramid Principle 咨询顾问的第一课:先讲结论,再给三个理由——这就是一棵树

课堂落点一句话(建议写在黑板上):

结构不是计算机科学的发明,是人类理解复杂事物的默认方式。这门课只是把它变得精确、可度量、可实现。

3.2 机制层:为什么"有结构"的东西会赢 —— 钟表匠寓言

这是最有说服力、也最适合第一节课讲的故事,出自 Herbert A. Simon(1978 年诺贝尔经济学奖、1975 年图灵奖得主)1962 年的论文《The Architecture of Complexity》。

故事:两个钟表匠 Tempus 和 Hora 都做 1000 个零件的表。差别只在装配方式:

Simon 的计算结果:如果被打断的概率是 0.01,Hora 完成同样多的表,平均比 Tempus 快约 4000 倍。

Simon 由此提出"近可分解系统"(nearly decomposable systems):系统内部的强连接聚集在子系统内部,子系统之间是弱连接。他认为这正是复杂系统(自然界、社会、工程)几乎普遍呈现层级结构的原因——不是因为层级更美,而是因为没有层级的复杂系统根本没时间进化出来。

课堂上直接对上数据结构:

参考话术:"同学们,你们从小被要求'做事要有条理',但没人告诉过你——有条理在数学上是能算出更好结果的。今天这门课,就是给'有条理'装上刻度。"

3.3 能力层:这是可迁移的通用能力

教师可用的收束句:这门课教的东西,一半你会用在代码里,另一半你会用在人生里——但你在第一节课还看不出来。所以我给你们一个学期,慢慢验证。


四、为什么来课堂:把"课堂优于网课的地方"证明给学生看

这是回应第 5 条困惑的核心板块。关键提醒:不要讲情怀,讲数据。 学生在数据面前非常讲道理。

4.1 四组可以打在 PPT 上的数据

数据 内容 出处
主动学习 vs. 传统讲授 元分析 225 项研究:主动学习使考试成绩平均提高约 0.47 个标准差(约半个等级),而传统讲授课堂的挂科率比主动学习课堂高 55% Freeman et al., PNAS 111(23):8410–8415, 2014
感觉学习 vs. 实际学习 随机分组、内容完全相同的对比实验:学生在主动学习课堂里学得更多,但自己感觉学得更少;认知努力被误读为"学得差" Deslauriers et al., PNAS 116(39):19251–19257, 2019
MOOC 的真实完成率 哈佛/MIT 在 edX 上的 565 门课、1267 万次注册:2017–18 年完成率仅 3.13%,且 6 年间不升反降;52% 的注册者一份内容都没打开过,即使付费学员完成率也只有 46% Reich & Ruipérez-Valiente, Science 363(6423):130–131, 2019
一对一辅导的上限 接受一对一辅导的学生,平均成绩比传统班级学生高 2 个标准差,即超过 98% 的传统课堂学生;Bloom 称之为"2 Sigma 问题" Bloom, Educational Researcher 13(6):4–16, 1984

Deslauriers 那一条建议放在最前面讲,因为它太"反直觉"了。 该论文作者之一 Greg Kestin 就明确说自己在开学第一节课就给自己的学生看这个研究数据,让学生理解"自己参与"的重要性。你可以照做。

4.2 讲清"课堂到底多给了什么"(六条,逐条对应网课给不了的)

课堂独有 网课为何给不了 对应机制来源
即时纠错 视频不能在你写错的那一秒喊停 Bloom 指出这是辅导有效的首要机制:错误当场修正,而不是累积
认知冲突 没人反问你"你确定吗" 被问住的那一刻才是真正开始学习的地方
同伴解释 独自看视频没有解释的对象 费曼技巧:讲给别人听,才暴露自己没懂的地方
被校准的脚手架 网课不知道你现在该跳多高 老师的工作是调节"难度梯度",不是传递信息
进度管理 网课最难的是"明天再来" MOOC 52% 的人连内容都没打开——这是自律的成本
可验证的反馈 网课作业常无反馈或反馈延迟数周 反馈的时效性决定学习效率

4.3 一个重要的话术转向:不要贬低网课

让学生反感的不是"网课不好"这种说法,而是老师站在对立面。建议这样讲:

"我不会说网课不好,我自己也看网课。你们真正的问题不是'要不要上网课',而是分工错了。网课擅长讲清楚一件事——它把'知识传递'做到了极致,而知识传递恰好是这十年贬值最快的东西。课堂的价值在另一件事上:它是你唯一会被卡住、被追问、被当场纠正的地方。

一句话:网课给你答案,课堂给你卡住之后的那一步。"


五、四个课堂游戏(扑克牌为主,全程零成本)

道具:扑克牌若干副(去掉大小王)、计时器、黑板/白板。

游戏 0(开场钩子):40 张牌的排列数 —— 3 分钟

做法:手里拿一副牌,抽 40 张,问全班:

"这 40 张牌有多少种排列方式?40 × 39 × 38 × …… × 1,也就是 40 的阶乘。这个数是 8 后面跟 47 个零。 今天全世界最快的超级计算机,每秒大约能算 10 的 18 次方次。让它从宇宙大爆炸那一刻开始算,一刻不停地算到今天——连这个数的亿分之一都算不完。 可是你们打牌的时候,理一把牌只要三秒钟。 人类凭什么三秒钟做完机器算不完的事?这就是这门课一个学期要回答的问题。"

为什么这个开场有效:它给出了一个真实的、可验证的、反直觉的悬念,而且答案不是"因为人聪明",而是"因为人用了结构"。整门课都是这个悬念的展开。

游戏 1:猜数 —— 二分查找,7 分钟,全员参与

做法:

  1. 老师心里想一个 1–100 之间的整数。
  2. 学生轮流提问,老师只回答"大了"或"小了"或"中了"。
  3. 把一个学生数数的话轮记在黑板上。

引导步骤:

落点:同样的数据,不同的组织方式,成本差 3000 万倍(100 vs. 30 只是表面数字,真正的对比是"线性"和"对数"两条曲线的形状)。这就是"结构决定效率"。

游戏 2:扑克牌排序 —— 三种策略的体感对比,15 分钟,分组

分组:4 人一组。每组发一副洗好的牌,取前 13 张。组内角色:2 人当"处理器"(用手操作牌)、1 人计时、1 人当"计数器"(记录比较次数)。

规则:处理器只允许做两个动作 ——(a)翻开两张牌比较大小;(b)交换两张牌的位置。不允许一眼扫完直接排好。

三个回合,同一副牌,三种策略:

回合 策略名称 操作方式 预期现象
A 选择排序 每轮从剩下的牌里找出最小的那张,放到已排好区的末尾 比较次数固定且多,操作笨重,容易数不清
B 插入排序 像斗地主理牌:摸一张,插到手里合适的位置 对"已经比较有序"的牌特别快;一上来就很快上手
C 归并排序 两人一组:每人先把自己那 6–7 张排好,然后把两堆"已经有序的"合并成一堆 合并时几乎不需要比较,明显更快

引导与板书:

这里一定要回扣 Simon 的钟表匠:"Hora 把表拆成小组件,归并排序把牌拆成小有序段。你们今天上午已经亲手做了一次 Simon 1962 年的论文。"

游戏 3:斗地主理牌的直觉 = 插入排序 —— 穿插在游戏 2 中,1 分钟

做法:在回合 B 结束后问一句:"为什么大家理牌都是'摸一张插进去',而不是把 13 张全部摊开、重新挑一遍?"

学生答不上来,但他们的手已经选对了。此时说:

"你们的直觉已经选出了插入排序。这门课要做的事,只是给直觉装上刻度——让你以后能说清楚'为什么这样更快',以及在什么情况下这个直觉会失效。"

这句话是第一节课很重要的心理锚点:它把学生的既有直觉从"可能错的经验"变成"可以被验证的资产",对建立信心非常有效。

游戏 4(备用):找座位 —— 哈希与冲突,5 分钟

做法:把全班按"学号后两位除以 10 的余数"分成 10 组。

观察:有的组挤了 8 个人,有的组空着。

追问:

落点:哈希表的核心矛盾是"空间换时间"和"冲突必然存在"。这是唯一一个学生每天都在用(字典、缓存、数据库索引)却完全不知道名字的结构。

游戏 5(可选,若时间富裕):汉诺塔 —— 递归,5 分钟

3 个盘子最少几步?→ 7 步。4 个?→ 15 步。规律:2^n − 1。

落点:"递归不是难,而是你还没学会'把大问题交给小一号的自己'。这门课会给你三次机会学会它。"


六、90 分钟完整流程表

时间 环节 内容 目的
0–3 开场钩子 40 张牌的 40! 悖论 制造悬念,不讲任何定义
3–8 自我介绍 不用念简历。讲一件"我用一个数据结构的想法解决了一件小事"的真实经历 用真实感替代权威感
8–15 困惑收集 现场问卷/举手:"这门课你最想问的是什么?"把答案归类投影,与第二部分的 16 条对照 让学生知道"你的困惑被认真对待了"
15–22 游戏 1 猜数 → 二分查找 → 2^30 第一次亲手摸到"效率"
22–37 游戏 2 扑克牌三种排序策略对比 亲手体验算法差异
37–47 复杂度引入 三回合数据对比 + O(n²) vs O(n log n) + 回扣钟表匠 把体感转成可度量的语言
47–62 结构无处不在 12 个跨领域案例(每个 30 秒)+ 钟表匠寓言详讲 回答"学了有什么用"
62–72 为什么来课堂 四组数据 + 六条机制差异 + "网课给你答案,课堂给你卡住之后的那一步" 建立课堂契约
72–82 课程地图 本课在知识体系中的位置、后续课程依赖图、考核方式、节奏契约、学习资源与工具 让投入路径可预期
82–90 收尾 布置第一个作业 + 一句话寄语 留下第一步行动

45 分钟压缩版

时间 环节
0–3 开场钩子(40! 悖论)
3–8 困惑收集(快速举手,只取前 5 条)
8–15 游戏 1:猜数 → 二分查找
15–25 游戏 2:扑克牌排序(只做回合 A 和 C,对比最明显)
25–33 结构无处不在(压缩到 5 个案例:建筑、人体、语言、组织、导航)+ 钟表匠一句话
33–41 为什么来课堂(只讲 Freeman 和 MOOC 两组数据)+ 课程地图 + 考核
41–45 作业 + 寄语

时间不够时的取舍优先级(按"可以砍"排序):

  1. 先砍游戏 5(汉诺塔)和游戏 4(哈希找座位)
  2. 再砍跨领域案例(12 → 5)
  3. 再砍游戏 2 的回合 B
  4. 不能砍:开场钩子、游戏 1、钟表匠、MOOC 数据、第一个作业

七、关键话术逐字稿(可直接念)

① 回应"学这个有什么用"

"你们问的其实是两件事。第一件事是'我以后用不用得上'——这个我诚实回答:你大概率不会手写红黑树。第二件事是'这门课到底在训练我什么'——这个答案比第一件重要得多。 它训练的是你处理复杂事物的方式。你将来要处理的不是数组和链表,是一份 200 行的业务需求、一个 8 个人的项目、一个 30 平的房子、一份 3 万字的报告。这些东西有一个共同点:你不可能一次装完一千个零件。 这门课教你的是:怎么拆、拆到什么程度、拆完之后怎么拼回来、以及什么时候不该拆。"

② 回应"AI 都会写了,我背它干什么"

"AI 会给你一个能跑的答案。它不会告诉你:这个答案在数据量涨到一千万条的时候会不会崩,也不会在半夜两点替你承担责任。 更现实的一点是:如果你看不出 AI 的答案哪里不对,你就没有资格用 AI。 而这门课给你的,恰好是那个判断力。 顺便说,AI 也是在这门课的知识体系里被造出来的——你正在学的是它的地基。"

③ 回应"为什么不能只看网课"

"我不反对网课。我只说一句:网课把知识传递做到了极致,而知识传递是这十年贬值最快的东西。 有个实验特别值得你们知道:研究者把学生随机分到两组,学的内容完全一样,一组是名师讲授,一组是要自己动手。结果是——动手的那组实际学得更多,但自己感觉学得更少。因为费力会被大脑误读成'没学好'。 所以这门课会有很多让你觉得'有点累'的环节。如果某一节课你觉得很轻松很享受,那可能不是好事。"

④ 收尾寄语

"最后一个问题:你们觉得这门课最后考的是记住多少种数据结构吗? 不是。这门课考的是——给你一个没见过的问题,你能不能在十分钟内说出'它长得像什么结构'。 这个能力,从今天你们排那 13 张牌的时候就已经开始了。"


八、第一节课 PPT 页面清单

页码 页面内容
1 封面:课程名 / 教师 / 学期。不要艺术字
2 一个大数字:40! = 8×10^47,一行小字:"超算从宇宙诞生算到现在,算不完它的亿分之一"
3 "人类三秒做完机器算不完的事——凭什么?"
4–6 学生的困惑(直接投影学生的原始提问截图/手写)
7 游戏 1 规则截图 + 一张"猜数轮次"记录表
8 2^7 = 128、2^30 ≈ 10^9、100 vs 30 三条
9 游戏 2 规则:只许比较和交换
10 三个回合的比较次数柱状图(现场填数)
11 O(n²) vs O(n log n);n = 100 万时的 3 小时 vs 0.2 秒
12 钟表匠 Tempus 与 Hora 的对比图 + "快 4000 倍"
13–16 跨领域结构案例(建筑 / 人体 / 语言 / 组织 / 导航,每页 1–2 个)
17 "结构不是计算机科学的发明" 大字页
18 Freeman 2014 数据:挂科率高 55%
19 Deslauriers 2019 数据:学得更多,感觉更少
20 MOOC 数据:1267 万次注册,完成率 3.13%
21 "网课给你答案,课堂给你卡住之后的那一步"
22 课程地图:本课与后续课程的关系图
23 考核方式与节奏契约
24 第一个作业 + 联系方式

九、第一个作业(建议不叫"作业",叫"任务")

任务:找出你身边的 3 个数据结构。

要求:拍一张照片或截一张图,配一句话说明它是什么结构、为什么。示例(课上只给 2–3 个,剩下的留白让学生自己想):

加分项(可选):用一副扑克牌给你的家人或室友讲明白一个排序算法,录一段 30 秒的视频。允许失败,允许讲错——重点是把"讲"这个动作做出来。

为什么这个作业重要:它把整门课的立场固定下来——这门课不是从课本里学,是从你身边学。同时它让每个学生在第一周就产生"我发现了一个东西"的正反馈,这对建立信心比任何鼓励的话都有效。


十、给老师的操作提示

准备清单

四个常见翻车点

  1. 不要在第一节课讲抽象定义。 "数据结构是研究……"这一句可以留到第二节课。第一节课的定义应该由学生自己总结出来。
  2. 不要花超过 5 分钟讲考核细则。 学生只需要知道"怎么及格、怎么优秀、什么时候交什么",多讲一分钟都是在消耗第一节课的势能。
  3. 不要否定学生的直觉。 游戏 3 的价值就在于告诉他们"你的直觉是对的,只是没有刻度"。一旦变成"你们想的不对",信心就崩了。
  4. 不要在"为什么来课堂"这一板块讲情怀。 讲数据、讲机制、讲分工。情怀留到学期末。

一个可以放进备课夹的判断标准

第一节课结束时的最佳状态不是"学生觉得老师讲得好",而是"学生想知道 40 张牌到底有多少种排法,以及为什么归并排序能更快"。留下一个他们自己在课上没能完全解决的问题,比讲透一个知识点更值钱。


十一、权威出处与参考文献

教学方法与学习科学

  1. Bloom, B. S. (1984). The 2 Sigma Problem: The Search for Methods of Group Instruction as Effective as One-to-One Tutoring. Educational Researcher, 13(6), 4–16.
  2. Freeman, S., Eddy, S. L., McDonough, M., Smith, M. K., Okoroafor, N., Jordt, H., & Wenderoth, M. P. (2014). Active learning increases student performance in science, engineering, and mathematics. PNAS, 111(23), 8410–8415. DOI: 10.1073/pnas.1319030111
  3. Deslauriers, L., McCarty, L. S., Miller, K., Callaghan, K., & Kestin, G. (2019). Measuring actual learning versus feeling of learning in response to being actively engaged in the classroom. PNAS, 116(39), 19251–19257. DOI: 10.1073/pnas.1821936116
  4. Reich, J., & Ruipérez-Valiente, J. A. (2019). The MOOC pivot. Science, 363(6423), 130–131. DOI: 10.1126/science.aav7958
  5. Crouch, C. H., & Mazur, E. (2001). Peer Instruction: Ten years of experience and results. American Journal of Physics, 69(9), 970–977.
  6. Miller, G. A. (1956). The Magical Number Seven, Plus or Minus Two. The Psychological Review, 63(2), 81–97.
  7. Roediger, H. L., & Karpicke, J. D. (2006). Test-Enhanced Learning: Taking Memory Tests Improves Long-Term Retention. Psychological Science, 17(3), 249–255.
  8. Cepeda, N. J., Pashler, H., Vul, E., Wixted, J. T., & Rohrer, D. (2006). Distributed practice in verbal recall tasks: A review and quantitative synthesis. Psychological Bulletin, 132(3), 354–380.

结构化思维与跨领域结构

  1. Simon, H. A. (1962). The Architecture of Complexity. Proceedings of the American Philosophical Society, 106(6), 467–482.
  2. Wing, J. M. (2006). Computational Thinking. Communications of the ACM, 49(3), 33–35.
  3. Alexander, C. (1965). A City is Not a Tree. Architectural Forum, 122(1), 58–62(Part I); 122(2), 58–62(Part II).
  4. Alexander, C., Ishikawa, S., & Silverstein, M. (1977). A Pattern Language: Towns, Buildings, Construction. Oxford University Press.
  5. Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
  6. West, G. B., Brown, J. H., & Enquist, B. J. (1997). A General Model for the Origin of Allometric Scaling Laws in Biology. Science, 276(5309), 122–126. DOI: 10.1126/science.276.5309.122
  7. Chomsky, N. (1957). Syntactic Structures. Mouton.
  8. Milgram, S. (1967). The Small World Problem. Psychology Today, 2(1), 60–67.
  9. Minto, B. (1987). The Minto Pyramid Principle: Logic in Writing, Thinking and Problem Solving. Minto International.
  10. Marieb, E. N., & Hoehn, K. Human Anatomy & Physiology. Pearson.("组织层次":化学水平→细胞→组织→器官→器官系统→个体)
  11. Linnaeus, C. (1735). Systema Naturae.

计算机科学本体

  1. Dijkstra, E. W. (1959). A note on two problems in connexion with graphs. Numerische Mathematik, 1, 269–271.
  2. Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). MIT Press.

十二、一句话总结

第一节课的任务不是让学生"知道数据结构是什么",而是让他们怀疑自己原来的那个问题——"学这个有什么用"。 当学生开始问"归并排序为什么能快 5 万倍"的时候,这门课就已经成功了。