# CS Self-Learning Guide (CS自学指南) — Content Guide

> A comprehensive, community-curated collection of high-quality computer science courses
> designed to help self-learners build a complete CS education from freely available
> university-level resources. Created by PKUFlyingPig (Peking University) and maintained
> by the open-source community at [csdiy.wiki](https://csdiy.wiki/).

## 1. What's in This Collection

CS自学指南 organizes **100+ vetted computer science courses** from top universities
(MIT, Stanford, UC Berkeley, CMU, and others) into a structured self-learning curriculum.
Every course entry includes the institution, course code, a description of what it covers,
links to course materials, and community-contributed learning experiences.

The collection covers the full breadth of a CS undergraduate and graduate education:

| Topic Area | Chinese Name | Courses | Focus |
|---|---|---|---|
| **Productivity Toolkit** | 必学工具 | 14 | Vim, Emacs, Git, GitHub, Make, CMake, LaTeX, Docker, Scoop, workflows |
| **Fundamental Mathematics** | 数学基础 | 3 | Calculus (MIT 18.01/18.02), Linear Algebra (MIT 18.06), Information Theory |
| **Advanced Mathematics** | 数学进阶 | 6 | Discrete math, probability, numerical analysis, convex optimization |
| **Intro Programming** | 编程入门 | 13 | Python, C, C++, Java, Rust, OCaml, Haskell, shell tools |
| **Electronics Fundamentals** | 电子基础 | 3 | Signals & systems, circuit design |
| **Data Structures & Algorithms** | 数据结构与算法 | 5 | CS61B, Algorithms I/II, MIT 6.006, 6.046, CS170 |
| **Software Engineering** | 软件工程 | 3 | MIT 6.031, UCB CS169, CMU 17-803 |
| **Computer Systems** | 计算机系统基础 | 2 | CMU 15-213 (CSAPP), Stanford CS110 |
| **Computer Architecture** | 体系结构 | 4 | Nand2Tetris, CS61C, ETHz DDCA/CA |
| **Operating Systems** | 操作系统 | 4 | MIT 6.S081, UCB CS162, NJU OS, HIT OS |
| **Parallel & Distributed Systems** | 并行与分布式系统 | 2 | CMU 15-418/CS149, MIT 6.824 |
| **Computer Security** | 系统安全 | 6 | CS161, MIT 6.1600, MIT 6.858, CSE365, CSE466, SEED Labs |
| **Computer Networking** | 计算机网络 | 4 | CS168, CS144, Top-Down Approach (two versions) |
| **Database Systems** | 数据库系统 | 5 | CS186, CMU 15-445, CS122, CS346, CMU 15-799 |
| **Compilers** | 编译原理 | 6 | CS143, CS420, PKU/NJU/USTC/SJTU compilers |
| **Programming Languages** | 编程语言设计与分析 | 4 | CS242, NJU/PKU software analysis, Cambridge semantics |
| **Computer Graphics** | 计算机图形学 | 6 | GAMES101/202/103, CS148, CMU 15-462, USTC CG |
| **Web Development** | Web开发 | 4 | MIT web dev, CS142, Full Stack Open, CS571 |
| **Data Science** | 数据科学 | 1 | UCB Data100 |
| **Artificial Intelligence** | 人工智能 | 3 | Neural Networks: Zero to Hero, CS50 AI, CS188 |
| **Machine Learning** | 机器学习 | 3 | Coursera ML, CS229, CS189 |
| **ML Systems** | 机器学习系统 | 5 | AICS, CMU 10-414, TinyML, MLC, CSE234 |
| **Deep Learning** | 深度学习 | 11 | CS230, LHY, CMU 11-785, CS231n, CS224n, CS224w, CS285, and more |
| **Deep Generative Models** | 深度生成模型 | 3+3 | MIT 6.S184, roadmap, plus 3 LLM courses (CMU 11-868/667/711) |
| **Advanced ML** | 机器学习进阶 | 5 | CMU 10-708, STAT 8201, STA 4273, CS229M, roadmap |

> [!TIP]
> The site is fully bilingual — every course page has both a Chinese (`.md`) and English (`.en.md`) version. Toggle between languages using the language selector on [csdiy.wiki](https://csdiy.wiki/).

## 2. How to Read / Use This

### Intended reading approach

This is a **browse-by-topic** collection, not a linear textbook. You do not need to read
it front-to-back. The recommended approach:

1. **Start with the Foreword** (`index.md`) — understand the author's motivation and philosophy
2. **Read "How to Use This Book"** (`使用指南.md`) — practical orientation for self-learners
3. **Review the CS Learning Plan** (`CS学习规划.md`) — a suggested ordering and roadmap
4. **Browse topics** that match your current learning goals
5. **Pick a course** and follow its materials

### Prerequisites by reader type

| Reader | Suggested Starting Point |
|---|---|
| **Complete beginner** | Productivity Toolkit → Intro Programming (Python/CS61A) → Data Structures (CS61B) |
| **CS undergrad filling gaps** | Jump directly to any topic you're weak in; each course page is self-contained |
| **Career switcher** | CS Learning Plan → Intro Programming → Systems → Software Engineering |
| **Graduate student** | Advanced ML, Deep Learning, Deep Generative Models, ML Systems |
| **Experienced dev exploring** | Specific topics like Compilers, Distributed Systems, Security |

> [!NOTE]
> Most courses listed are in English with Chinese learning notes. The guide itself is available in both Chinese and English, but the underlying course materials are predominantly English-language university courses.

### What each course page contains

Every course entry follows a consistent structure:

- **Course metadata** — institution, course code, instructor, semester
- **Course description** — what the course covers and why it's recommended
- **Prerequisites** — what you should know before starting
- **Course resources** — links to lectures, assignments, textbooks, and supplementary materials
- **Community notes** — tips, experiences, and advice from learners who completed the course

## 3. Section Walkthroughs

### Productivity Toolkit (必学工具)

The largest individual section with **14 entries**, covering the essential tools every
CS student needs regardless of specialization. This section is unique because it focuses
on practical skills rather than academic courses.

Entries span text editors (**Vim**, **Emacs**), version control (**Git**, **GitHub**),
build systems (**GNU Make**, **CMake**), document preparation (**LaTeX**, thesis writing),
containerization (**Docker**), Windows package management (**Scoop**), daily workflow
tools, information retrieval, and network access tools. The **MIT Missing Semester** course
(`编程入门/MIT-Missing-Semester.md`) is closely related and covers shell, scripting, and
dev environment setup.

> [!TIP]
> If you're brand new to CS, start with MIT Missing Semester and the Git/GitHub entries before diving into any programming courses. These tools will be assumed knowledge throughout.

### Mathematics (数学基础 + 数学进阶)

Split across two sections: **Fundamental Mathematics** (3 courses) covers calculus,
linear algebra, and information theory — all from MIT. **Advanced Mathematics** (6 courses)
moves into discrete math (UCB CS70), probability theory (CS126), mathematics for CS
(MIT 6.042J), numerical analysis (MIT 18.330), convex optimization (Stanford EE364A),
and information theory with neural networks.

The progression is intentional: calculus and linear algebra first, then the discrete
and probabilistic foundations needed for algorithms and machine learning courses.

### Programming Introduction (编程入门)

The broadest entry point with **13 courses** organized by language: **Python** (CS61A,
CS50P, MIT 6.100L), **C** (Harvard CS50, Duke Coursera), **C++** (AUT1400, CS106L,
CS106B/X), **Java** (MIT 6.092), **Rust** (CS110L, CS220, CS431), and **Functional
languages** (Cornell CS3110 for OCaml, Haskell MOOC).

Also includes two meta-courses: **MIT Missing Semester** (shell and dev tools) and
**Sysadmin DeCal** (Linux system administration from UC Berkeley).

> [!IMPORTANT]
> The guide recommends starting with **UCB CS61A** (Python) as the flagship introductory course. It teaches programming concepts through Python, Scheme, and SQL using the SICP philosophy.

### Systems Track (计算机系统基础 → 体系结构 → 操作系统)

A natural three-course progression:

1. **Computer Systems** — CMU 15-213 (CSAPP) is the definitive systems course, supplemented by Stanford CS110
2. **Computer Architecture** — from low-level (Nand2Tetris) through UC Berkeley CS61C to ETHz graduate courses
3. **Operating Systems** — MIT 6.S081 (xv6), UCB CS162, plus Chinese university options from NJU and HIT

This is the "systems spine" of the curriculum. The guide positions CSAPP as the
gateway course that connects programming knowledge to hardware understanding.

### Algorithms & Theory (数据结构与算法)

Five courses spanning the full depth: **UCB CS61B** (intro data structures), **Coursera
Algorithms I & II** (Sedgewick), **MIT 6.006** (intro algorithms), **MIT 6.046**
(algorithm design and analysis), and **UCB CS170** (advanced/intractable problems).

### Security (系统安全)

Six courses making this one of the more complete sections: **UCB CS161** (intro security),
**MIT 6.1600** (foundations), **MIT 6.858** (systems security), **ASU CSE365** and
**CSE466** (intro and advanced cybersecurity), and **SEED Labs** (hands-on security
experiments).

### AI / ML / Deep Learning Pipeline

The guide structures the AI/ML track as a clear progression:

1. **Artificial Intelligence** (3 courses) — broad AI intro (CS188, CS50 AI, Neural Networks: Zero to Hero)
2. **Machine Learning** (3 courses) — classical ML (Coursera ML, CS229, CS189)
3. **Deep Learning** (11 courses) — the largest single topic, covering vision (CS231n), NLP (CS224n), graphs (CS224w), reinforcement learning (CS285), and general DL courses
4. **ML Systems** (5 courses) — production ML infrastructure (CMU 10-414, TinyML, MLC)
5. **Deep Generative Models** (6 courses including LLM sub-section) — generative AI, diffusion models, and large language model courses
6. **Advanced ML** (5 courses) — probabilistic graphical models, ML theory

> [!NOTE]
> The **Deep Generative Models** section includes a dedicated **Large Language Models** sub-section with three CMU courses (11-868, 11-667, 11-711), reflecting the growing importance of LLMs in the field.

### Databases, Networking, Compilers, and Other Specializations

Each of these areas gets a focused section with courses progressing from introductory
to advanced:

- **Databases** (5 courses): UCB CS186 → CMU 15-445 → implementation courses (CS122, CS346) → special topics (CMU 15-799)
- **Networking** (4 courses): UCB CS168, Stanford CS144, and two versions of the Top-Down Approach curriculum
- **Compilers** (6 courses): Stanford CS143 plus five Chinese university compiler courses (PKU, NJU, KAIST, USTC, SJTU)
- **Programming Languages** (4 courses): Stanford CS242, software analysis from NJU and PKU, Cambridge semantics
- **Computer Graphics** (6 courses): GAMES101/202/103 (Chinese), Stanford CS148, CMU 15-462, USTC CG
- **Web Development** (4 courses): MIT web dev, Stanford CS142, Full Stack Open, CS571
- **Data Science** (1 course): UCB Data100

### Supplementary Content

Beyond course pages, the guide includes:

- **Book Recommendations** (`好书推荐.md`) — curated reading list
- **CS Learning Plan** (`CS学习规划.md`) — a suggested course ordering and timeline
- **Postscript** (`后记.md`) — author reflections and community acknowledgments

## 4. Navigating the Site

The live site at [csdiy.wiki](https://csdiy.wiki/) is built with MkDocs Material and
provides several navigation aids:

| Feature | How to Use |
|---|---|
| **Search** | Built-in search supports both Chinese and English queries; use the search bar at the top |
| **Sidebar navigation** | Expandable topic tree mirrors the structure in this guide |
| **Language toggle** | Switch between Chinese (简体中文) and English using the language selector |
| **Dark/light mode** | Toggle via the sun/moon icon in the header |
| **Auto-hiding header** | The header hides on scroll-down and reappears on scroll-up for more reading space |
| **Open in new tab** | External links automatically open in new tabs |

> [!TIP]
> The site tracks your scroll position and updates the URL hash — you can share a link to a specific section of any course page by copying the URL from your browser.

## 5. Community and Contributing

The repository is actively maintained on GitHub at
[PKUFlyingPig/cs-self-learning](https://github.com/PKUFlyingPig/cs-self-learning/).
Community contributions are welcome — common contribution types include:

- **Adding new courses** — suggest high-quality courses not yet covered
- **Adding learning experiences** — share your notes and tips after completing a course
- **Translations** — help translate course pages between Chinese and English
- **Bug fixes** — correct broken links, typos, or outdated information

> [!NOTE]
> The repository uses Giscus for discussion comments on each page, powered by GitHub Discussions. If you find a comment mapped to the wrong page (see [#847](https://github.com/PKUFlyingPig/cs-self-learning/issues/847)), report it as a GitHub issue.

### Frequently requested additions

Based on open GitHub issues, the community has requested coverage of:

- Web3 development ([#815](https://github.com/PKUFlyingPig/cs-self-learning/issues/815))
- Recommendation systems ([#791](https://github.com/PKUFlyingPig/cs-self-learning/issues/791))
- Automatic control theory ([#509](https://github.com/PKUFlyingPig/cs-self-learning/issues/509))
- Game design and development ([#527](https://github.com/PKUFlyingPig/cs-self-learning/issues/527))
- iOS development with SwiftUI ([#824](https://github.com/PKUFlyingPig/cs-self-learning/issues/824))

## 6. Troubleshooting

### Problem: Course resource links are broken or outdated

**Cause:** University courses frequently restructure their websites between semesters.
Course pages may link to materials that have moved or been taken down.

**Solution:**
1. Check if the course has a newer semester version (search the university's course catalog)
2. Try the Internet Archive Wayback Machine for archived course pages
3. Open a GitHub issue reporting the broken link

**Prevention:** The community actively maintains links — checking the GitHub repository
for recent commits to a course page often reveals updated URLs.

### Problem: Cannot access course materials (login required)

**Cause:** Some courses (especially on Coursera or edX) gate materials behind enrollment
or payment. See [#825](https://github.com/PKUFlyingPig/cs-self-learning/issues/825)
and [#837](https://github.com/PKUFlyingPig/cs-self-learning/issues/837).

**Solution:**
1. Check if the course offers a free audit option
2. Look for the professor's personal page — many host materials directly
3. Search YouTube for the lecture recordings
4. Check if the course page in the guide lists alternative free sources

> [!WARNING]
> Do not use unofficial mirrors of paid course content. The guide links to legitimate, publicly available resources whenever possible.

### Problem: Giscus comments appear under the wrong page

**Cause:** The Giscus comment integration maps pages to GitHub Discussions by URL.
Certain pages (notably the Foreword/前言) can get incorrectly mapped. See
[#847](https://github.com/PKUFlyingPig/cs-self-learning/issues/847).

**Solution:** Report the mapping issue as a GitHub issue so the maintainers can
correct the Giscus configuration.

### Problem: English translations are incomplete or missing

**Cause:** The guide is primarily maintained in Chinese. English translations depend
on community contributions and may lag behind.

**Solution:**
1. Use browser translation tools for untranslated pages
2. Consider contributing a translation via pull request
3. The navigation labels are all translated (see the i18n configuration) even when
   page content is not yet fully translated

> [!TIP]
> The `template.md` and `template.en.md` files in the repository root provide the standard format for new course pages. Use these when contributing new entries to maintain consistency.

## 7. FAQ

**Q: Do I need to follow the courses in the exact order presented?**

No. The guide is organized by topic, not by a required sequence. However, the
"CS Learning Plan" page (`CS学习规划.md`) offers a suggested progression if you
want a structured path. Some courses do have prerequisites — these are noted on
each course page.

**Q: Are all courses free?**

The vast majority are freely accessible. Some Coursera courses require payment
for certificates but offer free audit access to materials. A few courses may
require university affiliation for full access to autograders or submission systems,
but lectures and readings are almost always free.

**Q: Is this guide only for Chinese-speaking learners?**

No. The site is fully bilingual (Chinese and English). The course materials
themselves are predominantly in English from American universities, making the
guide useful worldwide. The Chinese content primarily adds context, learning
tips, and community experiences.

**Q: How often is the guide updated?**

The repository is actively maintained with community contributions. The source
commit for this documentation is `3ec3100` (2026-02-24). Check the
[GitHub repository](https://github.com/PKUFlyingPig/cs-self-learning/) for the
latest updates.

**Q: Can I use this guide offline?**

You can clone the repository and build the site locally with MkDocs (see the
Admin Guide for build instructions). The markdown files are also readable
directly in any text editor or on GitHub.

**Q: I completed a course and want to share my experience. How?**

Open a pull request on GitHub adding your learning notes to the relevant course
page. Follow the template format (`template.md`) for consistency. The community
values honest assessments of difficulty, time commitment, and what you learned.

---

_Generated May 2026 from PKUFlyingPig/cs-self-learning at 3ec3100. AI-generated documentation. The library is checked by sampling (three repositories so far); this guide was not individually reviewed. Verify against the project before relying on it. Unofficial; not affiliated with or reviewed by the project._
