How to Learn Computer Science

Table of Contents

  1. Math
  2. nand2Tetris
    1. Materials
    2. Projects
  3. Visual Computing
    1. Creative Coding
    2. Graphics
    3. Visualization
  4. Systems Programming
    1. Computer Architecture
    2. Operating Systems, Distributed Systems, Cloud Computing
    3. Programming Languages
  5. Tools & Engineering Skills

Math

nand2Tetris

Nand2Tetris is a pioneering online course taught by Shimon Shocken and Noam Nisan that teaches how to build a computer from the ground up. Though the materials seem easy upon first glance, they are quite challenging even for the experienced programmer. People who have finished the course have gone on to complete projects including physically implementing the Hack Computer and building new games beyond Tetris. I wish I had reviewed this course before taking computer systems in my undergrad because I would have had a more systematic way of debugging low-level bugs.

Materials

Visual Computing

Creative Coding

Systems Programming

Computer Architecture

Tools & Engineering Skills