Textbooks

June 7, 2025

Updated June 18, 2025

The tag system below takes the intersection, not the union.

Algorithm Design Manual

A practical guide to algorithm design.

Algorithms

A lucid introduction to algorithms. It feels like an experienced professor guiding you through the subject. Topics include: recursion, backtracking, dynamic programming, greedy algorithms, graph algorithms, minimum spanning trees, shortest paths, maximum flows & minimum cuts, and NP-hardness.

Aesthetic review: the diagrams are clear and there is minimal but clean use of color. The footnotes are humorous.

Concrete Mathematics

Not an "abstract mathematics" book, but one that covers practical, CONtinuous and disCRETE topics. "The material [...] may seem at first to be a disparate bag of tricks, but practice makes it into a disciplined set of tools. Topics include: recurrent problems, sums, integer functions, number theory, binomial coefficients, special numbers, generating functions, discrete probability, and asymptopics.

Aesthetic review: it is beautifully typeset with AMS Euler math formulas and Tufte-style sidenotes.

Crafting Interpreters

A practical introduction to creating interpreters and compilers in Java and C. I only wish that it had used pattern-matching and not the visitor design pattern, but this is a language issue.

Aesthetic review: has beautifully hand-drawn diagrams, useful sidenotes, and a fantastic color palette. Clearly made with love.

Learn Rust in a Month of Lunches

Background: I've failed to learn Rust from the Book many times. The biggest problem was that I didn't have a computer systems background yet, and I didn't know how memory allocation and alignment worked yet. I also think my experiences with functional programming languages and C made me better appreciate the design choices Rust makes.

This book is the first book I've actually stuck with since taking a systems course. Everything in this book is also immediately practical. In addition to common language features, the book gives you a tour of Rust tooling and the most popular crates as well. This book was sufficient for writing a complex, multithreaded program.

I was reading this over the summer, so I appreciate that every chapter is lightweight. You can definitely read a chapter every day in the beginning (maybe a chapter every three days later on).

Operating Systems: Three Easy Pieces

An amazing book about operating systems. Extremely digestable with short chapters (51 over the course of 700 pages). Would help to have some background in computer systems and C programming.

Aesthetic review: nicely typeset. There is a set of student-teacher dialogues between major concepts and an annotated reference page after every chapter.

Outlive: The Scieince & Art of Longetivity

Currently reading. Live notes here: https://qiaochloe.com/outlive.