views:

925

answers:

30

I would like to try the book question a little bit differently. My goal is to know what the community thinks are the quintessential computer science textbooks.

<beginsadstory>I lost all of my computer science and math books from college in Hurricane Katrina in 2005. I greatly miss having my familiar tomes to refer to when topics and problems come up, so I am looking to rebuild my library.<endsadstory>

What are your recommendations for the best examples of academic caliber books for the field of computer science and its associated mathematics? I am looking for books on subjects like computational theory, programming languages, compilers, operating systems, algorithms and so on. Don't limit your suggestions to your textbooks only. If there is a book you have read that covers computer science or a related math in a formal way, but is not strictly a textbook, I would be love to hear about them as well.

Finally, for the sake of creating a good reference for all of us, may I suggest posting one book per answer so they can be rated individually.

+4  A: 

Concrete Mathematics - really difficult at least in my opinion.. but very interesting and written in a nice way. You will find it very useful if you like solving algorithm related problems.

Klesk
+1 for following the suggested format of one title per post.
JDelage
+4  A: 

How about the obvious choice?

Donald E. Knuth: The Art of Computer Programming

HS
+4  A: 

While these books are expensive, these are the 2 books I have used throughout college, and are by far the most respected textbooks in their respective subjects, so much so that they have pseudo names:

"The White Book" - the MIT intro to algorithms: http://www.amazon.com/gp/product/0262031418/ref=cm_rdp_product

"The Dragon Book" - Compilers: Principles, Techniques, and Tools: http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/ref=pd_sim_dbs_b_1

mmattax
Would you consider breaking your post in 4 different ones, to see which book actually gets voted up?
JDelage
A: 

For me, it's

eplawless
Would you consider breaking your post in 4 different ones, to see which book actually gets voted up?
JDelage
+3  A: 

"Operating System Concepts" by Silberschatz and Galvin

Michał Piaskowski
Would you consider breaking your post in 4 different ones, to see which book actually gets voted up?
JDelage
A: 

One that I feel has great real world applications, at least for me is: Working Effectively with Legacy Code

I've put that book to a LOT of use at my current place of employ.

mendicant
Great book. But not for this question.
John Nolan
+2  A: 

Software Engineering - Ian Sommerville

//Used the text in grad school, kept it around because it's a solid overview
//Yes, strictly speaking, it's a closely related discipline to computer science

happyappa
A: 

Model Checking - Clarke, Grumberg, Peled

//"This is the first comprehensive presentation of the theory and practice of model checking. The book, which includes basic as well as state-of-the-art techniques, algorithms, and tools, can be used both as an introduction to the subject and as a reference for researchers." -Amazon

happyappa
+5  A: 

I wholeheartedly recommend Structure and Interpretation of Computer Programs. The book is available freely online, but you can also purchase a print copy at amazon or your local book store. There are also video lectures available to accompany the text here and here.

+4  A: 

Code Complete: A Practical Handbook of Software Construction - McConnell

//Guide to good software development practices

happyappa
+1 for following the suggested format of one title per post.
JDelage
-1 Code Complete is not really a computer science book, it is specifically a "programming wisdom" book. There is a lot more to computer science than how to write good C#/Java. Computer science would delve more into, for example, O-notation / set theory, or trigonometry applied to simulated physics, or how operating systems work, etc.
stimpy77
+1  A: 

The Pragmatic Programmer: From Journeyman to Master - Hunt, Thomas

//Tricks of the trade

happyappa
+4  A: 

The Mythical Man-Month: Essays on Software Engineering - Brooks

//Observations and argument focusing on the human element in software engineering

happyappa
+1 for following the suggested format of one title per post.
JDelage
Mythical Man-Month is not really a computer science book, it is specifically a management book for managing software programming projects. There is much more to computer science than people/project management. Computer science would delve more into, for example, O-notation / set theory, or trigonometry applied to simulated physics, or how operating systems work, etc.
stimpy77
A: 

Design Patterns - Gamma, Helm, Johnson, Vlissides

//They make great music, too

happyappa
A: 

I recently moved and had to greatly whittle down my collection of books. I gave away or discarded most of my books, including most of my programming-related books. Of those that I did keep, I'd say the most valuable on my shelf are:

For more specific topics:

  • The C++ Programming Language by Stroustrup. Even in the age of the Internet, I find myself going through this looking for answers ocassionally.
  • Programming Windows by Petzold. Still the best introduction to Windows programming. I just wish he'd do a 6th edition.

I would not recommend The Art of Computer Programming. Nor would I likely recommend Concrete Mathematics. Very few people who buy TAOCP actually read it, which means that most people spend a decent chunk of money to waste space on a shelf. Buy only books you will actually read. Otherwise, it's just a waste of money. (For the record, I bought both of those, and have read neither.)

If you want bookshelf trophies, that's fine, but it's entirely separate from which books you should buy. Books are things you read. Trophies are things you admire, even if they look like books.

Derek Park
A: 

Design Patterns by Gang of Four Refactoring: Improving the Design of Existing Code by Martin Fowler Code Complete 2 by Steve McConnell The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas Effective Java Second Edition by Joshua Bloch

Maudite
A: 
Dima Malenko
Would you consider breaking your post in 4 different ones, to see which book actually gets voted up?
JDelage
+3  A: 

One of my favorite textbooks in the maths is:

Patrick Loz
I love the Rosen book too.
puri
Would you consider breaking your post in 4 different ones, to see which book actually gets voted up?
JDelage
Sure, sounds like a logical idea JDelage.
Patrick Loz
+3  A: 

Algorithm Design by Kleinberg & Tardos. Hailed by some as the next Cormen (Introduction to Algorithms). I can't say I agree but it's still a very good book on algorithms.

Konrad Rudolph
+1 for actually doing ONE title in your post.
JDelage
A: 

Gödel, Escher, Bach: An Eternal Golden Braid (Amazon.com link)

If you haven't read GEB, then you should.

If you have, then you know why I'm suggesting it.

Cosmic Flame
Is this really a textbook?
JDelage
Not in the traditional sense.
Cosmic Flame
A: 

"Computer Organization and Architecture" by William Stallings

Michał Piaskowski
+3  A: 

"Computer Networks and Internets" by Douglas E. Comer

Michał Piaskowski
A: 

Stevens' TCP/IP Illustrated, vol 1-3.

outis
A: 

Barendregt's Lambda Calculi with Types

outis
+1  A: 

I've just started reading Foundations of Computer Science, by Alfred Aho and Jeffrey Ullman. Although it's out of print, everything in it is still applicable today. I'd describe the book as a lovely intersection of discrete mathematics and computer science. Perfect for someone who has gone through a few introductory courses and wants to learn more about the theoretical underpinnings.

Barry Brown
A: 

Joel on software is something that all developers and managers should have read

Greg
A: 

Even I do not consider TAOCP as a must have . First of all,he wrote all code in his own assembly language which just makes it harder. And you need a lot lot lot of time for it. The UNIX Programming Environment by Kerninghan(The g is silent) and Pike is the book I found pretty awesome (though i haven finished it yet).

crazyaboutliv
A: 

Sipser's Introduction to the Theory of Computation.

outis
A: 

Hopcroft, Motwani, and Ullman's Introduction to Automata Theory, Languages, and Computation (in competition with Sipser's text).

outis
A: 

For CS architecture:

Patrick Loz
A: 

For C programming:

Patrick Loz