/my_open_source_cs

My free open source curriculum to learn computer science :books::octocat:

MIT LicenseMIT

my_open_source_cs

📚:octocat:

My free open source curriculum to learn computer science. Although it's not the path of least resistance, learning by doing is super effective: write code, make mistakes, learn from them, and most importantly enjoy the process.

This is a curated list of free courses from reputable universities that satisfy the same requirements as an undergraduate computer science degree, minus general education. Helpful resources have also been added for supplementary learning. Please feel free to star/fork this repository and personalize it to your own learning path.


Computer Science Basics / Programming

Courses School Duration Effort Frequency Prerequisites Status
Intro to Computer Science Harvard 10 weeks 10-20 hours/week self-paced none ✔️
Web Programming with Python and JavaScript Harvard 12 weeks 10-20 hours/week self-paced Intro to Computer Science ✔️

Math

Courses School Duration Effort Frequency Prerequisites Status
Calculus 1 URI 12 weeks 6-10 hours/week / Pre-calculus ✔️
Linear Algebra UT Austin 15 weeks 6-10 hours/week self-paced Pre-calculus
Pre-calculus URI 12 weeks 6-10 hours/week / Algebra ✔️
Introduction to Probability and Statistics URI 12 weeks 6-10 hours/week / Algebra ✔️
Algebra URI 12 weeks 6-10 hours/week / none ✔️

Systems

Courses School Duration Effort Frequency Prerequisites Status
Build a Modern Computer from First Principles: From Nand to Tetris Hebrew University of Jerusalem 6 weeks 5 hours/week twice a month basic programming knowledge ✔️
Build a Modern Computer from First Principles: From Nand to Tetris II Hebrew University of Jerusalem 6 weeks 10-15 hours/week once a month Build a Modern Computer from First Principles: From Nand to Tetris
Introduction to Operating Systems Georgia Tech 8 weeks 5-8 hours/week self-paced Build a Modern Computer from First Principles: From Nand to Tetris II

Theory

Courses School Duration Effort Frequency Prerequisites Status
Computer Science: Algorithms, Theory, and Machines Princeton 10 weeks 2-5 hours/week once a month Calculus 1A (all), basic programming
Algorithms, Part I Princeton 6 weeks 6-12 hours/week once a month Computer Science: Algorithms, Theory, and Machines
Algorithms, Part II Princeton 6 weeks 6-12 hours/week once a month Algorithms, Part I

Applications

Courses School Duration Effort Frequency Prerequisites Status
Machine Learning Stanford 11 weeks 5-7 hours/week twice a month Linear Algebra - Foundations to Frontiers
Database Management Essentials University of Colorado 7 weeks 4-6 hours/week twice a month basic programming & CS knowledge ✔️
Cryptography I Stanford 7 weeks 5 hours/week once a month Linear Algebra - Foundations to Frontiers & Introduction to Probability and Data

Unix

Courses School Duration Effort Frequency Prerequisites Status
Linux Command Line Basics Udacity 1 week 5 hours/week self-paced none ✔️
The Unix Workbench Johns Hopkins University 4 weeks 4 hours/week once a month none ✔️

Supplementary Materials

Before approaching any open source curriculum, please give these a watch/read: Self Taught Programmers: Advice, Challenges, and Why We Need Them (mayuko), How I would learn to code (If I could start over) (Jason Goodison), and How to Break into Tech.