PKUFlyingPig/cs-self-learning:76K stars 的计算机自学指南到底有什么
posts posts 2026-07-20T03:02:36+08:00PKUFlyingPig/cs-self-learning 是 76K stars 的中文计算机自学指南,作者用 4 年大学自学经验把课程、书籍、视频路径整理成一本可在线阅读的电子书,目标 2-3 年从小白成长为主流语言 + 全领域涉猎的全能程序员。技术笔记CS自学, 教材推荐, 学习路径, 中文资源PKUFlyingPig/cs-self-learning:76K stars 的计算机自学指南到底有什么
一句话判断
cs-self-learning 不是项目,是一本开源电子书——作者 PKUFlyingPig 用四年大学自学经验,把"计算机每个领域该读什么课、什么书、什么视频"整理成可在线阅读的 csdiy.wiki。截至 2026 年 10 月初约 76K stars,它在中文 CS 自学圈子的覆盖面和可信度已经被广泛认可。但要先说清一件事:它不是教学资源本身,而是资源的元索引——读它不会让你学会操作系统,它帮你决定"该用哪门课学操作系统"。
项目定位
- 仓库:
PKUFlyingPig/cs-self-learning,MIT 协议(仅覆盖贡献者撰写部分,见文末协议边界) - GitHub Stars:约 76K,Forks 8K(2026-10-01 读数)
- 主语言:HTML(核心载体是 mkdocs 静态站点,仓库内容以 Markdown 为主)
- 在线阅读:csdiy.wiki(中文)/ csdiy.wiki/en(英文)
- 维护状态:2026 年 2 月下旬至 7 月下旬有过近五个月的低活跃期,之后恢复更新——7 月下旬起连续合并课程更新(新增 CMU 15-442、Stanford CS236 等),最近一次提交在 2026 年 9 月 17 日(把 MIT 6.S081 的课程编号更新为 6.1810)
- 目标读者:刚接触计算机的小白、想转码的非科班、社招转 CS 的工程师
作者的野心写在 README 里:让一个刚接触计算机的小白,完全靠开源社区的优质资源,在 2-3 年内成长为"有扎实的数学功底和代码能力,经历过数十个千行代码量 Project 的洗礼,掌握至少 C/C++/Java/JS/Python/Go/Rust 等主流语言"的全能程序员。这个目标清单还列了算法、体系、网络、操统、编译、机器学习、密码学、信息论、博弈论、分布式、图形学、云服务、超算等二十多个方向。注意:这是愿景清单,不完全等于站点已有板块——下文的系统地图以仓库实际导航为准。
系统地图
仓库是一个 mkdocs 站点,docs/ 下的 Markdown 经 mkdocs.yml 注册导航后渲染成 csdiy.wiki。一级板块如下:
| 方向 | 板块 |
|---|---|
| 规划与资源 | CS 学习规划、必学工具、好书推荐 |
| 数学 | 数学基础、数学进阶 |
| 入门 | 编程入门、电子基础、数据结构与算法 |
| 系统方向 | 计算机系统基础、体系结构、操作系统、并行与分布式系统、计算机系统安全、计算机网络、数据库系统、编译原理 |
| 语言与工程 | 软件工程、编程语言设计与分析 |
| 应用方向 | 计算机图形学、Web 开发、数据科学 |
| AI 方向 | 人工智能、机器学习、机器学习系统、深度学习、深度生成模型、机器学习进阶 |
每个方向板块下是多门具体课程的页面。单门课程页面遵循仓库根目录 template.md 定义的模板,核心是两组元数据:
- 课程简介:所属大学、先修要求、编程语言、课程难度(星级)、预计学时
- 课程资源:课程网站、课程视频、课程教材、课程作业的链接
中间是作者的亲学叙述(这门课讲什么、比同类课强在哪、自学要踩哪些坑),结尾是资源汇总——作者本人和其他贡献者学习这门课的作业实现仓库、参考博客。以操作系统板块的 MIT 6.1810 页面为例:开头的元数据告诉你"先修体系结构和扎实的 C 语言功底,预计 150 小时,难度五星",正文讲 xv6 教学操作系统的来龙去脉,课程资源给了课程网站、视频、xv6 教材 PDF 和 11 个 lab 的入口,资源汇总里能找到作者的作业实现仓库和十几篇参考博客。
这套设计解决的是一个具体问题:好课太多,收藏夹吃灰。每个领域的入口信息被压缩成几行可直接比较的元数据——先修要求和预计学时决定你现在能不能学,星级和亲学叙述决定你值不值得学,资源链接让你马上开始学。
关键机制拆解
1. mkdocs 站点而非 GitHub Wiki
作者把内容放在仓库 Markdown 里,经 mkdocs 渲染成静态站点部署到 csdiy.wiki。读者拿到的是带搜索、有版式的网站;作者和维护者继续用 Markdown 写作;改动走 pull request(合并请求,下文简称 PR),每个章节一个文件,审阅可以按章节小粒度进行。Git 历史天然记录了每页的演变,mkdocs.yml 中的 git-revision 插件还会在页面上显示最后更新日期——对一个推荐课程链接会随时间失效的资源索引来说,读者能看到"这页多久没维护了"很重要。
2. 中英双语:贡献者自带翻译
站点支持英文版(csdiy.wiki/en),README 明确要求贡献内容提供对应的英文翻译。具体流程定义在 issue #222:中文描述写进 docs/<方向>/<课号>.md,同目录下创建同名 <课号>.en.md 填入英文版,翻译由贡献者自己完成(官方建议可借助 DeepL 等工具辅助)。也就是说翻译责任在贡献者一侧,不存在"中文社区事后补译"的机制。
双语的实际收益有两层:中文读者读母语版本降低入门摩擦;有留学或对外展示需求时,英文版可以直接引用。对贡献者来说,成本是多维护一份 .en.md 文件。
3. PR 友好的贡献结构
想补充一门课程,按 README 的指引走四步:
- 参考
template.md写课程页(中文 + 同名英文两个文件) - 在
mkdocs.yml里注册 navigation - 如果属于 CS 学习规划覆盖的模块,在规划文件里补一段导语
- 提交 pull request
推荐书籍则按"好书推荐"文件头部注释的格式追加。模板把排版决策都定死了,贡献者只需要对内容负责——一门课该不该收录、怎么描述,社区审阅把关。上表 27 个内容板块就是这么一页一页积累出来的:单次贡献的成本被压到了"写一个课程页"的量级。
4. 评论 + 自建学习群
站点每页底部支持评论。README 建议的用法是:想自学某门课的读者可以自己建群(QQ、微信皆可),然后在对应课程页面下方发评论,注明学习目标和小群入口,让后来学同一门课的人能找到同伴。此前也有不少人在仓库 issue 区组织过类似的群。这是社区自组织的机制——站点提供评论这个挂载点,组织本身靠读者自己发起,没有官方运营的统一社区。
协议边界
仓库 LICENSE 是 MIT,但 README 特意做了切割:项目贡献者编写的部分遵循 MIT;书中提到的课程资源、开源书籍、视频内容遵循各自原作者的规定许可。换句话说,MIT 只覆盖这本"索引"本身,索引指向的东西各有各的版权。想基于它二次开发(比如做自己的学习路径站点)时,只需要注意保留署名,但不要误以为里面推荐的课程内容也是 MIT。
适用人群
- 计算机小白:刚接触编程,需要一张"路径图"而不是具体教程
- 转码 / 非科班:想系统补 CS 基础,不知道课怎么排的人
- CS 在校生:想横向扩展到自己专业之外的子领域
- 找同伴的自学者:愿意通过课程页评论找同路人一起啃硬课
不适合谁
- 想"读完就会"的人:它是路径图,不是教程,推荐的每门课都要自己花时间学
- 只想要项目模板的人:课程作业(lab)的题目和框架在各课的资源链接里,需要自己进入课程体系消化
- 完全不愿碰英文材料的人:核心课程和教材大多是英文的,中文叙述只是入口的引路
阅读路径建议
- 先读 README 的"我的目标"段,确认你想要的路和作者的规划是否一致
- 打开 csdiy.wiki,从"一个仅供参考的 CS 学习规划"看整体地图——这一篇是全书的导览,值得完整读
- 选定当前要攻的方向(比如操作系统),进对应板块看课程页的先修要求和预计学时,排掉学不了的,剩下的按资源链接开始
- 学完有补充或发现链接失效,按
template.md格式提 PR——这是这个项目能持续鲜活的机制
仓库:PKUFlyingPig/cs-self-learning · 在线阅读:csdiy.wiki · 协议:MIT(限贡献者撰写部分)
参与讨论
使用 GitHub 登录。欢迎补充事实、异议与实践。
讨论暂时无法加载。