explaingit

pkuflyingpig/self-learning-computer-science

4,707Audience · developerComplexity · 1/5Setup · easy

TLDR

A curated self-study guide for learning computer science using free courses from MIT, UC Berkeley, Princeton, and Harvard, covering math, algorithms, systems, and machine learning, created by a Peking University student.

Mindmap

mindmap
  root((self-learning-cs))
    Subject areas
      Math foundations
      Data structures
      Computer systems
      Machine learning
    Course sources
      MIT OpenCourseWare
      UC Berkeley
      Princeton
      Harvard
    What you get
      Course links
      Difficulty ratings
      Homework solutions
    Who it is for
      Self-taught developers
      CS students
      Career switchers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Follow a structured self-study path through computer science fundamentals using entirely free online courses.

USE CASE 2

Find top-rated MIT or Berkeley courses with the author's homework solutions to practice algorithms and data structures.

USE CASE 3

Plan a learning roadmap from programming basics all the way through machine learning without paying for a degree.

Getting it running

Difficulty · easy Time to first run · 5min

No code to install, just links to free external courses and the author's homework solutions on GitHub.

In plain English

This repository is a personal study guide created by a computer science undergraduate student at Peking University in China. Frustrated with standard university coursework, the author turned to free online courses from schools like MIT, UC Berkeley, Princeton, and Harvard, and compiled everything they worked through into this reference. The guide is organized into major subject areas: mathematics (calculus, linear algebra, probability, differential equations, numerical methods), programming basics, data structures and algorithms, electrical engineering fundamentals, computer architecture, machine learning and deep learning, computer systems, and software engineering. Each section contains a table of courses with links to the original course websites, a difficulty rating shown in stars, and in many cases a link to the author's own homework solutions on GitHub. Almost all linked courses are freely available online through MIT OpenCourseWare, UC Berkeley's course listings, or the courses' own public websites. The author also points to a few general resources for discovering high-quality courses, including the MIT OpenCourseWare catalog and a UC Berkeley course dependency map that shows how different classes build on each other. The repository also has a Chinese-language version, linked at the top of the README, which appears to be a more complete and actively maintained edition under a different repository name. The project is intended both as a personal record and as an invitation for others to follow a similar self-directed path. The author notes that struggling with a computer science course is often a sign of poor teaching rather than a personal failing, and that the subject becomes much more approachable with better materials. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
I want to follow the pkuflyingpig self-learning computer science guide. I know basic Python, what should I study first and in what order?
Prompt 2
Which courses from the self-learning-computer-science guide should I take to build a strong foundation for machine learning?
Prompt 3
How long would it realistically take to complete the full self-learning-computer-science curriculum while working full-time?
Prompt 4
What are the prerequisites for the computer architecture section in pkuflyingpig's self-learning guide, and which courses cover them?
Open on GitHub → Explain another repo

← pkuflyingpig on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.