Computer Science Books

Theoretical Foundations of Programming

Code: Hidden Language

A non-fiction book meant for casual readers who want to understand computer technology.

Elements of Computing Systems

Build a computer from scratch. Covers hardware architecture, operating systems, compilers, algorithms, and software engineering.

How Computers Work

Explains how the processor and memory units work in a computer.

The Annotated Turing

Covers Alan Turing's original paper on computation. The author includes biography snippets and jargon-free explanations.

Intro to the Theory of Computation

A readable introduction to computer science covering automata, computability, and complexity.

Computer Organization and Design

Explains the interface between hardware and software. Covers instruction sets, computer arithmetic, computer hardware, and more.

Data Structures and Algorithms

An introduction on how to store and organize data via data structures.

Algorithms in a Nutshell

Meant as a desktop reference to common algorithms, but can also be used as an introductory text.

SICP

Structure and Interpretation of Computer Programs is the classic book on abstraction and modularity of programming.

Design Patterns

The "Gang of Four Book" covers common patterns you'll see in software engineering.

Art of Concurrency

An introduction to concurrent programming using the C language.

Compilers

The "Dragon Book" is the classic textbook on compilers and interpreters.