Human Legacy Books
← All paths

Computer Science Foundations

advanced · 2 books

Goal

Build a foundation in how computation works and how to reason about programs — not just write them. This path focuses on ideas that do not go out of date: abstraction, recursion, algorithmic thinking, and the mathematics behind computation.

Who this is for

Self-taught developers or bootcamp graduates who can build software but feel gaps in the underlying theory. Also useful for engineers who studied CS but want to revisit the fundamentals with more experience behind them.

Prerequisites

Reading order

1. Structure and Interpretation of Computer Programs — Abelson & Sussman

Start here. SICP teaches you to think about programs as data, functions as values, and abstraction as the central tool of programming. Reading it will feel slow. That is correct.

Use MIT Scheme or Racket. Do not substitute Python or JavaScript — the language choice is intentional and the exercises depend on it.

Work through Chapter 1–3 before deciding whether to continue. Chapter 4, where you build an interpreter, is the payoff of the first three chapters. Chapter 5 (register machines) can be skipped on a first read without losing the core ideas.

Do the exercises. The exercises are not optional review — they are the book.

2. The Algorithm Design Manual — Steven Skiena

Read after SICP. By this point, you can think about programs abstractly. This book teaches you to recognize problem types and map them to known solutions.

Part 1 (Chapters 1–12) builds algorithm design intuition through real problems and war stories. Work through it sequentially.

Part 2 is a catalog of problem types mapped to algorithms. Do not read it linearly — use it as a reference. When you encounter a new problem, look it up here before writing code.

Solve problems on LeetCode or Codeforces alongside Part 1. Pick problems that match whatever chapter you just finished.

Optional books

Practice ideas

Expected outcome

After completing this path, you should be able to: