cs-self-learning CS自学指南:以开源课程为骨架的计算机自学体系与学习地图
本文以 前言 为主体,系统讲解 cs-self-learning(CS自学指南)这本书的定位、自学习理念、三类读者画像与使用路径,并结合仓库中的 导航配置、使用指南 与 课程贡献模板,展示这本书如何把数百门国内外开源 CS 课程组织成一套可落地的自学方案。读完本文,你能理解这本书的内容结构与设计动机,并根据自身情况(在校生、在职转码、方向已定的进阶者)选出对应的学习路线。
一、这本书是什么:五大组成部分
前言 开宗明义:这是一本计算机自学指南,也是作者对自己大学三年自学生涯的纪念,同时是献给北大信科学弟学妹们的礼物。全书由五大部分组成:
- 使用指南:由于书内资源众多,作者根据不同人群的空闲时间和学习目标制定了差异化使用指南,即 如何使用这本书;
- 一份供参考的 CS 学习规划:作者根据自己的自学经历制定的全面、系统化的自学规划,见 一个仅供参考的CS学习规划;
- 必学工具:CSer 效率工具介绍,包括 IDE、Git、GitHub、Vim、LaTeX、GNU Make、Docker、工作流等,对应 必学工具 及其下各篇;
- 经典书籍推荐:针对“教材晦涩难懂”的痛点,分领域推荐必看好书与资源,见 好书推荐;
- 国内外高质量 CS 课程汇总:作者上过的以及开源社区贡献的高质量课程,分门别类汇总并给出自学建议,大部分课程有独立仓库维护相关资源与作业实现。
从 导航配置 可以看到,这五大板块在站点导航中被落实为完整的页面树:前言 → 如何使用这本书 → 一个仅供参考的CS学习规划 → 必学工具(翻墙、Vim、Emacs、Git、GitHub、GNU Make、CMake、LaTeX、Docker、Scoop、日常学习工作流、实用工具箱、毕业论文、信息检索共 14 篇)→ 好书推荐 → 各课程模块。每个课程模块下是一篇篇带 .md/.en.md 双语文件的具体课程页,如 CS61A、MIT 6.S081 等。
前言还标注了版本动态:v1.2.0 更新了 深度生成模型学习路线,说明这本书是持续演进的课程索引而非静态快照。
二、梦开始的地方:CS61A 带来的启示
前言用相当篇幅回顾了作者自学的起点——UC Berkeley 的入门课 CS61A(课程页面见 docs/编程入门/Python/CS61A.md)。作者大一上学期还在“新建命令行项目—cin/cout/for—CE、RE、WA 循环”的痛苦状态中,大一寒假偶然接触 CS61A 后三个星期学完,第一次感到“CS 可以学得如此充实而有趣”。
作者从学生视角总结了这门课可借鉴的课程建设经验,这也解释了本书对“高质量课程”的筛选标准:
- 独立搭建的课程网站:一个网站整合课程 schedule、slides、homework、discussion 文件链接、给分说明和历年考试题答案,资源公正透明;
- 教授亲自编写的教材:开课老师将 MIT 经典教材 SICP(原基于 Scheme)改编为 Python 版本并开源,保证课堂与教材一致;
- 丰富的作业体系:14 个 lab、10 个 homework、4 个上千行代码的 project,全部配有完善代码框架、保姆级说明、详尽 handout 与全自动评分脚本(配套的自动化作业提交评分系统 okpy 甚至发表过论文)。作者特别回应了“框架代码都是助教写的还能学到啥”的质疑:对刚接触计算机的学习者,完善的框架能让人专注核心知识点、获得成就感、并有机会阅读高质量代码,“在低年级百利而无一害”;
- 每周 Discussion 讨论课:助教讲解难点与考试例题,习题全部用 LaTeX 撰写并给出详细解答。
结论是:这样的课程“你完全不需要任何计算机的基础,你只需要努力、认真、花时间就够了”。
三、为什么写这本书:从个人资料仓库到“自学式培养方案”
前言交代了本书的来历:2020 年秋季作者担任 CSAPP 课程助教时已自学一年多,为此建了一个 CS 自学资料整理仓库分享快乐;经过一年维护,内容覆盖了计科、智能系、软工系绝大多数课程,且每门课都建了独立仓库汇总资料与作业实现。大四凑学分时,作者发现自己的培养方案已是这个自学仓库的子集——于是萌生了打造“自学式培养方案”的想法,把三年自学中遇到的坑和走过的路记录下来。
作者给出的能力目标(引自 README 与前言):如果读者能在三年不到时间里建立起整座 CS 基础大厦,有扎实的数学功底和代码能力,经历过数十个千行代码量 Project 的洗礼,掌握至少 C/C++/Java/JS/Python/Go/Rust 等主流语言,并对算法、电路、体系、网络、操统、编译、人工智能、机器学习、计算机视觉、NLP、强化学习、密码学、信息论、博弈论、数值分析、统计学、分布式、数据库、图形学、Web 开发、云服务、超算等方面均有涉猎,那么在就业或科研上都会有相当竞争力。作者的信念是:“你只是没有一个好的老师,给你讲一门好的课程”,而本书就是为读者挑选这样的课程。
四、自学的收益与代价
前言对自学做了清醒的利弊分析,这部分对决定“要不要跟着这本书学”的读者最有参考价值。
自学的三个好处
- 完全自主的学习速度:疑难知识点可以反复回看视频、上网搜索、去 StackOverflow 提问,直到完全弄明白;掌握快的内容可以两倍速甚至三倍速略过。
- 博采众长:体系、网络、操统、编译等核心课基本都上过不同大学的版本,不同的教材、知识点侧重与 project 会极大丰富视野,并及时纠正理解错误的内容。
- 时间自由:不用受课表约束,作者大二疫情在家大半年、返校后基本没去线下教室,绩点却毫无影响。
自学的三个坏处
- 交流沟通不便:面对屏幕无法“顺着网线”追问老师。缓解方式是独立思考和善用搜索引擎;更好的方式是与志同道合的伙伴结伴自学,参考仓库 README 中的交流群教程;
- 英文门槛:视频、课件、作业基本都是英文。作者会尽量寻找带中文字幕的视频,但多数课程只有机翻或生肉。作者认为这是值得克服的挑战,因为计算机领域优质文档、论坛、网站以英文居多,养成英文阅读习惯长期有益;
- 自律:没有 DDL 是件可怕的事,课程越学越深越“虐”。你需要足够的驱动力逼自己静下心来读几十页 Project Handout、理解上千行代码框架、忍受数小时 debug——“没有学分、没有绩点、没有老师、没有同学,只有一个信念:你在变强”。
五、这本书适合谁:三类读者画像与使用路径
前言 的“这本书适合谁”一节给出总原则:任何有志于自学计算机的朋友都可以参考;有基础者可选择性挑感兴趣的领域;零基础小白可把它当攻略,“花最少的时间掌握所需的知识和能力”。作者把这本书比作“根据我的体验来排序的课程搜索引擎”。
真正可操作的分流方案在 使用指南 中,按需求把读者分为三类:
1. 初入校园(低年级本科生 / 拟转入计算机方向)
核心建议有三条:
- 写“优雅”的代码:编程入门期就要理解什么样的代码优雅、什么代码 "have bad taste"。过程式阶段重视模块化与封装,不断自问“是否有大量重复代码、当前函数是否过于复杂、这段代码能否抽象成函数”;面向对象阶段推荐学习 MIT 6.031: Software Construction 的 Notes(Test-Driven 开发、函数 Specification 设计、异常处理等),并了解常见设计模式(推荐《大话设计模式》);
- 学习提效工具:强烈推荐 MIT Missing Semester,覆盖 Git、Shell、Vim 等;遵守“一切需要让手离开键盘的操作都应想办法去除”的定律;学会盲打;
- 平衡课内与自学:低年级打好基础最重要,课内照课表走,辅以优质课外资源(如 MIT 18.01/18.02、MIT 18.06 线性代数、假期用 UCB CS61A 学 Python);大一数学学分占比大、考试风格方差大,考前要针对性刷往年题。大二专业课占多后可“彻底放飞自我”进入系统自学,用国外课程 Lab/Project 应付课内大作业,作者本人曾用 MIT 6.S081 的 xv6 Project 替换了老师课上过时的实验。
2. 删繁就简(研究生 / 职场人 / 转码者)
没有时间系统学完全套规划,但想补齐基础。作者筛选了“最重要且质量最高”的核心课程(下表为 使用指南 原表,链接已转换为仓库相对路径):
| 课程方向 | 课程名 |
|---|---|
| 离散数学和概率论 | UCB CS70: discrete Math and probability theory |
| 数据结构与算法 | Coursera: Algorithms I & II |
| 软件工程 | MIT 6.031: Software Construction |
| 全栈开发 | MIT web development course |
| 计算机系统导论 | CMU 15-213: CSAPP |
| 体系结构入门 | Coursera: Nand2Tetris |
| 体系结构进阶 | UCB CS61C: Great Ideas in Computer Architecture |
| 数据库原理 | CMU 15-445: Database Systems |
| 计算机网络 | Computer Networking: A Top-Down Approach |
| 人工智能 | Harvard CS50: Introduction to AI with Python |
| 深度学习 | Coursera: Deep Learning |
3. 心有所属(核心课已扎实、方向已确定)
使用指南 指出:当核心专业课掌握扎实后,书中还有大量 CS 学习规划 未提到的课程可供深耕。同一分支下通常有来自不同学校、侧重不同的同类课程(例如操作系统分支同时收录 MIT、UCB、南京大学、哈工大四个版本),学习同类课程会从不同视角审视同一知识。作者还计划联系相关领域科研工作者分享细分领域的科研学习路径,弥补深度。
六、知识体系全景:从数学基础到大语言模型的 20+ 课程模块
导航配置 完整呈现了本书的知识地图,模块组织遵循“自底向上”的学科依赖关系,可作为规划自学顺序的索引:
- 数学基础: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(CS61A、CS50P、MIT 6.100L)、C(Harvard CS50、Duke)、C++(AUT1400、Stanford CS106B/X、CS106L)、Java(MIT 6.092)、Rust(Stanford CS110L、KAIST CS220/CS431)、函数式(Cornell CS3110、Haskell MOOC);
- 电子基础:EE16A&B、UCB EE120 信号与系统、MIT 6.007;
- 数据结构与算法: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;
- 体系结构:Nand2Tetris、UCB CS61C、ETH DDCA、ETH Computer Architecture;
- 操作系统:MIT 6.S081、UCB CS162、NJU OS、HIT OS;
- 并行与分布式系统:CMU 15-418/Stanford CS149、MIT 6.824;
- 系统安全:UCB CS161、MIT 6.1600、MIT 6.858、ASU CSE365/CSE466、SU SEED Labs;
- 计算机网络:UCB CS168、Stanford CS144、USTC 自顶向下、Top-Down Approach;
- 数据库系统:UCB CS186、CMU 15-445、Caltech CS122、Stanford CS346、CMU 15-799;
- 编译原理:PKU、Stanford CS143、NJU、KAIST CS420、USTC、SJTU 六个版本;
- 编程语言设计与分析:Stanford CS242、NJU/PKU 软件分析、Cambridge 语义学;
- 计算机图形学:GAMES101/103/202、Stanford CS148、CMU 15-462、USTC CG;
- Web 开发:MIT Web 开发、Stanford CS142、Full Stack Open、CS571;
- 数据科学:UCB Data100;
- 人工智能:Neural Networks: Zero to Hero、Harvard CS50 AI、UCB CS188;
- 机器学习:Coursera ML、Stanford CS229、UCB CS189;
- 机器学习系统:CMU 15-442、智能计算系统、CMU 10-414、MIT TinyML、MLC、UCSD CSE234;
- 深度学习:Coursera DL、李宏毅机器学习、CMU 11-785、MIT 6.7960、NYU DLSP21、UMich CV、Stanford CS231n/CS224n/CS224w、UCB CS285;
- 深度生成模型:学习路线图、MIT 6.S184,以及大语言模型子模块(CMU 11-868、11-667、11-711)——这是 v1.2.0 版本新增的重点方向;
- 机器学习进阶:学习路线图、CMU 10-708、Columbia STAT8201、U Toronto STA4273、Stanford CS229M。
CS 学习规划 进一步补充了前置学习建议:开始系统学习前先看科普向的 Crash Course: Computer Science 系列视频建立全貌认知;必学工具部分强调“学会提问”(推荐《提问的智慧》)、命令行(《命令行的艺术》)、IDE 选择、环境配置(Mac/Windows/服务器端),课程地图中除含“基础/入门”字眼的类别外无严格先后次序,只要满足先修要求即可自选。
七、仓库结构与贡献方式:这本书是如何维护的
理解这本书的组织方式,也有助于你以贡献者身份参与。
课程页面的统一模板
每门课程都按 课程模板(英文版 template.en.md)撰写,结构固定为:
# 课号:课程名称
## 课程简介 —— 所属大学 / 先修要求 / 编程语言 / 课程难度(星级)/ 预计学时,
外加课程知识点范围、同类课程对比优势、学习体验、自学注意点
## 课程资源 —— 课程网站 / 视频 / 教材 / 作业
## 资源汇总 —— 学习者在独立仓库中维护的资料与作业实现
## 备注 —— Markdown 排版规范(含中英混排排版约定)
模板要求贡献者写明“与同类课程相比的优势与特点”和“踩过的坑、难度预警”,这正是前言所说的“介绍课程特点并给出自学建议”的落地形式。
站点构建与双语支持
从 依赖清单 和 mkdocs 配置 可以看到,本书基于 MkDocs Material 主题(mkdocs-material==9.5.2)构建静态站点,配套插件包括:
mkdocs-static-i18n:支持简体中文(默认)与 English 双语站点,mkdocs.yml 中的nav_translations维护了全部导航条目的中英对照(如“必学工具 → Productivity Toolkit”“操作系统 → Operating Systems”),所以每个模块都有.md/.en.md成对文件;search:中英双语全文检索(lang: [zh, en]),并开启search_index_only仅索引正文;git-revision-date:展示页面最近修改日期;minify:压缩 HTML;open-in-new-tab:外链新窗口打开。
README 中的贡献流程:对任意章节提 Pull Request;贡献新课程时参考 template.md,在 mkdocs.yml 的 navigation 中添加条目,并建议在 CS 学习规划 对应模块加言简意赅的导语;推荐书籍按 好书推荐 顶部注释的格式添加;贡献内容需同时提供英文翻译。作者同时坦承:个人方向偏系统领域,数学、理论计算机、高级算法内容相对较少,欢迎相应领域的大佬通过 Pull Request 或邮件补充。
社区与致谢
本书支持页面评论功能:想自学某课程可自行建群(QQ/微信均可),在对应课程页下方评论注明学习目标与入群方式;issue 区也有历史群聊信息。前言的“特别鸣谢”一节感谢了所有无偿开源课程资源的教授们——这些课程倾注了数十年教学生涯的积淀却向所有人开放,正是“好老师讲好课”这一信念的具象化。
八、结语:如何开始
回到 前言 给出的定位:这本书更像“一个根据我的体验来排序的课程搜索引擎”,帮你足不出户体验世界顶级名校的计算机优质课程。建议的起点是:
- 先读 使用指南,对号入座(初入校园 / 删繁就简 / 心有所属);
- 按对应的课程表从 CS 学习规划 中的先修要求起步,零基础可从 CS61A 这类“零先修、重框架、强反馈”的课程切入;
- 同步补齐 必学工具(Git、Shell、Vim 等)与 好书推荐 中对应领域的教材;
- 学习受阻时利用页面评论功能加入对应课程的学习群,或参考 后记 中作者对本科教育诚意的反思,保持“你在变强”的信念。
正如 README 引用的那句话:Everyone should enjoy CS if you have a good teacher to teach you a good course——这本书的价值,就是为你找到这些好课。
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