cs-self-learning CS 自学指南:三年计算机自学生涯的规划蓝图与课程筛选方法
本文解读 CS 自学指南(cs-self-learning)仓库的前言章节 docs/index.en.md:它阐述了作者三年大学自学生涯如何从一门 Python 入门课起步、这本指南为何而写、自学的收益与代价,以及它面向哪类读者。读完本文,你将掌握该指南的课程体系组织逻辑(可通过 mkdocs.yml 的完整导航验证)、四类读者的使用路线,以及以 MkDocs Material 构建中英双语文档站的工程细节。
这本书讲了什么:五大部分的内容地图
作者在前言中说明,这是一本"计算机自学指南",同时也是对其大学三年自学生涯的纪念,并献给北大信科学弟学妹。书中目前组织为五个部分:
- 本书使用指南:由于书内资源众多,作者根据不同人群的空闲时间和学习目标,编写了 docs/使用指南.md。该指南将读者分为三大类——大一新生、需要"化繁为简"的考研/工作人群、以及已有扎实基础想深入某一方向的读者,每类都给出了对应的选课建议。
- 一份供参考的 CS 学习规划:见 docs/CS学习规划.md,是作者基于自身自学经历制定的全面、系统化的自学规划,涵盖必学工具、好书推荐、环境配置与完整课程地图。
- 必学工具(Productivity Toolkit):IDE、科学上网、StackOverflow、Git、GitHub、Vim、LaTeX、GNU Make 等效率工具。仓库中对应的文档位于 docs/必学工具/ 目录,如 docs/必学工具/Git.md、docs/必学工具/CMake.md、docs/必学工具/Docker.md 等,并包含日常学习工作流、实用工具箱、毕业论文写作与信息检索等延伸主题。
- 好书推荐(Book Recommendations):作者强调好教材的重要性("读过 CSAPP 的人都知道好书的重要"),在 docs/好书推荐.md 中列举了各计算机领域值得读的书与资源。
- 高质量 CS 课程汇总:这是全书的核心——作者将其上过的以及社区贡献的高质量课程分门别类汇总,给出自学建议,且大部分课程配有独立仓库维护资源与作业实现。
从 mkdocs.yml 的 nav 配置可以完整看到这套课程地图的实际规模与组织方式:从数学基础(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 新建命令行项目,陷入 cin、cout、for 循环之后 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 开发、云计算、超算等有涉猎,那么无论是在工业界还是学术界,你都会有相当的竞争力。作者最后的信念是:读到这里的人并不缺能力和决心,"你只是需要一个好老师教你一门好课"——而这本指南就是作者基于三年经验替你选出来的好课。
自学的优势:节奏、视角与时间
作者归纳了自学的三大优势,每一条都有对应的实操含义:
- 完全自主的学习节奏:困难部分可以反复看视频、Google 搜索、去 StackOverflow 提问直到搞懂;掌握快的部分可以 2 倍速甚至 3 倍速跳过。
- 多视角学习:作者从不同大学选修了体系结构、网络、操作系统、编译器核心课。同一知识在不同讲师眼中观点不同,交叉学习能拓宽视野——这在 mkdocs.yml 的导航中直接体现为同一主题下并列多所高校的课程条目。
- 不需要去教室听枯燥的讲座:省下通勤与坐班式听课的时间。
自学的劣势:沟通、语言与自律
作为自学的"大粉丝",作者同样坦承三大劣势,并给出缓解办法:
- 沟通困难:面对屏幕上的老师,你无法"走到网络另一端"追问。作者的缓解方式是独立思考、善用搜索引擎,以及找到几个一起学习的朋友。仓库为此专门设计了社区机制:README 中说明读者可自建 QQ/微信群聊并在对应课程页面评论区注明学习目标与入群方式;文档站层面,overrides/partials/comments.html 通过 Giscus 插件为每个页面注入了基于 GitHub 讨论区的评论功能,且脚本会随 Material 主题的明暗切换(
light_protanopia/dark_protanopia)同步评论区的配色,保证讨论区体验一致。 - 课程基本是英文的:从视频、slides 到作业全英文。作者认为这是"克服后回报极大"的挑战,因为当前计算机科学中大量高质量文档、论坛与网站都是英文的。
- 自律(最难的一点):没有 DDL 有时是可怕的事。越学越深,许多国外课程相当有难度,你必须有足够的自驱力让自己坐下来读几十页 project handout、理解几千行骨架代码、忍受数小时的调试。没有学分、没有成绩、没有老师和同学,只有一个信念——你在变强。
这本书写给谁
前言最后划定了读者范围,与 docs/使用指南.md 的分类一一对应:
- 刚入门的计算机小白("像当年作者一样"):这本书是"以最短时间获得所需知识与技能的作弊表"。
- 已具备一定基础、只感兴趣某个方向的人:可以按兴趣选择性取用,无需通读全部课程。作者强调"试图完成书中所有课程既不现实也没必要,甚至可能适得其反"——这一判断在 docs/使用指南.md 开篇被重申。
- 一句话定位:这本书更像一个"按作者经验排序的课程搜索引擎",让你足不出户就能学完世界顶尖大学的高质量 CS 课程。
作者同时保持谦逊:作为当时尚未毕业的本科生,他没有资格布道唯一正确的学习路径,只希望这些材料能帮助同样有自驱力和坚持的人度过更丰富、更多样、更满足的大学时光。
致谢与参与贡献
- 致谢:作者向所有免费公开课程的教授致谢——这些课程是他们数十年教学生涯的结晶,选择无私开源让所有人都能获得高质量 CS 教育。
- 如何成为贡献者:书由作者在高强度科研日程下编写,难免有瑕疵;且由于作者从事系统方向,书中课程偏系统,高等数学、计算理论、高级算法相关内容较少。想要分享其他方向自学经验与资源的读者,可以直接在项目中发起 Pull Request,或邮件联系作者(docs/index.en.md 中给出的联系方式)。仓库为此提供了完整的贡献流程:
- 新增课程可参照 template.md 模板,其中规定了"课程简介(所属大学/先修要求/编程语言/难度/预计学时)—课程资源—资源汇总—备注"四段式结构,并引用了 Markdown 写作规范与中英混排排版要点;
- 新增课程需在 mkdocs.yml 的
nav中注册导航条目,并可在 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.yml 的
i18n插件配置了zh(默认)与en两个 locale 均参与构建,并通过nav_translations映射了全部导航条目的英译(如"操作系统 → Operating Systems"、"编译原理 → Compilers")。这解释了为何仓库中每份课程文档都有.en.md孪生文件,也即docs/index.en.md与 docs/index.md 并存的原因。 - 阅读体验配置:Material 主题启用了
header.autohide、navigation.tracking、navigation.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 导航,是参与维护的完整入口。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00