Electronic References
Below is a loosely-categorized collection of links to CS textbooks in a variety of areas that are
freely available online, usually because they are one of the following:
- An open textbook (such as PLAI, SF, or the HoTT book)
- An older book that is out of print, for which the copyright has returned to the original author(s)
(such as TTFP)
- An author’s own preprint or draft of a textbook. This includes cases where the author has made
special arrangements with a publisher to host an electronic copy of a published text on their
homepage while it remains in print.
I also include below a list of papers I consider good stand-alone introductions to certain topics, and a list of links to thorough special topics courses.
If you find one of the links below is broken or has moved, feel free to let me know.
Those with time to spare and looking to have less of it may enjoy browsing the QA call numbers in UPenn’s extensive listing of online books. Most of those listed here were found independently over the years, but I’ve just now (June 2020) learned of this excellent repository of links. I’ll add to the links below as I find promising books.
Key:
- + = A book I have spent considerable time with and highly recommend.
- No prefix: a book I’ve perused casually, and looks good, but I have not (yet) spent much time with.
Programming Language Theory & Program Analysis (including Automata)
Topics such as semantics, types, abstract interpretation, proof assistants…
Mathematical Logic, Set Theory, Model Theory, Topology
This portion excludes category theory, which is now its own section below.
Software Engineering (Theory and Practice)
Category Theory and Applications
- Abstract and Concrete Categories: The Joy of Cats
- Computational Category Theory
- Toposes, Triples, and Theories
- +Topoi: The Categorical Analysis of Logic
(also at Project Euclid)
- Categories, Types, and Structures
- Higher Operads, Higher Categories
- Category Theory for Computing Science [pdf]
(Barr’s publications)
- *-Autonomous Categories
- Categorical Logic
- Abelian Categories
- Metric Spaces, Generalized Logic, and Closed Categories
- An introduction to fibrations, topos theory, the effective topos and modest sets
- Categorical Homotopy Theory
- Category Theory for Scientists (Manuscript)
- Categorical Algebra (technically a 1965 journal article from Bull. Amer. Math. Soc., 17(1):40–106, but up on Project Euclid.
- Higher Topos Theory: Author version,
arXiv version
- Basic Concepts of Enriched Category Theory
- The online journal Theory and Applications of Categories archives electronic versions of some out of print category theory textbooks: Reprints in Theory and Applications of Categories
- Category Theory for Programmers
- Higher Categories and Homotopical Algebra author preprint
- 2-Dimensional Categories
- First-Order Categorical Logic
- Generic Figures and Their Glueings: A Constructive Approach to Functor Categories
- +Category Theory in Context
Language Implementation
Systems & Networking (including Security, Architecture)
- +A Commentary on the Sixth Edition UNIX Operating System (and UNIX v6 source code)
- Distributed Systems, 3rd Edition by van Steen and Tanenbaum
- Linkers and Loaders
- Concurrency Control and Recovery in Database Systems
- Is Parallel Programming Hard, And, If So, What Can You Do About It?
- Operating Systems: Three Easy Pieces
- The TCP/IP Guide
- Notes on Theory of Distributed Systems, CPSC 465/565 (technically notes, but in practice an excellent textbook)
- +Practical File System Design with the Be File System
- Principles of Computer System Design (Authors share second half online, first half published in print by Elsevier)
- Foundations of Databases
- Security Engineering: A Guide to Building Dependable Distributed Systems
- Computer Networking
- Recent Advances in Networking, Volume 1
- Performance Evaluation Of Computer And Communication Systems
- The Network Calculus Book
- +Computer Networking: A Systems Approach
- Software Security: Principles, Policies, and Protection
- Principles of Electronic Devices
- NetBSD Internals
- Open Distributed Systems
- Foundations of Distributed Consensus and Blockchains
General CS Theory and Algorithms (including AI, ML, Data Science…)
Computational Linguistics & Natural Language Processing
Education
Language-Focused Introductions to Computer Science
Specific Programming Languages
While most of the books on this page are focused on more theoretical/foundational topics, sometimes you just need
to learn a programming language or look at some reference on a particular language feature.
- Scala
- OCaml
- Haskell
- Standard ML
- Scheme and LISP
- Erlang
- JavaScript
- Go
- Java
- Python
- Rust
- Ruby
Introductions to Programming and/or Computer Science
Some of the books listed in other categories are appropriate for someone looking to get started with
programming and/or computer science. I’ve duplicated those links in this section so they’re easier
to find if that’s what you need.
Concise Overview Papers
Paper Reading Lists, Courses, and Miscellaneous