Book list for streetfighting computer scientists
Nick Black published the 2025 streetfighting computer science book list on dankwiki, detailing essential systems volumes from Dijkstra to Kerrisk.
By Dillip Chowdary • Nov 15, 2026 • Source: nick-black.com
In this post
Nick Black published the 2025 edition of his streetfighting computer science syllabus on dankwiki, curating an aggressive engineering reading list that bypasses standard industry style guides. Billed under the warning that Edsger Dijkstra is watching, nick-black.com's report rejects conventional manuals like Clean Code and Code Complete in favor of rigorous systems literature. The compilation outlines low-level texts designed to build uncompromising mastery across concrete systems programming, operating system internals, algorithm analysis, and hardware architecture.
This technical overview details the specific volumes, required editions, core mathematics, and engineering domains prioritized across Black's curriculum. It serves practicing systems engineers, kernel programmers, compiler developers, and performance researchers seeking foundational mechanics rather than superficial craft maxims. Readers will find comprehensive inventories of concrete algorithms, UNIX interfaces, hardware treatises, and deliberate domain omissions that define the collection.
01Core languages and operating system interfaces
The syllabus opens its introductory streetfighting section with foundational language mechanics across C, C++, and Rust. Alexander Stepanov anchors the track with From Mathematics to Generic Programming alongside The Elements of Programming. Practical language execution begins with Jens Gustedt's Modern C, David Hanson's C Interfaces and Implementations, and Bjarne Stroustrup's The C++ Programming Language.
Nicolai Josuttis enters the list with C++ Move Semantics, which Black highlights because an isolated language feature requiring two hundred pages of explanation justifies Rust better than texts dedicated to Rust itself. Steve Klabnik, Carol Nichols, and Christoph Krycho provide the modern systems counterweight with The Rust Programming Language. The guide observes that while daily work may not mandate writing in C or C++, both remain the universal lingua franca implemented across hardware.
C and C++ also serve as the native application programming interface expression of every operating system that matters. Rust earns praise as a productive language to read and write, though Black advises practitioners to cease incessant discourse surrounding it. Mastering these concrete toolchains establishes the mechanical baseline necessary for surviving low-level computing environments.
02Systems programming and foundational combat volumes
The brawling combat section begins with Edsger Dijkstra's A Discipline of Programming, designated the most beautiful page-for-page book in computer science. Donald Knuth's The Art of Computer Programming appears specifically for volumes 1 and 4B in their third editions, alongside the second edition of Henry Warren's Hacker's Delight.
Operating system internals rely on W. Richard Stevens and Stephen Rago's Advanced Programming in the UNIX Environment, requiring the second or third edition.

Stevens's UNIX Network Programming second edition pairs with Michael Kerrisk's The Linux Programming Interface and Kirk McKusick's The Design and Implementation of the FreeBSD Operating System. Network architecture expands through George Varghese's Networking Algorithmics, Alberto Leon-Garcia and Indra Widjaja's Communications Networks, and Leonard Kleinrock's Queueing Systems volume 1. Harold Abelson and Gerald Jay Sussman's Structure and Interpretation of Computer Programs second edition is cited for holding the best textbook cover in computer science.
Hardware analysis spans John Hennessy and David Patterson's Computer Architecture: A Quantitative Approach, where older editions avoid locked online content, along with Ward and Halstead's Computation Structures and Shriver and Smith's The Anatomy of a High-Performance Microprocessor. Ken Kennedy's Optimizing Compilers for Modern Architectures pairs with Steven Muchnick's Advanced Compiler Design and Implementation for compiler builders. Parallel execution is covered by David Culler's Parallel Computer Architecture and Paul McKenney's Is Parallel Programming Hard, And, If So, What Can You Do About It?
Advertisement
Tech Pulse Daily
Get tomorrow's pulse first
Join engineers who read Tech Pulse before stand-up. Free, weekday mornings.
03Complexity bounds and computational theory
Algorithmic engineering features Thomas Cormen, Charles Leiserson, Ronald Rivest, and Clifford Stein's Introduction to Algorithms alongside Hanan Samet's Metric and Multidimensional Data Structures. Maxime Crochemore's Algorithms on Strings represents string processing, while Vijay Vazirani's Approximation Algorithms and Prabhakar Raghavan and Rajeev Motwani's Randomized Algorithms target non-deterministic computation. Michael Garey and David Johnson's Computers and Intractability prevents developers from unwittingly promising solutions to NP-complete problems.
Michael Sipser's Introduction to the Theory of Computation introduces undecidable problems and the pumping lemma to prevent engineers from committing to uncomputable tasks. Sanjeev Arora and Boaz Barak's Computational Complexity advances rigorous complexity bounds for advanced practitioners. Chris Okasaki's Purely Functional Data Structures and Benjamin Pierce's Types and Programming Languages transition these foundations into formal software type systems.
Peter Van Roy and Seif Haridi's Concepts, Techniques, and Models of Computer Programming explores multi-paradigm software models. Henk Barendregt's The Lambda Calculus concludes the advanced section, noted for its bright yellow cover capable of blinding opponents. While Black concedes the lambda cube rarely proves relevant during immediate system crises, foundational type theory remains essential after practical firefighting concludes.
04Mathematical foundations for systems engineering
Mathematical competence forms an unavoidable foundation for streetfighting systems engineers. Gene Golub and Charles Van Loan's Matrix Computations treats matrix operations rigorously, reflecting how matrix structures routinely emerge across low-level engineering confrontations. Sheldon Axler's Linear Algebra Done Right provides complementary algebraic discipline for practitioners managing multi-dimensional state.
Donald Knuth's Concrete Mathematics anchors combinatorics and discrete foundations alongside probability and statistics. Black insists that engineers must know combinatorics, probability, statistics, and linear algebra cold to evaluate systems realistically. While mathematics through differential equations remains necessary general knowledge, Black observes that even dedicated technical specialists rarely perform manual integration during practical work.
05Excluded domains and modern networking gaps
The syllabus deliberately excludes several prevalent modern topics based on explicit utility criteria. Machine learning receives no entries because Black explicitly dislikes the discipline, while quantum computing remains excluded because it does not yet assist streetfighting tasks. Accelerator architecture and Single Instruction Multiple Threads texts are omitted due to inadequate book quality, and information security is excluded as a mere subfield of quality assurance.
Black acknowledges gaps on his own shelves that may inform future revisions. Tim Roughgarden's algorithms volumes sit on his shelf awaiting evaluation, while Beej's networking guide is noted as lightweight. Notably, neither classic texts from Stevens nor introductory manuals address modern high-performance networking subsystems such as io_uring or eXpress Data Path.
The document omits web hyperlinks entirely due to authorial preference, requiring readers to source volumes independently. The bibliography concludes with Nick Black's own technical manual, Hacking the Planet with Notcurses, as a recommended practical addition for engineering teams. The resulting reading list remains a distinctive roadmap for practitioners seeking concrete competence over abstract methodology.
Book list for streetfighting computer FAQ
Which book editions are specifically recommended in the 2025 streetfighting list?
The list specifies the third editions of Donald Knuth's The Art of Computer Programming volumes 1 and 4B, the second edition of Henry Warren's Hacker's Delight, the second or third edition of Stevens and Rago's Advanced Programming in the UNIX Environment, and the second editions of Stevens's UNIX Network Programming and Abelson and Sussman's Structure and Interpretation of Computer Programs.
Why are machine learning and quantum computing excluded from the curriculum?
Machine learning is excluded because Nick Black explicitly dislikes the field, while quantum computing is left out because it does not yet offer practical utility for streetfighting engineering tasks.
What mathematics must a streetfighting computer scientist master?
Engineers must know combinatorics, probability, statistics, and linear algebra cold, alongside calculus through differential equations, though manual integration is rarely required in practice.
How does the syllabus view C++ move semantics compared to Rust?
The curriculum notes that Nicolai Josuttis's two-hundred-page book explaining C++ move semantics justifies switching to Rust more persuasively than texts written about Rust itself.
Sources
Author
Dillip Chowdary
Writes Tech Bytes coverage of AI, engineering, and the tools that actually ship. Editor of Tech Pulse Daily.
Related on Tech Bytes
Advertisement