CS自学指南推荐的学习路线是怎样的?
CS自学指南(csdiy.wiki)给出的是一条“工具先行、数学打底、编程入门、系统进阶”的自学路线,整体参考 MIT、UCB、CMU、Stanford 等海外高校的公开课程。它明确把这套规划标注为“一个仅供参考的CS学习规划”,也就是说路线是建议性的,不是必须逐条打卡的硬性课表。适合想系统自学计算机、但不知道从哪门课开始、按什么顺序学的人。
路线整体结构
从网站目录看,内容按下面的顺序组织,基本也对应推荐的推进节奏:
- 必学工具:翻墙、Vim、Emacs、Git、GitHub、GNU Make、CMake、LaTeX、Docker、Scoop,以及日常学习工作流、实用工具箱、毕业论文、信息检索、好书推荐。
- 数学基础:MIT 18.01/18.02 微积分、MIT 18.06 线性代数、MIT 6.050J 信息论与熵。
- 数学进阶:UCB CS70 离散数学与概率论、UCB CS126 概率论、MIT 6.042J 计算机科学数学、MIT 18.330 数值分析、Stanford EE364A 凸优化、信息论与模式识别神经网络。
- 编程入门:MIT Missing-Semester、Sysadmin DeCal、Python 语言。
- 编程语言:Python、C、C++、Java、Rust、函数式语言(OCaml、Haskell)。
- 电子基础:EE16A&B、UCB EE120 信号与系统、MIT 6.007 信号与系统。
- 数据结构与算法:UCB CS61B、Coursera Algorithms I & II、MIT 6.006、MIT 6.046、UCB CS170。
- 软件工程:MIT 6.031、UCB CS169、CMU 17-803。
- 计算机系统基础:CMU 15-213(CSAPP)、Stanford CS110。
- 体系结构:Coursera Nand2Tetris、UCB CS61C、ETHz 数字设计与计算机体系结构、ETHz 计算机体系结构。
- 操作系统:MIT 6.1810(6.S081)、UCB CS162、NJU OS、HIT OS。
- 并行与分布式系统:CMU 15-418 / Stanford CS149 并行计算、MIT 6.5840(6.824)分布式系统。
- 计算机系统安全:UCB CS161、MIT 6.1600、MIT 6.858、ASU CSE3 等。
各阶段在学什么
工具与数学:先解决“能不能学”和“学得动”
必学工具解决的是自学过程中的基础设施问题:怎么获取资料、怎么管理代码、怎么写文档、怎么复现环境。数学基础与数学进阶则提供后续课程需要的微积分、线代、概率、离散数学、数值与优化基础。网站把数学拆成基础和进阶两层,意味着不必等数学全部学完再碰编程,可以按课程依赖并行推进。
编程入门到编程语言:从会写到写得好
编程入门部分以 Python 为主线,配合 MIT Missing-Semester 和 Sysadmin DeCal 补齐命令行与系统管理能力。编程语言部分则按语言分块,每门语言对应具体课程,例如:
- Python:UCB CS61A、CS50P、MIT 6.100L
- C:Harvard CS50x、Duke 的 C 编程专项
- C++:Stanford CS106L、CS106B/X
- Java:MIT 6.092
- Rust:Stanford CS110L、KAIST CS220、KAIST CS431
- 函数式:Cornell CS3110(OCaml)、Haskell MOOC
系统方向:从数据结构一路到分布式与安全
数据结构与算法、软件工程、计算机系统基础、体系结构、操作系统、并行与分布式系统、系统安全,构成一条完整的系统进阶链。典型课程包括 UCB CS61B、MIT 6.006/6.046、CMU 15-213、UCB CS61C、MIT 6.1810、MIT 6.5840 等。这条链的依赖关系比较强:先有数据结构和算法,再进入系统基础与体系结构,之后才适合啃操作系统和分布式系统。
怎么用这条路线
- 按依赖顺序选课,而不是按目录顺序全刷:工具和数学可以随时补,系统类课程建议按“数据结构与算法 → 系统基础 → 体系结构 → 操作系统 → 分布式/安全”推进。
- 每门课只选一个版本:同一主题下网站列了多所学校的课程,例如操作系统有 MIT、UCB、NJU、HIT 多个版本,选一门跟完比同时开多门更有效。
- 把“仅供参考”当真:这份规划是作者给出的示例路径,不是唯一解。已有编程基础的人可以跳过编程入门,直接进入数据结构与算法或系统课程。
网站前言部分还包含“自学的好处”“自学的坏处”“这本书适合谁”等章节,说明这条路线默认面向愿意长期投入、能自主安排进度的自学者,而不是需要有人督促的短期速成场景。