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
- How to Code - Simple Data
- How to Code - Complex Data
- Software Construction - Data Abstraction
- Software Construction - Object-Oriented Design
- Programming Languages, Part A
- Programming Languages, Part B
- Programming Languages, Part C
- 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
- Required, to learn about logic programming, backtracking, unification: Learn Prolog Now!
- 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
Skip to the second course (Nand2Tetris) when the first course (CS50) moves away from C. (Why?)
- 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
- ops-class.org - Hack the Kernel
- Recommended: While Hack the Kernel recommends Modern Operating Systems as a textbook, we suggest using Operating Systems: Three Easy Pieces.
- Machine Learning
- Computer Graphics
- Cryptography I
- Software Engineering: Introduction
- Software Development Capstone Project
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.
- Software Debugging
- Software Testing
- LAFF - On Programming for Correctness
- Introduction to Parallel Programming (alt)
- Software Architecture & Design
- Reliable Distributed Systems, Part 1
- Reliable Distributed Systems, Part 2
- Electricity and Magnetism, Part 11
- Electricity and Magnetism, Part 2
- Computation Structures 1: Digital Circuits
- Computation Structures 2: Computer Architecture
- Computation Structures 3: Computer Organization
- Introduction to Logic
- Automata Theory
- Computational Geometry
- Introduction to Formal Concept Analysis
- Game Theory