📚: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.
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 | ✔️ |
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 | ✔️ |
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 |
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 |
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 |
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 | ✔️ |
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.
-
YouTube channels: Corey Schafer, Tech With Tim, Gaurav Sen, The Net Ninja, Pretty Printed, Amigoscode, Telusko, and Web Dev Simplified.
-
Podcasts: The freeCodeCamp Podcast, Ladybug Podcast, Front End Happy Hour, Indie Hackers, The StackOverflow Podcast, and CodeNewbie.
-
Networking: Twitter and Meetup.com.
-
Jobs: LinkedIn, TripleByte, AngelList, WhiteTruffle, SmartHires, referrals from friends, and company websites.
-
Problem solving websites: I mainly use LeetCode. All my problem set solutions are located in my practice problem repository. Highly recommend NeetCode which curates and categorizes popular LeetCode problems.