
How to Design Programs: An Introduction to Programming and Computing
Matthias Felleisen; Robert Bruce Findler; Matthew Flatt; Shriram Krishnamurthi
94 selected books, grouped by course
Compare three books with short trial tasks, follow a six-step reading route, and test your reasoning with worked examples and changed assumptions.
Compare three algorithms books through proof, reference and modeling needs, then solve original weighted-scheduling problems with checked recurrences.
Computer ScienceData StructuresCompare free rigorous analysis, a Java implementation text and an intuitive guide, then audit original resizing and shrink-threshold examples.
Computer ScienceMachine Learning and Artificial IntelligenceCompare two free statistical-learning routes with a broad AI reference, then audit original grouped validation and a changed deployment target.
Computer ScienceComputer NetworksCompare three networking routes, then solve original transmission and window examples that separate payload rate, serialization, propagation and assumptions.
Computer ScienceOperating SystemsCompare a free concepts text, a small RISC-V kernel and a broad reference, then solve original event traces and a changed synchronization rule.
Computer ScienceIntroduction to ProgrammingCompare three Python introductions, follow six concrete programming tasks, and debug an original example that distinguishes zero from missing data.
Computer ScienceDatabase SystemsCompare database design, systems and theory texts; use original SQL cases to distinguish keys, missing values, empty matches and join multiplicity.
A place to start
Suggested reading compiled by this site for university students and independent learners. This is not an official university reading plan. Check your own syllabus before buying; editions and exercise numbers differ.
Browse all books ↓If you are new to programming, begin with a course-level introduction and write small programs. Then choose a branch: algorithms, databases, operating systems or architecture. A book’s depth and programming language matter; one title cannot cover the whole discipline.
Books are grouped by the course they are usually read for, then ordered from introductory to advanced.
Study guides: Choose a Python first book and build a program you can test →
Study guides: Data structures: defend an invariant and an operation cost →
Study guides: Algorithmic reasoning: choose a text and justify an optimization →
Study guides: Operating systems: explain an interleaving before choosing a lock →
Study guides: Computer networks: choose a text and account for every delay →
Study guides: Relational databases: choose a book and audit the result grain →
Study guides: Machine learning: match the validation unit to the prediction task →