Computer Science
Computer Science
Programming
Finished!
Notes
- Work through at least the first three chapters of SICP and doing the exercises. For additional practice, work through a set of small programming problems like those on exercism.
Additional
Same course but with python instead of Scheme (Stk)
- Books: Composing Programs
- Lectures: 61A taught by John DeNero at Berkley.
Computer Architecture
WIP
- Computer Systems: A Programmer’s Perspective. Most courses go from chapter 1 to 6. Do this course
- The Elements of Computing Systems (Nand2Tetris). Each chapter involves building a small piece of the overall system, from writing elementary logic gates in HDL, through a CPU and assembler, all the way to an application the size of a Tetris game.
Algorithms and Data Structures
- The Algorithm Design Manual (book)
- Skiena’s or Tim’s on Coursera (video lectures)
Additional
- Leetcode
- Problem solving book after the manual: How to Solve It
Mathematics for Computer Science
- MIT Lecture Notes (book)
- MIT Video Lectures (video lecture)
Operating Systems
- Operating Systems: Three Easy Pieces (book)
- xv6 labs (labs)
Computer Networking
- Computer Networking: A Top-Down Approach (book)
- Standford: Introduction to Computer Networking course (video lectures)
- Wireshark labs (labs)
Databases
Languages and Compilers
- Crafting Interpreters. Introductory book. (book)
- Compilers: Principles, Techniques & Tools. More traditional recommendation. (book)
Distributed Systems
- Designing Data-Intensive Applications. Practice oriented. (book)
- Distributed Systems, 3rd Edition. More traditional. (book)