首页
/ cs-self-learning CS 自学指南:三年计算机自学生涯的规划蓝图与课程筛选方法

cs-self-learning CS 自学指南:三年计算机自学生涯的规划蓝图与课程筛选方法

2026-09-03 18:53:22作者:卓炯娓

本文解读 CS 自学指南(cs-self-learning)仓库的前言章节 docs/index.en.md:它阐述了作者三年大学自学生涯如何从一门 Python 入门课起步、这本指南为何而写、自学的收益与代价,以及它面向哪类读者。读完本文,你将掌握该指南的课程体系组织逻辑(可通过 mkdocs.yml 的完整导航验证)、四类读者的使用路线,以及以 MkDocs Material 构建中英双语文档站的工程细节。

这本书讲了什么:五大部分的内容地图

作者在前言中说明,这是一本"计算机自学指南",同时也是对其大学三年自学生涯的纪念,并献给北大信科学弟学妹。书中目前组织为五个部分:

  1. 本书使用指南:由于书内资源众多,作者根据不同人群的空闲时间和学习目标,编写了 docs/使用指南.md。该指南将读者分为三大类——大一新生、需要"化繁为简"的考研/工作人群、以及已有扎实基础想深入某一方向的读者,每类都给出了对应的选课建议。
  2. 一份供参考的 CS 学习规划:见 docs/CS学习规划.md,是作者基于自身自学经历制定的全面、系统化的自学规划,涵盖必学工具、好书推荐、环境配置与完整课程地图。
  3. 必学工具(Productivity Toolkit):IDE、科学上网、StackOverflow、Git、GitHub、Vim、LaTeX、GNU Make 等效率工具。仓库中对应的文档位于 docs/必学工具/ 目录,如 docs/必学工具/Git.mddocs/必学工具/CMake.mddocs/必学工具/Docker.md 等,并包含日常学习工作流、实用工具箱、毕业论文写作与信息检索等延伸主题。
  4. 好书推荐(Book Recommendations):作者强调好教材的重要性("读过 CSAPP 的人都知道好书的重要"),在 docs/好书推荐.md 中列举了各计算机领域值得读的书与资源。
  5. 高质量 CS 课程汇总:这是全书的核心——作者将其上过的以及社区贡献的高质量课程分门别类汇总,给出自学建议,且大部分课程配有独立仓库维护资源与作业实现。

mkdocs.ymlnav 配置可以完整看到这套课程地图的实际规模与组织方式:从数学基础(MIT 18.01/18.02 微积分、18.06 线性代数、6.050J 信息论)、数学进阶(UCB CS70、MIT 6.042J、凸优化)、编程入门(Python/C/C++/Java/Rust/函数式语言多轨道)开始,依次覆盖电子基础数据结构与算法(CS61B、MIT 6.006、6.046)、软件工程计算机系统基础(CMU 15-213/CSAPP)、体系结构(Nand2Tetris、CS61C、ETHz)、操作系统(MIT 6.S081、UCB CS162)、并行与分布式系统(MIT 6.824)、系统安全计算机网络数据库系统编译原理编程语言设计与分析计算机图形学(GAMES101/103/202)、Web 开发数据科学人工智能机器学习机器学习系统深度学习深度生成模型(含大语言模型子目录)直至机器学习进阶。值得注意的是,导航中刻意保留同一方向的多所高校课程(例如操作系统含 MIT、UCB、南大、哈工大四门课),这正是前言中"从不同视角学习"理念的落地:不同讲师对同一知识有不同的观点,交叉学习可以拓宽视野。

梦开始的地方:CS61A 与"好课"的标准

前言中最具叙事性的部分是作者在"梦开始的地方"对 UC Berkeley CS61A 的复盘。作者大一时对计算机一无所知,只会用笨重的 IDE 新建命令行项目,陷入 cincoutfor 循环之后 CE/RE/WA 的重复挫败中,甚至留下了一个 1200 行、无头文件、无类抽象、无单元测试、无 Makefile、无版本控制的 C++ 文件。大一寒假接触 CS61A(一门基于 Python 的伯克利大一导论课)后,作者在 3 周内学完课程,从此爱上了自学。

作者特意从纯学生视角拆解了这门课值得称道之处,这四点实际上也是该指南筛选课程的隐性标准:

  • 课程组自建的课程网站:网站整合了全部课程资源——条理分明的课程 schedule、所有 slides/录像/作业链接、详细的给分说明、历年考题与解答。资源公正透明,对自学极其友好。
  • 开课教授亲写的教材:教授将 MIT 经典教材 Structure and Interpretation of Computer Programs(SICP,原版基于 Scheme)改编为 Python 版本(Gentle Introduction to Programming Using Python),保证课堂与教材一致并补充更多细节,全书开源可在线阅读。
  • 丰富且有趣的作业体系:14 个 lab 巩固随堂知识,10 个 homework,外加 4 个代码量上千行的 project。与传统的 OJ 题和 Word 文档作业不同,每个作业都有完善的骨架代码和"保姆级"handout 说明、全自动评分脚本,课程组还专门开发了自动化的作业提交评分系统(okpy)。针对"代码大多由助教写好能学到什么"的质疑,作者的回答是:对刚接触计算机、连装 Python 都磕绊的新手,骨架代码让其专注核心知识点,同时获得成就感,并有机会阅读高质量他人代码。
  • 每周 Discussion 讨论课:助讲解课难点与历年考试例题,习题全部用 LaTeX 撰写并附详细解答。

作者总结:这门课不需要任何计算机前置基础,只需要认真、努力、花时间。如果你认为这是夸张,作者的建议是——就从 CS61A 开始,"因为那是我梦开始的地方"。对应地,仓库中该课程的介绍位于 docs/编程入门/Python/CS61A.md,与 CS50P、MIT 6.100L 共同构成 Python 入门轨道。

为什么写这本书:从助教的一份资源清单到一本自学指南

作者讲述的动机链条值得参考:2020 年秋季学期,作者担任北大"计算机系统导论"课程助教,当时已完全自学了一年多。出于分享喜悦,他为研讨班的学生整理了一份 CS 自学材料清单(不敢明说鼓励逃课)。又维护一年后,清单变得相当全面,覆盖计算机、人工智能与软件工程大部分课程,并为每门课建立了独立仓库汇总自学材料。到了大四,作者翻开培养方案时惊觉:它已经是自己自学清单的一个子集——那时距离开始自学仅两年半。于是有了写一本自学指南的想法:记录这几年遇到的困难与乐趣,让同样喜欢自学的学生更容易启程。

前言给出了一个可验证的三年目标画像:若能在不到三年内搭建起完整的 CS 基础、具备相对扎实的数学与编码能力、经历过数十个千行代码级 project、掌握至少 C/C++/Java/JS/Python/Go/Rust 等主流语言,并对算法、电路、体系结构、网络、操作系统、编译器、人工智能、机器学习、计算机视觉、NLP、强化学习、密码学、信息论、博弈论、数值分析、统计学、分布式系统、并行计算、数据库、图形学、Web 开发、云计算、超算等有涉猎,那么无论是在工业界还是学术界,你都会有相当的竞争力。作者最后的信念是:读到这里的人并不缺能力和决心,"你只是需要一个好老师教你一门好课"——而这本指南就是作者基于三年经验替你选出来的好课。

自学的优势:节奏、视角与时间

作者归纳了自学的三大优势,每一条都有对应的实操含义:

  1. 完全自主的学习节奏:困难部分可以反复看视频、Google 搜索、去 StackOverflow 提问直到搞懂;掌握快的部分可以 2 倍速甚至 3 倍速跳过。
  2. 多视角学习:作者从不同大学选修了体系结构、网络、操作系统、编译器核心课。同一知识在不同讲师眼中观点不同,交叉学习能拓宽视野——这在 mkdocs.yml 的导航中直接体现为同一主题下并列多所高校的课程条目。
  3. 不需要去教室听枯燥的讲座:省下通勤与坐班式听课的时间。

自学的劣势:沟通、语言与自律

作为自学的"大粉丝",作者同样坦承三大劣势,并给出缓解办法:

  1. 沟通困难:面对屏幕上的老师,你无法"走到网络另一端"追问。作者的缓解方式是独立思考、善用搜索引擎,以及找到几个一起学习的朋友。仓库为此专门设计了社区机制:README 中说明读者可自建 QQ/微信群聊并在对应课程页面评论区注明学习目标与入群方式;文档站层面,overrides/partials/comments.html 通过 Giscus 插件为每个页面注入了基于 GitHub 讨论区的评论功能,且脚本会随 Material 主题的明暗切换(light_protanopia/dark_protanopia)同步评论区的配色,保证讨论区体验一致。
  2. 课程基本是英文的:从视频、slides 到作业全英文。作者认为这是"克服后回报极大"的挑战,因为当前计算机科学中大量高质量文档、论坛与网站都是英文的。
  3. 自律(最难的一点):没有 DDL 有时是可怕的事。越学越深,许多国外课程相当有难度,你必须有足够的自驱力让自己坐下来读几十页 project handout、理解几千行骨架代码、忍受数小时的调试。没有学分、没有成绩、没有老师和同学,只有一个信念——你在变强。

这本书写给谁

前言最后划定了读者范围,与 docs/使用指南.md 的分类一一对应:

  • 刚入门的计算机小白("像当年作者一样"):这本书是"以最短时间获得所需知识与技能的作弊表"。
  • 已具备一定基础、只感兴趣某个方向的人:可以按兴趣选择性取用,无需通读全部课程。作者强调"试图完成书中所有课程既不现实也没必要,甚至可能适得其反"——这一判断在 docs/使用指南.md 开篇被重申。
  • 一句话定位:这本书更像一个"按作者经验排序的课程搜索引擎",让你足不出户就能学完世界顶尖大学的高质量 CS 课程。

作者同时保持谦逊:作为当时尚未毕业的本科生,他没有资格布道唯一正确的学习路径,只希望这些材料能帮助同样有自驱力和坚持的人度过更丰富、更多样、更满足的大学时光。

致谢与参与贡献

  • 致谢:作者向所有免费公开课程的教授致谢——这些课程是他们数十年教学生涯的结晶,选择无私开源让所有人都能获得高质量 CS 教育。
  • 如何成为贡献者:书由作者在高强度科研日程下编写,难免有瑕疵;且由于作者从事系统方向,书中课程偏系统,高等数学、计算理论、高级算法相关内容较少。想要分享其他方向自学经验与资源的读者,可以直接在项目中发起 Pull Request,或邮件联系作者(docs/index.en.md 中给出的联系方式)。仓库为此提供了完整的贡献流程:
    • 新增课程可参照 template.md 模板,其中规定了"课程简介(所属大学/先修要求/编程语言/难度/预计学时)—课程资源—资源汇总—备注"四段式结构,并引用了 Markdown 写作规范与中英混排排版要点;
    • 新增课程需在 mkdocs.ymlnav 中注册导航条目,并可在 docs/CS学习规划.md 对应模块添加导语;
    • 由于本书支持中英双语(每门课都有 .md.en.md 两份文档),贡献内容需提供对应翻译,README 中记录了双语贡献流程说明。

工程视角:这份指南本身是怎么构建的

从源码结构看,这个"指南"实际上是一个工程化维护的文档站,理解它的构建方式有助于读者参与贡献:

  • 构建栈requirements.txt 固定了核心依赖——mkdocs-material==9.5.2(主题)、mkdocs-minify-plugin(HTML 压缩)、mkdocs-git-revision-date-plugin(显示修订日期)、mkdocs-static-i18n==1.2.0(静态国际化)、mkdocs-open-in-new-tab(外链新标签打开)。
  • 双语机制mkdocs.ymli18n 插件配置了 zh(默认)与 en 两个 locale 均参与构建,并通过 nav_translations 映射了全部导航条目的英译(如"操作系统 → Operating Systems"、"编译原理 → Compilers")。这解释了为何仓库中每份课程文档都有 .en.md 孪生文件,也即 docs/index.en.mddocs/index.md 并存的原因。
  • 阅读体验配置:Material 主题启用了 header.autohidenavigation.trackingnavigation.top(滚动到顶部)、search.highlight/suggest(全文搜索高亮与建议,search_index_only 表示搜索页独立)、content.code.annotate(代码注释标注)等特性,并配置了深浅双主题(default/slate)自动切换——这与 Giscus 评论脚本中监听调色板事件的行为(见 overrides/partials/comments.html)相配套。

后记:这份指南想改变什么

全书导航的终点是 docs/后记.md,作者在其中写道:写这本书绝不是为了鼓励翘课,而是希望本科教育至少展现"分享知识的诚意、以人为本的诚意、注重学生体验的诚意"。作者期待有一天这份资料会被遗忘——因为到那时,学生可以心满意足地选自己培养方案上的课,收获与努力成正比。这个愿景与前言中"你只是需要一个好老师教你一门好课"的信念首尾呼应:在理想实现之前,这本指南就是那个"好课"的索引。

小结

  • 本仓库的前言(docs/index.en.md / docs/index.md)定义了整本 CS 自学指南的骨架:使用指南、学习规划、必学工具、好书推荐与高质量课程汇总五大板块。
  • mkdocs.yml 的导航是课程地图的可执行版本,从数学基础一路铺展到机器学习进阶,同方向多校课程并列体现了"多视角学习"理念。
  • 作者以 CS61A 为例给出的"好课标准"——资源聚合的课程网站、教授亲写教材、骨架化自动评分作业、规范讨论课——是评估任何一门自选课时的实用检查清单。
  • 自学的三大收益(节奏自主、多视角、省时)与三大代价(沟通难、英文门槛、自律要求)构成一份诚实的可行性评估;仓库通过 Giscus 评论与社区群聊机制部分缓解了沟通难题。
  • 仓库本身基于 MkDocs Material + i18n 插件构建中英双语文档站(见 requirements.txt),贡献者按 template.md 模板提交课程并注册到 mkdocs.yml 导航,是参与维护的完整入口。
登录后查看全文
热门项目推荐
相关项目推荐