A collection of open-source, free courses from top universities in the United States offered on YouTube to serve as a comprehensive computer science degree. Become a self-taught computer scientist!
The purpose of this is to serve as a meticulously curated list of open-source and accessible high quality courses in computer science, with lectures available on YouTube from world-renowned institutions such as MIT, Harvard, Stanford, and UC Berkeley. This repository is not aimed to provide the resources of a full course (although many of these courses are offered for free through Coursera and EdX on Open Source Society University); it is a thorough, comprehensive exploration of everything from computer science fundamentals and principles to advanced topics designed for those who aspire to gain a deep and holistic understanding of the field for free, at their own pace on YouTube. Also, while this is intended to be from the university structured learning perspective, that style may not be for everyone. I recommend checking out CrashCourse for high-level overviews, taking a look at freeCodeCamp as they have some great videos, as well as reading and learning from engineering blogs at top companies for alternatives.
- Introductory Computer Science: This section is for learners new to the field, offering a taste of what computer science entails.
- Core Computer Science: This comprehensive segment covers the essentials, paralleling the first three years of a typical computer science undergraduate program.
- Advanced Computer Science: Reflecting the senior year of a computer science degree, this section offers advanced courses for learners to specialize in areas of interest.
While self-paced, the program is designed to be completed in approximately two years with a commitment of around 20 hours per week. Learners can track their progress using this spreadsheet, adapting their study schedule to personal commitments.
The core material, sourced from YouTube lectures, is entirely free. Some courses may recommend textbooks or supplementary materials which may incur costs, but these are optional. The community is encouraged to also open PRs with open-source or freely available textbooks, but EbookFoundation also has a great selection of resources here if that is your preferred learning style.
The repository welcomes contributions from its community. Whether it’s suggesting additional resources, helping to refine existing content, or offering peer support, every contribution enriches the learning experience for all.
While the curriculum is designed to be done in order, you can model your learning based on your current educational background. Although I would still recommend starting from the beginning; the refreshers from these courses can't hurt.
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Intro to Computer Science CS50 | Harvard | 12 Lectures | 4-6 hours/week | self-paced | none |
Intro to Computer Science 6.001 | MIT | 38 Micro-Lectures | 2-3 hours/week | self-paced | none |
Intro to Computer Science CS105 | Stanford | 69 Micro-Lectures | 3-4 hours/week | self-paced | none |
Programming Methodology CS106A | Stanford | 28 Lectures | 4-6 hours/week | self-paced | none |
Computation Structures | MIT | 172 Micro-Lectures or 26 full-length Lectures | 4-5 hours/week | self-paced | none |
Introduction to Computer Networking CS144 | Stanford | 24 Lectures | 1-2 hours/week | self-paced | none |
Computer Organization & Systems CS107 | Stanford | 15 Lectures | 2-3 hours/week | self-paced | none |
Operating Systems and Systems Programming CS162 | UC Berkeley | 27 Lectures | 4-6 hours/week | self-paced | none |
Introduction to Databases | Stanford | 12 Micro-Lectures | 0-1 hours/week | self-paced | none |
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Introduction to Probability for Computer Scientists CS109 | Stanford | 29 Lectures | 4-5 hours/week | self-paced | none |
Probability and Statistics 110 | Harvard | 35 Lectures | 4-5 hours/week | self-paced | none |
Mathematics for Computer Science 6.042J | MIT | 111 Micro-Lectures | 3-4 hours/week | self-paced | none |
Discrete Mathematics Math 55 | UC Berkeley | 28 Lectures | 4-5 hours/week | self-paced | none |
Discrete Mathematics and Probability Theory CS 70 | UC Berkeley | 28 Lectures | 4-5 hours/week | self-paced | none |
A Vision of Linear Algebra | MIT | 8 Lectures | 1-2 hours/week | self-paced | none |
Introduction to Applied Linear Algebra | Stanford | 54 Micro-Lectures | 3-4 hours/week | self-paced | none |
Linear Algebra | Princeton | 15 Lectures | 2-3 hours/week | self-paced | none |
Matrix Calculus for Machine Learning and Beyond 18.S096 | MIT | 17 Lectures | 1-3 hours/week | self-paced | none |
Single Variable Calculus 18.01 | MIT | 35 Lectures | 4-6 hours/week | self-paced | none |
Multivariable Calculus 18.02 | MIT | 35 Lectures | 4-6 hours/week | self-paced | Single Variable Calculus |
Multivariable Calculus Math 53 | UC Berkeley | 25 Lectures | 4-6 hours/week | self-paced | Single Variable Calculus |
Multivariable Calculus | Princeton | 14 Lectures | 4-6 hours/week | self-paced | Single Variable Calculus |
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Introduction to Algorithms 6.006 | MIT | 32 Lectures | 4-6 hours/week | self-paced | CS Fundamentals Course + Discrete Mathematics strongly recommended. |
Computer Architecture 18-447 | Carnegie-Mellon | 39 Lectures | 4-6 hours/week | self-paced | CS fundamentals strongly recommended. |
Human-Computer Interaction CS547 | Stanford | 259 Lectures | 5-6 hours/week+ | self-paced | CS fundamentals strongly recommended. |
Introduction to Database Systems 15-445/645 | Carnegie-Mellon | 25 Lectures | 4-5 hours/week | self-paced | CS fundamentals strongly recommended. |
Design and Analysis of Algorithms 6.046J | MIT | 34 Lectures | 4-6 hours/week | self-paced | CS fundamentals, intro to algorithms strongly recommended. |
Operating System Engineering 6.828 | MIT | 12 Lectures found | 2-3 hours/week | self-paced | CS fundamentals strongly recommended. |
Database Systems 6.830/6.814 | MIT | 14 Lectures found | 3-4 hours/week | self-paced | CS fundamentals strongly recommended. |
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Advanced Algorithms COMPSCI 224 | Harvard | 25 Lectures | 4-6 hours/week | self-paced | CS Intro to Algorithms Course + Discrete Mathematics minimum. |
Algorithms for Big Data COMPSCI 229r | Harvard | 25 Lectures | 4-5 hours/week | self-paced | CS Intro to Algorithms Course + Discrete Mathematics minimum. |
Advanced Database Systems 15-721 | Carnegie-Mellon | 23 Lectures | 3-4 hours/week | self-paced | CS fundamentals + core required. |
Distributed Systems 6.824 | MIT | 20 Lectures | 2-4 hours/week | self-paced | CS Intro to systems + fundamentals courses required. |
Distributed Computer Systems CS 436 | UWaterloo | 24 Lectures | 4-6 hours/week | self-paced | CS fundamentals + systems/architecture courses required. |
Performance Engineering of Software Systems 6.172 | MIT | 23 Lectures | 4-5 hours/week | self-paced | CS Intro to systems + fundamentals courses required. |
Theory of Computation 18.404J | MIT | 25 Lectures | 4-5 hours/week | self-paced | CS fundamentals + math core + CS core required. |
This section is for more specialized tracks in security, robotics, machine learning/artificial intelligence, and more.
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Introduction to Artificial Intelligence CS 188 | UC Berkeley | 25 Lectures | 3-4 hours/week | self-paced | CS fundamentals |
Artificial Intelligence CS221 | Stanford | 19 Lectures | 3-4 hours/week | self-paced | CS fundamentals |
Machine Learning CS229 | Stanford | 19 Lectures | 2-4 hours/week | self-paced | CS fundamentals |
Machine Learning Theory CS229M | Stanford | 20 Lectures | 3-5 hours/week | self-paced | CS fundamentals |
Intro to Deep Learning 6.S191 | MIT | 63 Lectures | 6-7 hours/week | self-paced | CS fundamentals |
Deep Learning CS230 | Stanford | 10 Lectures | 2-3 hours/week | self-paced | CS fundamentals |
Natural Language Processing with Deep Learning CS224N | Stanford | 23 Lectures | 3-4 hours/week | self-paced | CS fundamentals |
Natural Language Understanding XCS224U | Stanford | 50 Mixed-Lectures | 4-5 hours/week | self-paced | CS fundamentals + intro to ML |
Machine Learning with Graphs CS224W | Stanford | 60 Micro-Lectures | 3-4 hours/week | self-paced | CS fundamentals + Discrete Mathematics + Advanced Algorithms |
Deep Learning for Self-Driving Cars 6.094 | MIT | 9 Lectures | 2-3 hours/week | self-paced | CS fundamentals + intro to DL or ML |
Modern Computer Vision CS198-126 | UC Berkeley | 22 Lectures | 4-5 hours/week | self-paced | CS fundamentals + intro to DL or ML |
Reinforcement Learning CS234 | Stanford | 15 Lectures | 2-3 hours/week | self-paced | CS fundamentals + intro to ML |
Deep Multi-task and Meta Learning CS330 | Stanford | 17 Lectures | 4 hours/week | self-paced | CS fundamentals + intro to DL |
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Intro to Robotics | Princeton | 24 Lectures | 4-6 hours/week | self-paced | none |
Deep Learning for Self-Driving Cars 6.094 | MIT | 9 Lectures | 2-3 hours/week | self-paced | CS fundamentals + intro to DL or ML |
Reinforcement Learning CS234 | Stanford | 15 Lectures | 2-3 hours/week | self-paced | CS fundamentals + intro to ML |
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Fundamentals of Systems Engineering | MIT | 12 Lectures | 2-3 hours/week | self-paced | none |
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Computer Systems Security 6.858 | MIT | 26 Lectures | 3-4 hours/week | self-paced | CS fundamentals + cs systems fundamentals recommended. |
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
Statistical Learning with R | Stanford | 104 Micro-Lectures | 2-4 hours/week | self-paced | CS fundamentals |
Courses | School | Duration | Time Commitment | Frequency | Prerequisites |
---|---|---|---|---|---|
How to Start a Startup | YCombinator/Stanford | 21 Lectures | 3-5 hours/week | self-paced | none |
Fundamentals of Physics PHYS 200 | Yale | 24 Lectures | 4-5 hours/week | self-paced | Calculus |
Physics I: Classical Mechanics 8.01x | MIT | 40 Lectures | 4-6 hours/week | self-paced | Calculus |
Physics II: Electricity & Magnetism 8.02x | MIT | 40 Lectures | 4-6 hours/week | self-paced | Calculus + Physics I |
Physics III: Vibrations and Waves 8.03x | MIT | 24 Lectures | 3-4 hours/week | self-paced | Calculus + Physics I & II |
Quantum Physics I 8.04 | MIT | 115 Micro-Lectures | 4-6 hours/week | self-paced | Calculus + Physics |
General Relativity 8.962 | MIT | 23 Lectures | 3-5 hours/week | self-paced | Math + Physics |
Atomic and Optical Physics I 8.421 | MIT | 25 Lectures | 4-5 hours/week | self-paced | Math + Physics |