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.
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.