Books, Books, Books

Posted 12 Jan 2001 at 14:41 UTC by Crutcher Share This

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: ?

O'Reilly, posted 12 Jan 2001 at 16:23 UTC by sjmurdoch » (Apprentice)

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.

C and C++ books, posted 12 Jan 2001 at 16:57 UTC by movement » (Master)

The ACCU site has lots of good book reviews (

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.

A few classics..., posted 12 Jan 2001 at 17:42 UTC by logic » (Journeyer)

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 did this once, posted 12 Jan 2001 at 17:54 UTC by xach » (Master)

Raph put together a list of essential books a while ago, based on some discussion amongst GIMPy folks..

Essential Java, posted 12 Jan 2001 at 17:59 UTC by jlbec » (Master)

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.

Transaction Processing, posted 12 Jan 2001 at 18:23 UTC by Bram » (Master)

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.

A few other suggestions, posted 12 Jan 2001 at 18:25 UTC by pphaneuf » (Journeyer)

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.

Yet Another Recommended Reading List, posted 12 Jan 2001 at 18:47 UTC by ask » (Master)

... this one made for people working on Perl 6.

Perl Recommended Reading List.

  - ask

good stuff, posted 12 Jan 2001 at 19:05 UTC by brg » (Journeyer)

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

my bookshelf favorites, posted 12 Jan 2001 at 23:33 UTC by dto » (Journeyer)

  • Selected Knuth volumes. I highly recommend his collected essay volumes; snap them up, because the early ones go out of print as the new ones come out. So far I have Literate Programming, Selected Essays on Computer Science, and Digital Typography. These are full of interesting gems, reprints of hard-to-find articles, historical curiosities related to TeX, and even programs. I find them much more accessible than his TAOCP series, since those are written in a pseudo-assembler rather than a high-level language.
  • Sedgewick's Algorithms text. I believe this is assigned a lot in college courses. My version is in Pascal, I think there is a 2-volume C version available. The emphasis is more on concepts and showing code, much less on proofs of correctness, so you should have this as a supplement to a more rigorous book.
  • Schaum's Outlines (of any mathematical topic.) I have ones for Calculus, Discrete Mathematics, Digital Signal Processing, Logic, and Computer Graphics so far. These are inexpensive, solid tutorial/references, with many solved problems. In terms of quality they differ from standard math texts only in that the Physics one doesn't include little "human interest" stories about Galileo and such... they stick to the subject very closely.
  • I forget the author on this one, but my Computability Theory textbook was called Languages and Machines. It was a very enjoyable, well-typeset book.
  • The Computer Music Tutorial, by Roads. Broad overview of the history and techniques of music systems and the science behind them.
  • Almost anything from Brian Kernighan, Dennis Ritchie, Rob Pike (and combinations thereof.) The Practice of Programming, Software Tools, The AWK Programming Language, and many others I haven't had the money to buy yet. They have also written a number of witty essays on different programming topics, and papers/retrospectives on UNIX technology. You can usually get them for free in PostScript online.
  • Design Patterns, and a related book A System of Patterns which discusses larger-scale software architectures than the GOF book does. These two go well together. In addition, if you can find books or white-papers on OO technology written by Taligent Inc, get them, they're an interesting read.
  • Gödel, Escher, Bach: An Eternal Golden Braid. An excellent read, though I have more fun with Hofstadter's other books. (Take Hofstadter in measured doses---he is a good writer, but at times his determined cuteness and endless word-games become a little too much.) Metamagical Themas is another good one.
  • The Unix Philosophy by Mike Gancarz. It's a bit opinionated, but this is a solid (and brief) book explaining the ideas behind UNIX.
  • Patterns of Software by Richard Gabriel. This book is unfortunately named, because it is a collection of essays rather than a catalog of or a book about "design patterns." Most interesting is his seeming love/hate relationship with UNIX---his is the only honest and serious analysis I've seen of "why unix works despite its flaws", from someone who doesn't promote it.
  • Bentley's Programming Pearls series.
  • Stevens' Unix Network Programming (this one I inherited from Mom.)
  • GNU C Library Reference Manual. This is a good C library reference, covering C standards, UNIX standards, and more (special GNU stuff is explicitly marked.)

I could go on, but it's dinner time. :-), posted 13 Jan 2001 at 00:26 UTC by Johnath » (Journeyer)

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.


standard stuff, posted 13 Jan 2001 at 02:26 UTC by apgarcia » (Journeyer)

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

Re:, posted 13 Jan 2001 at 06:41 UTC by Radagast » (Journeyer)

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 if you're interested.

Eazel Books, posted 13 Jan 2001 at 09:38 UTC by rakholh » (Journeyer)

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.

Best book list..., posted 13 Jan 2001 at 19:29 UTC by caolan » (Master)

Jonath book website thing. Why not go for a top 100 sf and fantasy list thing. Simple, effective, mail in your fav's, rating system is detailed enough to determine if a book is popular solely through being fairly well loved by many or hugely popular with a minority.

ACCU Purposefully Reviews Bad Books, posted 14 Jan 2001 at 00:18 UTC by goingware » (Master)

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.

Reactor Core to host CanonicalTomes, posted 14 Jan 2001 at 04:11 UTC by jwalther » (Journeyer)

Until the domain is bought and set up, Johnaths current work on the project can be found here: I'm sure he will be posting again as things grow and take shape.

Reactor-core and CanonicalTomes, posted 14 Jan 2001 at 05:36 UTC by Johnath » (Journeyer)

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



Not only How, but Why, posted 15 Jan 2001 at 17:42 UTC by mkc » (Journeyer)

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.

coffe machines and concurrency, posted 16 Jan 2001 at 15:03 UTC by fra » (Journeyer)

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.

2 words, I mean 2 books, posted 17 Jan 2001 at 06:24 UTC by kjk » (Journeyer)

Already mentioned Wizard book ("Structure and Interpretation of Computer Programs") is online (and even downloadable) here:

Greenspun's classic on web developement "Philip and Alex's Guide To Web Publishing" is also on-line:

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 Advogato Features

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!

Share this page