My favorite Computer Science books, and why

Lobsters Hottest News

Summary

A blog post recommending several classic Computer Science books, highlighting their value for programmers and learners through detailed descriptions.

<p><a href="https://lobste.rs/s/gybcec/my_favorite_computer_science_books_why">Comments</a></p>
Original Article
View Cached Full Text

Cached at: 08/23/26, 03:20 PM

# My favorite Computer Science books, and why Source: [https://backtracking.github.io/en/2020/02/20/cs-books.html](https://backtracking.github.io/en/2020/02/20/cs-books.html) [![](https://backtracking.github.io/assets/taocp.jpg)](https://www-cs-faculty.stanford.edu/~knuth/taocp.html)**The Art of Computer Programming**\. Donald E\. Knuth\. Addison\-Wesley, 1997/2011\. Often cited, but rarely read\. It’s really a shame, for these books are incredibly rich\. Numerous jewels are hidden everywhere, sometimes inside exercise solutions \(and there are*many*exercises\)\. It is dense, obviously, and it may take a lot of time to digest a single page\. But you will never waste your time doing this\. Those who stop at the presence of assembly code are missing the point\. --- [![](https://backtracking.github.io/assets/sedgewick.png)](https://algs4.cs.princeton.edu/home/)**Algorithms, 4th Edition\.**Robert Sedgewick, Kevin Wayne\. Addison\-Wesley, 2011\. For me, the best book on algorithms\. Beautiful figures and numerous examples\. Crystal clear Java code\. \(The choice of Java for such a book is convincing\.\) The companion web site provides code, data, and lecture slides\. *Note: this is the 4th edition; this is important\.* --- [![](https://backtracking.github.io/assets/kernighan-pike.jpg)](https://www.cs.princeton.edu/~bwk/tpop.webpage/)**The Practice of Programming\.**Brian W\. Kernighan, Rob Pike\. Addison\-Wesley, 1999\. This book is worth buying, even if only for the last three pages, where the programming rules discussed in the book are collected\. We should have the students learn these rules by heart; we should apply these rules ourselves\. This book provides an outstanding insight on programming\. There is an implicit message: the choice of programming language is not as important as one may think\. --- [![](https://backtracking.github.io/assets/csapp.jpg)](https://csapp.cs.cmu.edu/)**Computer Systems: A Programmer’s Perspective\.**Randal E\. Bryant, David R\. O’Hallaron\. Pearson, 2011\. Everything programmers should know about hardware, system, compiler, etc\., to improve their skills\. Likely to be the only book where a whole chapter is devoted to linking\. Written by programmers, for programmers\. --- [![](https://backtracking.github.io/assets/okasaki.jpg)](https://www.cambridge.org/core/books/purely-functional-data-structures/0409255DA1B48FA731859AC72E34D494)**Purely Functional Data Structures\.**Chris Okasaki\. Cambridge University Press, 1998\. First, a book that beautifully explains what are purely functional data structures, their interest, their implementation, and their complexity analysis, notably in presence of amortization and lazy evaluation\. Tons of data structures, some being revisited with a lot of elegance\. An example: binomial heaps\. Crystal clear SML code, explained line by line\. --- [![](https://backtracking.github.io/assets/bentley.jpeg)](https://books.google.fr/books/about/Programming_Pearls.html?id=4gX0CwAAQBAJ&redir_esc=y)**Programming Pearls\.**Jon Bentley\. Addison\-Wesley, 1986\. Still relevant, more than thirty years later\. Plenty of good advice\. Perfect style, and perfect examples\. Some chapters I liked a lot:*Writing Correct Programs*,*The Back of the Envelope*,*Sorting*, and*Heaps*\. As written in the preface: \`\`This book is written for programmers’’\. --- [![](https://backtracking.github.io/assets/hdelight.jpeg)](https://books.google.fr/books/about/Hacker_s_Delight.html?id=iBNKMspIlqEC)**Hacker’s Delight\.**Henry S\. Warren\. Addison\-Wesley, 2003\. Tons of arithmetic hacks, all delightful\. Some are for fun only \(and thus worth reading\), but many are genuinely useful\. For instance, this book tells you what your compiler is doing when your code divides by a constant\. The web site does not exist anymore, but is[archived here](https://web.archive.org/web/20190915025154/http://www.hackersdelight.org/)\. --- [![](https://backtracking.github.io/assets/gusfield.jpeg)](https://books.google.fr/books/about/Algorithms_on_Strings_Trees_and_Sequence.html?id=Ofw5w1yuD8kC)**Algorithms on Strings, Trees, and Sequences\.**Dan Gusfield\. Cambridge University Press, 1997\. Mostly a book on text algorithms, with numerous algorithms beautifully explained \(and proved\!\)\. There is a whole part on suffix trees, and notably an excellent explanation of Ukkonen algorithm \(notoriously difficult to understand and to code\)\. Also contains many applications of these algorithms\. --- [![](https://backtracking.github.io/assets/ecs.jpg)](https://mitpress.mit.edu/books/elements-computing-systems)**The Elements of Computing Systems\.**Noam Nisan, Shimon Schocken\. MIT Press, 2008\. The best way to understand everything is probably to build everything by oneself\. That’s what is proposed in this book, where the reader is invited to build a machine, an assembler, a compiler, and finally an operating system\. \(Interpreters are provided\.\) Even if you do not undertake such a construction, the book is worth reading, preferably in one shot\. Companion web site:[www\.nand2tetris\.org](https://www.nand2tetris.org/) ---

Similar Articles

@manateelazycat: AI is powerful, but newcomers in computer science still need to accumulate knowledge to solve complex problems. Let me re-share the computer science foundational books I previously recommended. As for my own reading habits, especially when learning computer science, I prefer books that are easy to understand and explain why the code works the way it does. Only by understanding the underlying principles can you apply them later.

X AI KOLs Timeline

A seasoned developer shares a curated list of computer books accumulated over many years, covering mainstream languages such as Python, C++, Java, and Rust, along with multiple technical fields, emphasizing the importance of building a solid foundation for solving complex problems.

Intriguing stories in computer science

Hacker News Top

This article compiles a list of intriguing historical stories and anecdotes from computer science and software development, highlighting notable bugs, failures, and design insights.