CS自学指南推荐的学习路线是怎样的?

CS自学指南(csdiy.wiki)给出的是一条“工具先行、数学打底、编程入门、系统进阶”的自学路线,整体参考 MIT、UCB、CMU、Stanford 等海外高校的公开课程。它明确把这套规划标注为“一个仅供参考的CS学习规划”,也就是说路线是建议性的,不是必须逐条打卡的硬性课表。适合想系统自学计算机、但不知道从哪门课开始、按什么顺序学的人。

路线整体结构

从网站目录看,内容按下面的顺序组织,基本也对应推荐的推进节奏:

  1. 必学工具:翻墙、Vim、Emacs、Git、GitHub、GNU Make、CMake、LaTeX、Docker、Scoop,以及日常学习工作流、实用工具箱、毕业论文、信息检索、好书推荐。
  2. 数学基础:MIT 18.01/18.02 微积分、MIT 18.06 线性代数、MIT 6.050J 信息论与熵。
  3. 数学进阶:UCB CS70 离散数学与概率论、UCB CS126 概率论、MIT 6.042J 计算机科学数学、MIT 18.330 数值分析、Stanford EE364A 凸优化、信息论与模式识别神经网络。
  4. 编程入门:MIT Missing-Semester、Sysadmin DeCal、Python 语言。
  5. 编程语言:Python、C、C++、Java、Rust、函数式语言(OCaml、Haskell)。
  6. 电子基础:EE16A&B、UCB EE120 信号与系统、MIT 6.007 信号与系统。
  7. 数据结构与算法:UCB CS61B、Coursera Algorithms I & II、MIT 6.006、MIT 6.046、UCB CS170。
  8. 软件工程:MIT 6.031、UCB CS169、CMU 17-803。
  9. 计算机系统基础:CMU 15-213(CSAPP)、Stanford CS110。
  10. 体系结构:Coursera Nand2Tetris、UCB CS61C、ETHz 数字设计与计算机体系结构、ETHz 计算机体系结构。
  11. 操作系统:MIT 6.1810(6.S081)、UCB CS162、NJU OS、HIT OS。
  12. 并行与分布式系统:CMU 15-418 / Stanford CS149 并行计算、MIT 6.5840(6.824)分布式系统。
  13. 计算机系统安全: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 多个版本,选一门跟完比同时开多门更有效。
  • 把“仅供参考”当真:这份规划是作者给出的示例路径,不是唯一解。已有编程基础的人可以跳过编程入门,直接进入数据结构与算法或系统课程。

网站前言部分还包含“自学的好处”“自学的坏处”“这本书适合谁”等章节,说明这条路线默认面向愿意长期投入、能自主安排进度的自学者,而不是需要有人督促的短期速成场景。

csdiy.wiki
CS自学指南