
Ask HN: What are the bibles of Computer Science? - laddng
I am building out my CS book collection, and I was curious to see if there is a widely accepted group of textbooks that are considered the bibles of different CS fundamentals. For an example:<p>* Brian Kerrigan&#x27;s &quot;C Programming Language&quot; for C language<p>* W. Richard Steven&#x27;s &quot;IP&#x2F;TCP Illustrated&quot; for networking<p>Thoughts?
======
simon_acca
Knuth's "The art of computer programming" is definitely the bible of
algorithmics:
[https://en.m.wikipedia.org/wiki/The_Art_of_Computer_Programm...](https://en.m.wikipedia.org/wiki/The_Art_of_Computer_Programming)

------
Jtsummers
What's your background?

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.

------
ng12
SICP. In addition to being an incredibly illuminating read on programming
fundamentals it was also the foundation of a religion on 4chan's old
programming board.

~~~
johan_larson
Would you elaborate?

~~~
credit_guy
Not OP, but SICP stands for "Structure and Interpretation of Computer
Programs". It is available online; it is generally regarded as one of the
great CS books. As for religion, I have no idea what that means.

------
abakker
The Mythical Man Month - Fred Brooks

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...](https://www.amazon.com/Mythical-Man-Month-Essays-Software-
Engineering/dp/0201006502/ref=pd_sbs_14_t_1?_encoding=UTF8&psc=1&refRID=2MPWMC784KG14MMCTDZN)

~~~
mtVessel
Brooks' view is much more closely aligned with Boehm's Spiral Model than with
Agile. He valued an overarching design that satisfied all stakeholders before
construction. He also recommended a top-down approach to iteration, which
means prototyping the entire system with each iteration, in successive degrees
of refinements. I find that very different than picking features to implement
with each sprint. He also found PERT charts to be invaluable, and I can't
imagine he would find Kanban boards a sufficient substitute.

------
showerst
Introduction to Algorithms (CLRS) - probably the closest you'll get for
Algorithms, next to Knuth. It's also updated relatively often to stay cutting
edge

[https://mitpress.mit.edu/books/introduction-
algorithms](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...](https://www.amazon.com/Artificial-Intelligence-Modern-
Approach-3rd/dp/0136042597)

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...](https://www.amazon.com/Visual-Display-Quantitative-
Information/dp/1930824130)

------
randcraw
These books are all venerable CS standards (AKA bibles) that teach principles
well, though probably not the most up-to-date:

"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

~~~
agumonkey
Aho's compiler was intimidating, but it's one of my favorite experience of the
last 5 years. Not approachable, but every neuron you give is rewarded twice.

~~~
yeraydarias
Yes, it is a very complex book, but without any doubt THE BOOK if we are
talking about compilers. A must if your want to know how a compiler works.

------
jonkiddy
The Pragmatic Programmer from Andrew Hunt. Very informative book. It is a book
filled with opinions/tips from experienced programmers, some of which apply
and some don't. The ones that do are invaluable.

------
convolvatron
Lisp in Small Pieces (Cambridge University Press, 1996 ISBN 0-521-56247-3;
paperback edition (December 4, 2003) ISBN 0-521-54566-8; translated by
Kathleen Callaway) is a book by Christian Queinnec on Lisp, Scheme and other
related dialects, their interpretation, semantics, and compilation and
contains code for 11 interpreters and 2 compilers.

~~~
convolvatron
oh yeah, this one too:

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

------
deepaksurti
PAIP: [https://www.amazon.com/Paradigms-Artificial-Intelligence-
Pro...](https://www.amazon.com/Paradigms-Artificial-Intelligence-Programming-
Studies-ebook/dp/B003VWBY1I/)

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.

------
d0lph
Written by the creator of the language, 1300 pages long and weighing almost 4
pounds:

The C++ Programming Language, 4th Edition

[https://www.amazon.com/C-Programming-
Language-4th/dp/0321563...](https://www.amazon.com/C-Programming-
Language-4th/dp/0321563840)

------
flukus
"Joel on Software". Much like the bible, it's full of parables that can be
interpretted in multiple ways, contains a lot of advice that is no longer
relevant and contains enough good parts to cherry pick that I can consider
myself a spolskyite.

------
mrlyc
The Psychology of Computer Programming by Gerald Weinberg. It considers
programming as a human activity and introduces the concept of egoless
programming.

~~~
agumonkey
Interesting, did he coin the egoless term ? does the book speak about "state
of flow" or similar ?

------
clentaminator
Why's Poignant Guide to Ruby

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).

------
CarolineW
Programming Pearls, by Jon Bentley

The Elements of Computing Systems, by Noam Nisan and Shimon Schocken

and its accompanying website:
[http://www.nand2tetris.org/](http://www.nand2tetris.org/)

------
JamesBarney
For Software Engineering I recommend anything by Steve McConnell such as 'Code
Complete', 'Software Estimation', and 'Rapid Development'.

------
leemck
About 30 years ago, my VW and a thousand dollars of tools, having been stolen
and stripped, I left my low budget Malibu bodysurfing, workbench with an
oscilloscope, free Lincoln Heights cabin and moved to Berkeley and enrolled in
the first UCB extension course for the holy grail (at the time) of learning
Unix and C programming. I started building the best library of computer
programming books I could buy and about 1/4 of the books mentioned here were
my choice then too. My recommendation to you is extend your computer science
interest by going to college and mastering the fundamentals and also in your
junior and senior year join in on the most interesting academic or scientific
programming projects you can find. These days a Degree is required and your
employer is hoping to benefit from the esoteric work you did in college.

------
baddox
While not a reference book or software engineering book like the rest of the
suggestions, I'll throw in Godel, Escher, Bach. It's pretty difficult to
explain, but if you're deeply interested in computer science and want a
challenging and mind-expanding read, it's an easy recommendation.

~~~
cr0sh
The author's (Douglas R. Hofstadter) other two books (which kinda form a
trilogy) are also great companions:

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.

~~~
belovedeagle
Calling The Mind's I "Hofstadter's" is a bit misleading; he's its co-
anthologist. Nevertheless, a great read; it introduced me to Borges which is
praise enough.

------
kasey_junk
Am extremely disappointed that this scene in the movie Hackers has not been
referenced:

[https://m.youtube.com/watch?v=4U9MI0u2VIE](https://m.youtube.com/watch?v=4U9MI0u2VIE)

------
agumonkey
What about non-bibles ?

Henderson's FP book: [https://www.amazon.com/Functional-Programming-
Application-Im...](https://www.amazon.com/Functional-Programming-Application-
Implementation-Henderson/dp/0133315797)

Watson's Lisp: [https://www.amazon.com/Lisp-3rd-Patrick-
Winston/dp/020108319...](https://www.amazon.com/Lisp-3rd-Patrick-
Winston/dp/0201083191)

------
Someone
The examples you give, for me, aren't computer science (TAOCP, SICP), but
"pivotal technologies" (to those, I would, for example, add books about Algol,
early Unix and git)

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.

------
CmdrSprinkles
Might not be full bible level of importance, but if you intend to do any work
on Fortran and legacy science codes, "Modern Fortran Explained" by Metcalf,
Reid, and Cohen is a must. Better examples and explanations than anything you
can find on stack overflow with a focus on f90 (the most commonly accepted
flavour) while also discussing the useful parts of 2003.

------
derstander
A little unorthodox, and not exactly a bible, but I enjoyed Feynman's Lectures
on Computation. His CS chops include administering the computation group (of
human computers!) during the Manhattan Project and a little work on the
Connection Machine (including, apparently, a new method for computing
logarithms).

------
yomritoyj
I would say that the words 'science' and 'bible' do not go well together. The
books mentioned in the answers are all worth looking at, but they take you
only up to the foothills of the discipline and are no substitute for reading
widely and working things out on your own.

------
0xdeadbeefbabe
The Dream Machine is good for history and genealogy, much like the real Bible.

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.

~~~
steveeq1
Do you mean "Dream Machines"?
[https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines](https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines)

Alan kay listed this on his list of good books:
[http://www.squeakland.org/resources/books/readingList.jsp](http://www.squeakland.org/resources/books/readingList.jsp)

~~~
0xdeadbeefbabe
The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing
Personal

Thanks for that list of books from Alan Kay. He's the one that recommended The
Dream Machine to me most recently.

------
nekopa
Steven Skiena's The Algorithm Design Manual. Especially the "war stories"
contained within.

------
ddoherty03
Might I add, "The UNIX Programming Environment" by Kernighan and Pike, 1984.
Still the best book on how all the tools of the UNIX command line work
together for someone new to the shell, culminating in a parser for a small
language using lex and yacc. Just saying.

------
dubious00
The C Programming Language (sometimes referred to as K&R, after its authors'
initials)

||

The 23 Gang of Four (GoF) patterns

~~~
voycey
+1 for GoF - still relevant as well despite people moving against "patterns"

------
briHass
For the hardware side: "Code" by Charles Petzold.

[https://www.amazon.com/Code-Language-Computer-Hardware-
Softw...](https://www.amazon.com/Code-Language-Computer-Hardware-
Software/dp/0735611319)

------
baccheion
Look on Goodreads and Amazon for books with 4.2+ stars (preferrably 4.6+, but
those are uncommon) ratings, then filter from there. They need to have a good
number of reviews (to suggest they've been read some number of times).

------
kchauhan
For cryptography : bruce schneier's applied cryptography

------
Lordarminius
Not CS exactly but for Linux you could do worse than

    
    
      Linux Bible 9th Edition by Christopher Negus

------
tmaly
I would add Clean Code to the list just because the concepts are applicable to
many languages

~~~
ZanyProgrammer
I think Code Complete is much better-Clean Code was more about (IIRC, feel
free to correct) praising the glory of agile dev than good coding practices in
general.

~~~
yeraydarias
Both books are good, and I don't believe Clean Code is praising the glory of
agile dev, it talks about technical good practices ... practices that can be
applied to any objected oriented language in general, doing agile or waterfall
or whatever ... IMHO.

------
dubious00
How about Gang of Four? or

The C Programming Language K&R

------
EvgeniyZh
Modern Operating Systems by Tanenbaum

------
dmux
Object Thinking by David West.

