The Open Source Software University Playlist
Working my way, through watching these courses.
Studying the exercises, if I don’t have independant practice.
Skipping them otherwise.
If the title is struck through, I’m done.
If you want to see logs of the struggle, they’re here.
The main project page is over at Github.
Check it out, if this interests you.
Introduction to Computer Science
Courses
Core CS
Core programming
Courses
 How to Code  Simple Data
 How to Code  Complex Data
 Software Construction  Data Abstraction
 Software Construction  ObjectOriented Design
 Programming Languages, Part A
 Programming Languages, Part B
 Programming Languages, Part C
Readings
 Required to learn about monads, laziness, purity: Learn You a Haskell for a Great Good!

Note: probably the best resource to learn Haskell: Haskell Programming from First Principles
paid
 Required, to learn about logic programming, backtracking, unification: Learn Prolog Now!
Core math
Courses
 Essence of Linear Algebra
 Linear Algebra  Foundations to Frontiers (alt)
 Calculus 1A: Differentiation
 Calculus 1B: Integration
 Calculus 1C: Coordinate Systems & Infinite Series
 Mathematics for Computer Science
Core systems
Skip to the second course (Nand2Tetris) when the first course (CS50) moves away from C. (Why?)
Courses
 Introduction to Computer Science  CS50 (alt)
 Build a Modern Computer from First Principles: From Nand to Tetris (alt)
 Build a Modern Computer from First Principles: Nand to Tetris Part II
 Introduction to Computer Networking
 opsclass.org  Hack the Kernel
Readings
 Recommended: While Hack the Kernel recommends Modern Operating Systems as a textbook, we suggest using Operating Systems: Three Easy Pieces.
Core theory
Courses
Core applications
Courses
 Databases
 Machine Learning
 Computer Graphics
 Cryptography I
 Software Engineering: Introduction
 Software Development Capstone Project
Advanced CS
After completing every required course in Core CS, students should choose a subset of courses from Advanced CS based on interest. Not every course from a subcategory needs to be taken. But students should take every course that is relevant to the field they intend to go into.
Advanced programming
Courses
 Compilers
 Software Debugging
 Software Testing
 LAFF  On Programming for Correctness
 Introduction to Parallel Programming (alt)
 Software Architecture & Design
Advanced math
Courses
Advanced systems
Courses
 Reliable Distributed Systems, Part 1
 Reliable Distributed Systems, Part 2
 Electricity and Magnetism, Part 1^{1}
 Electricity and Magnetism, Part 2
 Computation Structures 1: Digital Circuits
 Computation Structures 2: Computer Architecture
 Computation Structures 3: Computer Organization
^{1} Note: These courses assume knowledge of basic physics. (Why?) If you are struggling, you can find a physics MOOC or utilize the materials from Khan Academy: Khan Academy  Physics
Advanced theory
Courses
 Introduction to Logic
 Automata Theory
 Computational Geometry
 Introduction to Formal Concept Analysis
 Game Theory