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.
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.
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:
- Start with the Foreword (
index.md) — understand the author's motivation and philosophy - Read "How to Use This Book" (
使用指南.md) — practical orientation for self-learners - Review the CS Learning Plan (
CS学习规划.md) — a suggested ordering and roadmap - Browse topics that match your current learning goals
- 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:
- Computer Systems — CMU 15-213 (CSAPP) is the definitive systems course, supplemented by Stanford CS110
- Computer Architecture — from low-level (Nand2Tetris) through UC Berkeley CS61C to ETHz graduate courses
- 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:
- Artificial Intelligence (3 courses) — broad AI intro (CS188, CS50 AI, Neural Networks: Zero to Hero)
- Machine Learning (3 courses) — classical ML (Coursera ML, CS229, CS189)
- Deep Learning (11 courses) — the largest single topic, covering vision (CS231n), NLP (CS224n), graphs (CS224w), reinforcement learning (CS285), and general DL courses
- ML Systems (5 courses) — production ML infrastructure (CMU 10-414, TinyML, MLC)
- Deep Generative Models (6 courses including LLM sub-section) — generative AI, diffusion models, and large language model courses
- 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 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. 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), report it as a GitHub issue.
Frequently requested additions
Based on open GitHub issues, the community has requested coverage of:
- Web3 development (#815)
- Recommendation systems (#791)
- Automatic control theory (#509)
- Game design and development (#527)
- iOS development with SwiftUI (#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:
- Check if the course has a newer semester version (search the university's course catalog)
- Try the Internet Archive Wayback Machine for archived course pages
- 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 and #837.
Solution:
- Check if the course offers a free audit option
- Look for the professor's personal page — many host materials directly
- Search YouTube for the lecture recordings
- 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.
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:
- Use browser translation tools for untranslated pages
- Consider contributing a translation via pull request
- The navigation labels are all translated (see the i18n configuration) even when page content is not yet fully translated
Tip
The
template.mdandtemplate.en.mdfiles 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 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.