I've got so many books, and most of them are crap. I go to bookstores to get more, and still Sturgeons Law holds! Lets put together a good Hacker Book List, so as to avoid buying the wrong ones.

I've got so many books, and most of them are crap. I go to bookstores to get more, and still Sturgeons Law holds! Lets put together a good Hacker Book List, so as to avoid buying the wrong ones.
I'm really interested in which books people like for core theory. The ones I really like and own are below. (I don't care about 'Programing Xlanguage' type books, I'm talking about core stuff).
Core Algoritms and Structures: The Art Of Computer Programming, Vols 1-3 (Knuth) Intorduction to Algorithms (ADL)
Mathematics Reference: Handbook of Mathematics (Bronshtein and Semendyayev)
OS Theory: ?
Language Design: ?
Network Design: ?
Queue Theory: ?
Compiler Theory: ?
Something else Hardcore: ?
If there is an O'Reilly book in the topic you're looking for then get it. I have never read a bad one and, as a bonus they are bound in such a way so that if you leave them open on a desk they won't fall apart.
The ACCU site has lots of good book reviews (http://www.accu.org/)
I think expanding this to useful CS books in general would be a great a idea, as long as there are reviews of bad books. Avoiding bad books is even more important than reading good ones.
I would like to see some kind of "moderation" and rating system so people can see what lots of people like. Amazon doesn't cut it.
If you're looking for definitive resources on UNIX and network programming, or for an excellent series of books on TCP/IP, anything from W. Richard Stevens is a worthy read; specifically:
If you're interested in compiler design theory, Compilers, Principles, Techniques and Tools by Sethi/Aho/Ullman is the "Dragon Book" (see the front cover), and is well worth the read.
Donald Knuth's The Art of Computer Programming three volume set is definitely a classic at this point. Just read it. ;-)
Frederick P. Brooks' The Mythical Man-Month provides a great deal of perspective on software development.
I'll probably post a few more after I go home and go through my bookshelf.
Raph put together a list of essential books a while ago, based on some discussion amongst GIMPy folks..
For Java-ish topics (if you don't like Java, just skip, don't flame ;-) the essential books are Core Java volumes 1 and 2. Volume 1 is pretty basic, so a Java person might be able to skip it (though it still contains gems). Volume 2 is useful to anyone. I actually learned Java and got a true foundation in class-style OO from the first edition. C++ was actually easier to approach from this angle.
To follow that, the best JFC book I've seen is Core Java Foundation Classes, though it isn't as exceptional as Core Java.
I recommend Transaction Processing, which explains not only how to build transactional systems but reliable hardware and OS's.
My one caveat is that I used this book to figure out how to write a JTA implementation, and it didn't mention the possibility of only keeping locks in memory, which works a hell of a lot faster and is easier to implement. Still, it otherwise seems to know what it's talking about.
For object-oriented design, Design Patterns is pretty much a classic now.
On core programming and structures, one of my favorite is The Practice of Programming, by Brian Kernighan and Rob Pike. That book is excellent, they should have this as a textbook everywhere.
Here are some things I can recommend personally:
Structure and Interpretation of Computer Programs ("The Wizard Book") by Abelson and Sussman.
Introduction to Automata Theory, Languages and Computation by Hopcroft and Ullman. - Don't let the title/cover put you off, this book beats the pants off its competition and is very worth understanding re: languages, computation, and the idea of computing machines.
Introduction to the Theory of Computation by Sipser - This is also a good book, in the same area as Hopcroft and Ullman, only easier to read.
Introduction to Algorithms by Cormen, Leiserson, and Rivest ("CLR") - This is a telephone book full of algorithms. But it's still worth having around.
Math and stuff:
Applied Cryptography, 2nd ed., by Schneier.
Linear Algebra and its Applications, 3rd ed., by Strang.
Books other ppl mentioned which I agree with (not claiming that the others are bad or anything):
Compilers: Principles, Tools and Techniques by Aho, Sethi and Ullman.
Unix Network Programming and Advanced Programming in the Unix Environment by Stevens.
The Art of Computer Programming by Knuth.
The Mythical Man-Month by Brooks is required reading for anyone who practices programming.
Finally, don't be one of those people who only reads "hardcore" CS books. It will just make you bitter and alienated from reality (reality != math & logic) in the long run. Furthermore, other smart people read broadly, so why shouldn't you: One of my favorite smart CS profs hangs out in a local cafe usually reading the New Yorker. Here is another smart CS prof who reads a lot of broad stuff. One easy starting point is the Norton Anthology of Modern Poetry, but you don't have to take my word for it. Ok, enough preaching :-)
I could go on, but it's dinner time. :-)
I've actually been tossing around the idea of putting together a site that would compile these lists, and not just on Core Geek Topics. The idea would be to have a typical hierarchical organization of topics, with suggestions (voted on) compiled for the Bible or Bibles in a given (sub-)discipline.
In the past I've been limited by time, and concerns that @home would shut me down if I made a serious go at it and got slashdotted, but how much interest would there be in something like this? I figure that with some marginal popularity, the site could even fund itself well through affiliate opportunities (methinks amazon or fatbrain in the US and chapters or indigo in Canada). It keeps seeming like this would be a Good Thing, but I don't know if it's appeal would be too limited, and of course, logistical issues of Quality Control in the submissions would be a factor, especially without a paid workforce to scour submissions.
I got to thinking about it again today when I saw a review in the back of this month's Scientific American talking about a new book which could become the "New Bible of Birdwatching". Looks like every discipline has it's Canonical Tomes.
Thoughts?
like thompson said, cs is an incestuous field. pretty much the same core texts are used all over the place. maybe discrete mathematics varies somewhat - but one popular text is by rosen, intro to algorithms - clr, architecture - patterson/hennesssy, computation - sipser is very popular right now, languages - teddy bear book, compilers - dragon book, os - silberschatz/galvin. there are also some authors whose numerous textbooks on core subjects tend to be of high quality, notably stallings and tanenbaum for hardware and os type stuff. books written or coauthored by ullman are good. liu, denning, um... "of making many books there is no end, and much study wearies the body." -ecc 12:12
Jonath:
Sounds like a very good idea for a site. If you were to keep the
content under a free license, and make it a project it's easy to
contribute to, etc., I could probably get you the server space and
other resources needed. I might also be interested in getting involved
in this in my plentiful spare time. Contact me at joakim@ximian.com if
you're interested.
Eazel has a few reviews of book which I thought were interesting. It is found in the 'nautilus' module under GNOME CVS under the docs directory.
Since I'm pretty sure you'd be pissed off at having to check out nautilus from CVS just to read that. Here is a link.
The Association of C and C++ Users online book reviews was mentioned earlier. Someone also raised the issue of compiling a list of books to avoid.
The ACCU reviews are done by its members, and periodically a list of books is emailed around and one can volunteer to review a few of them, and if you're accepted to do the review, you get the book at a discount price of 5 british pounds.
But the letter accompanying the list always says something like "you will surely recognize some bad books in the list below", and one is encouraged to volunteer to review those too, not just the books you're excited to read.
If you review a book and give it a "not recommended" rating, you're given some kind of credit, I don't recall what, whether it's a cash refund or credit towards the purchase of a future, better book.
I think this is done for the express purpose of providing authoritative reviews of bad books to keep people from wasting their time on them, and to keep up the quality of technical books in general.
Here's a review of a book that's not recommended as an example.
Until the domain is bought and set up, Johnaths current work on the project can be found here: http://reactor-core.org/~johnath. I'm sure he will be posting again as things grow and take shape.
Heh, yeah, reactor-core and joakim have both offered space, and I've got an account on reactor-core as we speak. However, at the moment, CT's still pretty young so it's actually living on my own server while I talk nice to perl and postgres.
If anyone feels like checking it out, it's at johnath.com/~ct but I really suggest holding off for the moment - at the moment all that actually works is the front page, and the DB. That is, the DB is set up - the pages that would service it... well, they sort of don't exist yet. :)
My plan is to work on it over the next bit, while school is still thin, and then with any luck, start a story here to get people poking at it and gather suggestions. I'd like to bounce it off the people here before hitting something like slashdot, where it would instantly be flooded. Also I think the people here might be more likely to give useful feedback.
But at any rate, thank you reactor core and thank you joakim - you guys have both been really great. Here's hoping I can do something to deserve it. :)
Cheers,
J
Robert Pirsig's Zen and the Art of Motorcycle Maintenance has probably been more useful to me as a programmer than most of the software books I've read. You could think of it as a book on quality that's actually worth reading.
There's an illegal copy here, but (at $7/paper) this is definitely a book worth owning.
If you are going to practice concurrent programming, you should not miss Hoare's Communicating Sequential Processes. It is not hardcore stuff: it will bring your attention to the always broken coffe machine in your labs, and you will learn from this the inner origins of concurrency.
A classic which definitively deserves more attention.
Already mentioned Wizard book ("Structure and Interpretation of Computer Programs") is online (and even downloadable) here: http://sicp.arsdigita.org/text/sicp/
Greenspun's classic on web developement "Philip and Alex's Guide To Web Publishing" is also on-line: http://www.arsdigita.com/books/panda/
And once upon a time I've put up a page full of links to (mostly CS) books available on-line for your unlimited reading pleasure.
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!