Electronic References
Below is a looselycategorized 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 standalone 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.
Note: These categories have grown quite unevenly over time, and in a rather ad hoc fashion. Iâ€™m planning to overhaul the categorization here in the near future.
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
 2Dimensional Categories
 FirstOrder Categorical Logic
 Generic Figures and Their Glueings: A Constructive Approach to Functor Categories
 +Category Theory in Context
 Higher Categories and Homotopical Algebra
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
 A collection of books on Illumos internals and systems
General CS Theory and Algorithms (including AI, ML, Data Scienceâ€¦)
This section will be split into more categories soon.
 Foundations of Computer Science
 Linear Programming: Foundations and Extensions
 The Design of Approximation Algorithms
 Mining of Massive Datasets
 ModelBased Machine Learning
 Foundations of Data Science
 Think Data Structures
 Think Bayes: Bayesian Statistics Made Simple
 Think Stats

Algorithmic Game Theory
 This oneâ€™s a bit awkward to find: Click on the â€śResourcesâ€ť tab (right of Description and
Contents), and in the resulting â€śGeneral Resourcesâ€ť sidebar that appears to the left, click
on the book title. In the table that appears, click where the book title appears under the
â€śNameâ€ť column; this is the full PDF of the book.

Reinforcement Learning: An Introduction (also, direct PDF of
author preprint of 2nd edition here)
 Reinforcement Learning: An Introduction, 2nd Edition
 Machine Learning for Data Streams: with Practical Examples in MOA
 Fairness and Machine Learning
 Deep Learning
 Algorithms Illuminated
 Seeing Theory: A Visual Introduction to Probability and Statistics
 Mathematics for Machine Learning
 The Joy of Cryptography
 Cryptography, An Introduction
 A Graduate Course in Applied Cryptography
 Neural Networks and Deep Learning
 Learn Quantum Computing using Qiskit
 Multiagent Systems: Algorithmic, GameTheoretic, and Logical Foundations
 Dive into Deep Learning
 Discrete Mathematics: An Open Introduction, 3rd Edition
 Models Of Computation
 Graph Theory
 +Computational Complexity: A Modern Approach (draft)
 The Algorithmic Foundations of Differential Privacy
 Grammatical Inference: Learning Automata and Grammars

Algorithms (by Jeff Erickson)
 PATTERNS, PREDICTIONS, AND ACTIONS: A story about machine learning
 Introduction to Theoretical Computer Science
 Machine Learning: A Probabilistic Perspective
 Probabilistic Machine Learning: An Introduction
 Probability for Data Science
 Julia Data Science
 The Principles of Deep Learning Theory
 Neural Approaches to Conversational Information Retrieval
 The Mathematical Engineering of Deep Learning
 High Dimensional Probability
 Connecting Discrete Mathematics and Computer Science
 Programming Differential Privacy
 Differential Privacy for Databases
 The Principles of Deep Learning Theory
Computational Linguistics & Natural Language Processing, General Linguistics
Education
LanguageFocused 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
 F#
 Prolog
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.
â€śSoftâ€ť Skills
I think the term â€śsoft skillsâ€ť downplays how important these skills are and how difficult they are to build, but Iâ€™m settling for scare quotes because I canâ€™t think of a better concise topic name people will recognize.
Concise Overview Papers
Paper Reading Lists, Courses, and Miscellaneous