This is another list on the internet (among thousands of others) that compiles courses and books from various sources to help you achieve your self-study goals.
*CS = Computer Science (if you're wondering!)
artwork by Nadin Burqan (License)
Background
I completed my undergraduate degree (B. Tech IT) in 2022. Due to COVID-19, I (we) spent almost half of my (our) college days at home, attending online lectures. Even though it was hard at first, people adapted to the situation pretty quickly and pretty well. Given that experience, I can now say that it is indeed possible to learn stuff by ourselves with enough discipline and willpower. Hence, one fine day, I decided to make a list that took freakin' forever to make!
Is this a substitute for college education?
Now, don't get me wrong! This list is by no means a substitute for a real college education. I've seen the best of both worlds, and this is just an attempt to provide you the best of one of those worlds. I strongly suggest you get a college education if you have the necessary resources. You can learn things by yourself anytime at your will, but you can't say the same about college education. The peers and the teaching assistance that you get are invaluable. We often undervalue the elements of teamwork, conflict management and sharing responsibilities that a college education provides. The other thing is we can only do so much with our willpower. It drains out pretty fast (sad emoji). So, college > self-learning for most people.
Target audience
Both beginners and experienced professionals can make use of this list. This gives you an overall picture (that I didn't have back then) of how the foundational subjects are connected and some of the best (mostly free) resources to teach those subjects to yourself. This list can save you from the search spiral for the best resources on the internet. Pick a course from the lot and go to depths no one had ever reached.
This list is by no means exhaustive. It is more like a stripped-down version of a UG program. The myriad of electives, majors and minors are all gone.
Getting the best out of these resources
Stop treating video lectures as your primary resource. Of course, they are helpful, but learning doesn't happen there. Take time to solve the problem sets or exercises that come along with a course or a book. Real learning happens when you put effort into solving them and while you sleep (you must sleep well - extremely important). The problems you work on shouldn't be too hard or too easy. The problem should feel hard and doable (find a sweet spot), and it is absolutely fine to look at a solution sometimes.
Take it easy! Not every day is a good day, and that's okay. Come back tomorrow and start again. You can succeed in this only if you enjoy what you're doing.
Flow diagram
Get a copy (light, light and transparent, dark, dark and transparent)
-
We don't have an accurate measure of the time necessary to complete the courses. So, I've used "Levels" to suggest the hierarchy (contrary to the semester system that a typical college uses).
-
The arrows might not be very accurate in representing the flow. So, take it with a pinch of salt. It is okay to move to a subject that's not connected. Just be wary of the requisites of a particular course.
-
The bridge courses are particularly unique. They are a list of courses that connect subjects across disciplines. Go through their course pages to see if it is suitable for you.
Resources
Since the flow diagram categorises the subjects in "levels", I've refrained from doing that again here. The subjects are grouped by their discipline instead.
Table of Contents
Requisite
- Deep Teaching Solutions (Coursera) - Learning How to Learn (Course) (Professor)
- Khan Academy - High School Mathematics and Science (Website)
- MIT OpenCourseWare - Introduction To Computer Science And Programming In Python {6.0001} (Course)
- Harvard - Introduction to Computer Science {CS50} (Course Page)
- MIT OpenCourseWare - Introduction To Computer Science And Programming In Python {6.0002} (Course)
Pure Science
Continuous Mathematics
Primary
Additional
- Thomas' Calculus by Joel Hass, Christopher Heil, Maurice D. Weir (Book)
- Calculus by James Stewart (Book)
- Advanced Engineering Mathematics by Erwin Kreyszig (Book)
Linear Algebra
Primary
- MIT OpenCourseWare - Linear Algebra {18.06SC} (Course)
- Introduction to Linear Algebra by Gilbert Strang (Book)
Additional
- Elementary Linear Algebra, Applications Version by Howard Anton, Chris Rorres and Anton Kaul (Book)
- Linear Algebra by Jim Hefferon (Book) (Video Lectures)
- Linear Algebra and Its Applications by David C Lay, Judi McDonald and Steven R Lay (Book)
- Linear Algebra Done Wrong by Sergei Treil (Book)
- Linear Algebra Done Right by Sheldon Axler (Book)
Discrete Mathematics
Primary
- MIT Open Learning Library - Mathematics for Computer Science {6.042J} (Course) (Class Text)
Additional
- UC Berkeley - Discrete Mathematics and Probability Theory {CS70} (Course Page)
- Discrete Mathematics and Its Applications by Kenneth H. Rosen (Book)
- Discrete Mathematics with Applications by Susanna S. Epp (Book)
- Concrete Mathematics by Graham, Knuth, and Patashnik (Book)
- Building Blocks for Theoretical Computer Science by Margaret M. Fleck (Book)
- Notes on Discrete Mathematics by James Aspnes (Lecture Note - Link 1, Link 2)
- An Infinite Descent into Pure Mathematics by Clive Newstead (Book)
- Discrete Mathematics: An Open Introduction by Oscar Levin (Book)
Probability
Primary
- MIT OpenCourseWare - Probabilistic Systems Analysis And Applied Probability {6.041SC} (Course)
- Introduction to Probability by Dimitri Bertsekas and John Tsitsiklis (Book)
Additional
- Probability: An Introduction by D. J. A. Welsh and Geoffrey Grimmett (Book)
- Harvard University - Probability {Statistics 110} (Course)
- Carnegie Mellon University - Intermediate Statistics {36-705} (Course Page)
Physics
Primary
- MIT OpenCourseWare - Physics I: Classical Mechanics {8.01SC} (Course)
- MIT OpenCourseWare - Physics II: Electricity And Magnetism {8.02} (Course)
- MIT OpenCourseWare - Physics III: Vibrations And Waves {8.03SC} (Course)
- MIT OpenCourseWare - Quantum Physics I {8.04} (Course)
- MIT OpenCourseWare - Quantum Physics II {8.05} (Course)
- MIT OpenCourseWare - Quantum Physics III {8.06} (Course)
Additional
Chemistry
Primary
- MIT OpenCourseWare - Principles Of Chemical Science {5.111SC} (Course) OR Introduction To Solid State Chemistry {3.091SC} (Course)
- MIT OpenCourseWare - Laboratory Chemistry {5.310} (Course)
- MIT OpenCourseWare - Physical Chemistry {5.61} (Course)
Additional
Electrical Engineering
Circuits And Electronics
Primary
- MIT OpenCourseWare - Circuits And Electronics {6.002} (Course)
- MIT OpenCourseWare - Practical Electronics {EC.S06} (Course)
Additional
Bridge Courses I
- MIT OpenCourseWare - Introduction To Electrical Engineering And Computer Science I {6.01SC} (Course)
- MIT OpenCourseWare - Introduction To EECS II: Digital Communication Systems {6.02} (Course)
Signals and Systems
Primary
- MIT OpenCourseWare - Signals And Systems {6.003} (Course)
- MIT OpenCourseWare - Signals, Systems And Inference {6.011} (Course)
Additional
- MIT OpenCourseWare - Discrete-Time Signal Processing {6.341} (Course)
- DSP Related (Website)
- The Scientist and Engineer's Guide to Digital Signal Processing by Steven W. Smith (Book)
- Foundations of Signal Processing by Jelena Kovačević, Martin Vetterli, and Vivek Goyal (Book)
Computer Science (level 1, 2 and 3)
Programming
Primary
- UC Berkeley - Structure and Interpretation of Computer Programs {CS 61A} (Course Page)
OR
- MIT OCW - Structure And Interpretation Of Computer Programs {6.001} (Course)
OR
- Stanford (SEE) - Programming Methodology {CS106A} (Course)
- Stanford (SEE) - Programming Abstractions {CS106B} (Course)
- Stanford (SEE) - Programming Paradigms {CS107} (Course)
OR
- University of Washington (Coursera) - Programming Languages, Part A (Course)
- University of Washington (Coursera) - Programming Languages, Part B (Course)
- University of Washington (Coursera) - Programming Languages, Part C (Course)
Additional
- Composing Programs by John DeNero (Book)
- Structure and Interpretation of Computer by Gerald Jay Sussman, Hal Abelson, and Julie Sussman (Book)
- How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi (Book)
Data Structures and Algorithms
Primary
- UC Berkeley - Data Structures {CS 61B} (Course Page)
- MIT OCW - Introduction To Algorithms {6.006} (Course)
- MIT OCW - Design And Analysis Of Algorithms {6.046J} (Course)
Additional
- Princeton University (Coursera) - Algorithms (Course - Part 1, Part 2) (Professor)
- Stanford University (Coursera) - Algorithms Specialization (Course) (Professor)
- Stony Brook University - Analysis of Algorithms {CSE 373} (Lectures)
- How to Solve It by George Pólya (Book)
- Algorithms by Christos Papadimitriou, Sanjoy Dasgupta, and Umesh Vazirani (Book)
- Algorithm Design by Jon Kleinberg and Éva Tardos
Computer Architecture
Primary
- UC Berkeley - Great Ideas in Computer Architecture (Machine Structures) {CS 61C} (Course Page) (Video Lectures)
- Computer Organization and Design (RISC-V Edition) by David Patterson and John Hennessy
Additional
- The Elements of Computing Systems by Noam Nisan and Shimon Schocken (Book) (Course - Part 1, Part 2)
- Computer Systems: A Programmer's Perspective by Randal E. Bryant and David R. O'Hallaron (Book) (Accompanying Course)
- Carnegie Mellon University - Introduction to Computer Architecture {18-447} (Course Page) (Video Lectures)
- Computer System Architecture by M. Morris Mano (Book)
Database Management Systems
Primary
- Carnegie Mellon University - Database Systems {CMU 15-445/645} (Course Page) (Video Lectures)
- Database System Concepts by Abraham Silberschatz, Henry F. Korth, and S. Sudarshan (Book)
Additional
- StanfordOnline (edX) - Databases (Course - Part 1, Part 2, Part 3, Part 4 and Part 5)
- UC Berkeley - Introduction to Database Systems {CS 186} (Course Page) (Video Lectures)
- Carnegie Mellon University - Advanced Database Systems {CMU 15-721} (Course Page) (Video Lectures)
- Readings in Database Systems (a.k.a. "Red Book") (Website)
- Database Management Systems by Raghu Ramakrishnan and Johannes Gehrke (Book)
- Modern Database Management by Jeff Hoffer, Ramesh Venkataraman and Heikki Topi (Book)
- SQL Style Guide (Website)
- SQL Murder Mystery (Website)
- SQL Pratice (Website)
Operating Systems
Primary
- Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (Book) (HW Solutions)
- UC Berkeley - Operating Systems and System Programming {CS 162} (Course Page)
Additional
- Operating System Concepts by Abraham Silberschatz, Greg Gagne, and Peter Baer Galvin (Book)
- Modern Operating Systems by Andrew Tanenbaum (Book)
- Operating Systems: Principles and Practice by Thomas Anderson and Michael Dahlin (Book)
Computer Networks
Primary
- Computer Networking: A Top-Down Approach by Jim Kurose and Keith W. Ross (Book) (Resources)
- Stanford University - Introduction to Computer Networking {CS144} (Course Page) (Video Lectures)
Additional
- Computer Networks: A Systems Approach by Bruce S. Davie and Larry L. Peterson (Book)
Computer Science (level 4 and 5)
Theory of Computing
Primary
- MIT OCW - Theory Of Computation {18.404J} (Course)
- Introduction to the Theory of Computation by Michael Sipser (Book)
Additional
- StanfordOnline (edX) - Automata Theory (Course)
- Introduction to Automata Theory, Languages by Jeffrey Ullman, John Hopcroft, and Rajeev Motwani (Book)
- Automata and Computability by Dexter Kozen (Book)
- Elements of the Theory of Computation by Christos Papadimitriou and Harry R. Lewis (Book)
- Computational Complexity: A Modern Approach by Sanjeev Arora and Boaz Barak (Book)
- Mathematics and Computation: A Theory Revolutionizing Technology and Science by Avi Wigderson (Book)
- The Nature of Computation by Cristopher Moore and Stephan Mertens (Book)
Artificial Intelligence
Primary
Additional
- MIT OCW - Artificial Intelligence {6.034} (Course)
- Stanford - Artificial Intelligence: Principles and Techniques {CS221} (Video Lectures)
- Artificial Intelligence: A Modern Approach by Peter Norvig and Stuart J. Russell (Book)
- University of Technology Sydney - Emerging Topics in Artificial Intelligence {43023} (Website)
Parallel Programming
Primary
Additional
- The Art of Multiprocessor Programming, Revised Reprint by Maurice Herlihy and Nir Shavit (Book)
- Java Concurrency in Practice by Brian Goetz (Book)
- École Polytechnique Fédérale de Lausanne (Coursera) - Parallel programming (Course)
Software Architecture
Primary
- University of Alberta (Coursera) - Software Design and Architecture Specialization (Course)
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Book)
Additional
- Head First Design Patterns by Eric Freeman, Elisabeth Robson, Bert Bates and Kathy Sierra (Book)
- Refactoring Guru (Website)
- Java Design Patterns (Website)
- Software Architecture Guide (Blog)
Bridge Courses II
Compilers
Primary
- StanfordOnline (edX) - Compilers (Course)
Additional
- Crafting Interpreters by Robert Nystrom (Book)
- Cornell University - Advanced Compilers: The Self-Guided Online Course {CS 6120} (Course Page)
- Compilers: Principles, Techniques, and Tools by Ravi Sethi, Alfred Aho, Jeffrey Ullman and Monica S. Lam (Book)
- Engineering a Compiler by Keith D. Cooper and Linda Torczon (Book)
- Modern Compiler Implementation by Andrew Appel (Book)
- Understanding and Writing Compilers by Richard Bornat (Book)
- Advanced Compiler Design and Implementation by Steven Muchnick (Book)
- List of compiler books (Wiki Page)
Machine Learning
Primary
- Stanford (SEE) - Machine Learning {CS229} (Course)
Additional
- Stanford x DeepLearning.AI (Coursera) - Machine Learning Specialization (Course)
- MIT - Introduction to Deep Learning {6.S191} (Course)
- DeepLearning.AI (Coursera) - Deep Learning Specialization (Course)
Distributed Systems
Primary
Additional
- University of Waterloo - Distributed Computer Systems {CS436} (Course Page) (Video Lectures)
- Distributed Systems Reading Group (Website)
- Gossip Glomers (Website)
- Distributed systems theory for the distributed systems engineer (Blog)
- Distributed Systems: Principles and Paradigms by Andrew S. Tanenbaum and Maarten van Steen (Book)
- Distributed Algorithms: An Intuitive Approach by Wan Fokkink (Book)
- Distributed Algorithms by Nancy Lynch (Book)
Embedded Systems
Primary
Additional
- Arm Education (edX) - Embedded Systems Essentials (Course)
- Arm Education (edX) - Advanced Embedded Systems (Course)
Security
Primary
- Rochester Institute of Technology (edX) - Cybersecurity MicroMasters® Program (Course)
- University of California, Davis (Coursera) - Secure Coding Practices Specialization (Course)
Additional
- Cryptography and Network Security - Principles and Practice by William Stallings (Book)
- Computer Security by Dieter Gollmann (Book)
- Network Security: Private Communication in a Public World by Charlie Kaufman, Radia Perlman and Mike Speciner (Book)
- Security Engineering by Ross J. Anderson (Book)
Computer Science (level 6 and more)
Computer Graphics
- MIT OCW - Computer Graphics (Course) (Video Lectures)
- UC Berkeley - Computer Graphics and Imaging {CS184/284A} (Course Page)
- University of California San Diego (edX) - Computer Graphics (Course)
- CMU - COMPUTER GRAPHICS {15-462/662} (Course)
- ColumbiaX - Animation and CGI Motion (Course)
- TU Wien - Rendering / Ray Tracing (Videos)
- Scratchapixel (Website)
- Fundamentals of Computer Graphics by Peter Shirley (Book)
- Physically Based Rendering by Matt Pharr, Wenzel Jakob and Greg Humphreys (Book)
Cloud Computing
- IBM (Coursera) - Introduction to Cloud Computing (Course)
- Google Cloud Certification (Website)
- Microsoft Azure Certification (Website)
- AWS Certification (Website)
Web Technologies
- Meta (Coursera) - Front-End Developer (Course)
- Meta (Coursera) - Back-End Developer (Course)
- The Odin Project (Website)
- Full Stack open (Website)
Advanced Data Structures and Algorithms
- MIT OCW - Advanced Algorithms {6.854J} (Course)
- MIT OCW - Advanced Data Structures {6.851} (Course)
- Harvard - Advanced Algorithms {CS 224} (Course)
- Algorithms Illuminated by Tim Roughgarden (Book)
- The Art of Computer Programming by Donald Knuth (Book)
Others
Software Engineering
- IBM (Coursera) - Introduction to Software Engineering (Course)
- Agile Manifesto (Website)
- Agile Modeling (Website)
- Agile And Scrum Videos & Tutorials (Website)
Ethics
- Eindhoven University of Technology (Coursera) - Ethics, Technology and Engineering (Course)
- University of Michigan (Coursera) - Ethics in Engineering (Course)
- Design Justice by Sasha Costanza-Chock (Book)
- Value Sensitive Design by Batya Friedman and David G. Hendry (Book)
References
I had to look through a ton of websites and forum pages to find and build this list. I'll put out some of them here. There is a high chance that they might serve your needs even better.
Similar Compilation
Computer Science course catalogues from Universities
FIN