* Brian Kerrigan's "C Programming Language" for C language
* W. Richard Steven's "IP/TCP Illustrated" for networking
Thoughts?
Edit: It's more popular to ignore history, but you can find Shannon's information theory, As We May Think, Cybernetics, etc. along with historical context. It might keep you from pretending you have invented the wheel.
Alan kay listed this on his list of good books: http://www.squeakland.org/resources/books/readingList.jsp
Thanks for that list of books from Alan Kay. He's the one that recommended The Dream Machine to me most recently.
"Compilers, Principles, Techniques and Tools", by Aho, Ullman, Sethi, Lam
"Artificial Intelligence: A Modern Approach", by Russell, Norvig
"Computer Architecture: A Quantitative Approach", by Patterson, Hennessy
"Computer Networks", by Tannenbaum
"Operating System Concepts", by Silberschatz
The Mind's I: Fantasies And Reflections On Self & Soul
I Am a Strange Loop
...and yes, they are all very challenging reads. On the "computer science" perspective, they are definitely worth reading if you are at all interested in machine learning, artificial intelligence, artificial (and actual) neural networks, and how these subjects relate to the "philosophy of mind" and similar related "hard problems" in CS and mathematics.
It is amazing how this book can be interpreted as having predicted the necessity of Agile/DevOps long before the tooling was really available to easily enable that methodology.
https://www.amazon.com/Mythical-Man-Month-Essays-Software-En...
The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling
Raj Jain ISBN: 978-0-471-50336-1 720 pages April 1991
||
The 23 Gang of Four (GoF) patterns
For CS, I'll concur with others on these (for algorithms):
Introduction to Algorithms, Cormen et al.
The Art of Computer Programming, Knuth
I'll add: Introduction to the Theory of Computation, Sipser
More on the math side, I found this helped me bridge the gap between Calculus (and other continuous maths) and discrete math topics: Concrete Mathematics, Knuth et al.
SICP is good, and worth recommending, along with the Schemer series (Little, Seasoned, Reasoned). I have both The Reasoned Schemer and The Little Prover here at my desk. I had intended to work through them on my lunch breaks but, well, that hasn't happened yet. I don't know how much these are "bibles" versus good introductions to their topics, not really reference books.My library is at home, I'm trying to run through what all I have and would recommend in particular of that collection.
On the practical, software engineering, side:
Mythical Man Month, Brooks
Fantastic read on real-world experiences on a large-scale project. Every essay in there is worth reading at least twice, and several are worth rereading every year just in case you forgot the lessons.I am currently wracking my brain to recall the other titles, may edit later.
https://mitpress.mit.edu/books/introduction-algorithms
AI, a modern approach (Norvig & Russel) - For classic AI stuff, although nowadays it might fade a bit with all the deep learning advances.
https://www.amazon.com/Artificial-Intelligence-Modern-Approa...
While it's not strictly CS, Tufte's Visual Display of Quantitative information should probably be on every programmer's shelf.
https://www.amazon.com/Visual-Display-Quantitative-Informati...
While it deals with classical AI techniques, it is worth working through this book. Especially the AI example chapters where Norvig teaches how to go from specification to implementation and iterate over the design to fix problems etc. Backed by Common Lisp which allows this quick iteration by getting out of your way, this book is one way to fall in love with programing.
Warning: Once you are done with this book, be prepared to handle the less powerful systems and I am not implying here CL is the most powerful programming environment.
The C++ Programming Language, 4th Edition
https://www.amazon.com/C-Programming-Language-4th/dp/0321563...
I don't consider it a bible of CS, but it's one of the most playful, imaginative and, essentially, fun, introductory programming books that I've read.
The analogy of the truthiness of a value as an energy or life force that flows through your program, or Ruby's ranges depicted as accordions, are just some examples of the book's approach to visualising some of the aspects of programming that seem so rote after you've used them for a while.
How useful it is to someone learning to program is questionable, as the book's style might get in the way of teaching fundamentals, but it's certainly fun to read as an experienced programmer (imho, of course).
The Elements of Computing Systems, by Noam Nisan and Shimon Schocken
and its accompanying website: http://www.nand2tetris.org/
Henderson's FP book: https://www.amazon.com/Functional-Programming-Application-Im...
Watson's Lisp: https://www.amazon.com/Lisp-3rd-Patrick-Winston/dp/020108319...
You may consider splitting your collection in three parts: those two and software engineering (examples: the mythical man-month, the psychology of computer programming), which itself can be split into a technical and a social part.
Doing that may show gaps in your library/where your interests lie.
https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
Linux Bible 9th Edition by Christopher NegusThe C Programming Language K&R