Henry Lee  — Blog

Course Reviews

February 26, 2025

My reviews of some courses that I took in 2023 and 2024.


6.5840 MIT - Distributed Systems

Covers many interesting papers in the field - Raft, Zookeeper, Spanner, …
Lab exercises were fun, and mostly implemented Raft in Go.


18.098 MIT - Street-Fighting Mathematics

Covers many simple but clever tricks for estimating values, inferring relationships between variables, and proving statements.
Almost no prerequisite knowledge needed.


EE364a Stanford - Convex Optimization I

Covers convexity, duality, Newton’s method, barrier method, and many applications.
Prof. Stephen Boyd’s lectures were surprisingly interesting as he often shares personal experience of practical applications.


EECS70 UCB - Discrete Mathematics and Probability Theory

Discrete math portion covers logic, proofs, stable matching, graphs, modulo arithmetic, coding theory, combinatorics and computability*.
Probability portion covers random variables, covariance, correlation, confidence inequalities, conditional probability and Markov chains.
No-frills and well paced.
*I recommend reading The Annotated Turing on computability (and its history).


DS-GA 1008 NYU - Deep Learning

An introduction to DL that is rich in both theory and practice (with PyTorch), with lots of pretty visualizations. Covers the basics* (backpropagation, CNNs, optimizers, …), RNNs, transformers, autoencoders, GANs, self-supervised learning and energy-based models. Taught in part by Yann LeCun.
*Alternatively, the Deep Learning Book is great for learning DL basics.


Deepmind X UCL - Reinforcement Learning

Covers MDP, Bellman equations, DP, TD-learning, SARSA, Q-learning, Actor-Critic, MCTS. The final assignment applies RL to the Easy21 game. Taught by David Silver.
I took an old (2015) iteration of this course which is outdated by now. (E.g. Didn’t cover the very well-known PPO)


Nand2Tetris

Covers building a computer (which eventually plays Tetris) from a bunch of NAND gates. Hardware Design Language (HDL) was written and tested in Nand2Tetris’ online IDE.
Very interesting how just a few primitives — NAND gates, Data Flip-Flops (for registers), ROM, and peripherals (screen and keyboard) — is sufficient to build a computer.
I also found Algorithmica and CS:APP to be great resources for learning more about low-level CS.


henrlly [at] icloud [dot] com

github.com/henrlly
linkedin.com/in/henrlly
RSS