首页
/ cs-self-learning CS自学指南:以开源课程为骨架的计算机自学体系与学习地图

cs-self-learning CS自学指南:以开源课程为骨架的计算机自学体系与学习地图

2026-09-05 18:15:47作者:丁柯新Fawn

本文以 前言 为主体,系统讲解 cs-self-learning(CS自学指南)这本书的定位、自学习理念、三类读者画像与使用路径,并结合仓库中的 导航配置使用指南课程贡献模板,展示这本书如何把数百门国内外开源 CS 课程组织成一套可落地的自学方案。读完本文,你能理解这本书的内容结构与设计动机,并根据自身情况(在校生、在职转码、方向已定的进阶者)选出对应的学习路线。

一、这本书是什么:五大组成部分

前言 开宗明义:这是一本计算机自学指南,也是作者对自己大学三年自学生涯的纪念,同时是献给北大信科学弟学妹们的礼物。全书由五大部分组成:

  1. 使用指南:由于书内资源众多,作者根据不同人群的空闲时间和学习目标制定了差异化使用指南,即 如何使用这本书
  2. 一份供参考的 CS 学习规划:作者根据自己的自学经历制定的全面、系统化的自学规划,见 一个仅供参考的CS学习规划
  3. 必学工具:CSer 效率工具介绍,包括 IDE、Git、GitHub、Vim、LaTeX、GNU Make、Docker、工作流等,对应 必学工具 及其下各篇;
  4. 经典书籍推荐:针对“教材晦涩难懂”的痛点,分领域推荐必看好书与资源,见 好书推荐
  5. 国内外高质量 CS 课程汇总:作者上过的以及开源社区贡献的高质量课程,分门别类汇总并给出自学建议,大部分课程有独立仓库维护相关资源与作业实现。

导航配置 可以看到,这五大板块在站点导航中被落实为完整的页面树:前言如何使用这本书一个仅供参考的CS学习规划必学工具(翻墙、Vim、Emacs、Git、GitHub、GNU Make、CMake、LaTeX、Docker、Scoop、日常学习工作流、实用工具箱、毕业论文、信息检索共 14 篇)→ 好书推荐 → 各课程模块。每个课程模块下是一篇篇带 .md/.en.md 双语文件的具体课程页,如 CS61AMIT 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 开发、云服务、超算等方面均有涉猎,那么在就业或科研上都会有相当竞争力。作者的信念是:“你只是没有一个好的老师,给你讲一门好的课程”,而本书就是为读者挑选这样的课程。

四、自学的收益与代价

前言对自学做了清醒的利弊分析,这部分对决定“要不要跟着这本书学”的读者最有参考价值。

自学的三个好处

  1. 完全自主的学习速度:疑难知识点可以反复回看视频、上网搜索、去 StackOverflow 提问,直到完全弄明白;掌握快的内容可以两倍速甚至三倍速略过。
  2. 博采众长:体系、网络、操统、编译等核心课基本都上过不同大学的版本,不同的教材、知识点侧重与 project 会极大丰富视野,并及时纠正理解错误的内容。
  3. 时间自由:不用受课表约束,作者大二疫情在家大半年、返校后基本没去线下教室,绩点却毫无影响。

自学的三个坏处

  1. 交流沟通不便:面对屏幕无法“顺着网线”追问老师。缓解方式是独立思考和善用搜索引擎;更好的方式是与志同道合的伙伴结伴自学,参考仓库 README 中的交流群教程;
  2. 英文门槛:视频、课件、作业基本都是英文。作者会尽量寻找带中文字幕的视频,但多数课程只有机翻或生肉。作者认为这是值得克服的挑战,因为计算机领域优质文档、论坛、网站以英文居多,养成英文阅读习惯长期有益;
  3. 自律:没有 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.02MIT 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+ 课程模块

导航配置 完整呈现了本书的知识地图,模块组织遵循“自底向上”的学科依赖关系,可作为规划自学顺序的索引:

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 区也有历史群聊信息。前言的“特别鸣谢”一节感谢了所有无偿开源课程资源的教授们——这些课程倾注了数十年教学生涯的积淀却向所有人开放,正是“好老师讲好课”这一信念的具象化。

八、结语:如何开始

回到 前言 给出的定位:这本书更像“一个根据我的体验来排序的课程搜索引擎”,帮你足不出户体验世界顶级名校的计算机优质课程。建议的起点是:

  1. 先读 使用指南,对号入座(初入校园 / 删繁就简 / 心有所属);
  2. 按对应的课程表从 CS 学习规划 中的先修要求起步,零基础可从 CS61A 这类“零先修、重框架、强反馈”的课程切入;
  3. 同步补齐 必学工具(Git、Shell、Vim 等)与 好书推荐 中对应领域的教材;
  4. 学习受阻时利用页面评论功能加入对应课程的学习群,或参考 后记 中作者对本科教育诚意的反思,保持“你在变强”的信念。

正如 README 引用的那句话:Everyone should enjoy CS if you have a good teacher to teach you a good course——这本书的价值,就是为你找到这些好课。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
528
588
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
906
1.83 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
891
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.53 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.34 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
987
506
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384