Your Favorite Tech / Eng. / CS Books? 517
chris_eineke writes "I like to read and to collect good books related to computer science. I'm talking about stuff like the classic textbooks (Introduction to Algorithms 2nd ed., Tanenbaum's Operating Systems series) and practitioners' books (The Practice of Programming, Code Complete) and all-around excellent books (Structure and Interpretation of Computer Programs, Practical Common Lisp). What's your stocking-stuffer book this Christmas? What books have been sitting on your shelves that you think are the best ones of their kind? Which ones do you think are -1 Overrated? (All links are referral-free.)"
Best books? (Score:5, Insightful)
K&R2 (Score:5, Insightful)
Still the standard for programming language books, IMHO. I tell people to work all the way through it, from start to finish, and do every exercise until it works exactly as it should.
C isn't a perfect programming language, by any means -- no language is -- but writing lots of programs in it gives you a feel for the low-level things a computer has to do.
Applied Cryptography (Score:3, Insightful)
Applied Cryptography [amazon.com]
Best Project Management Book Ever (Score:5, Insightful)
Dragon Book (Score:5, Insightful)
"Compilers: Principles, Techniques, and Tools" by Avo, Sethi, and Ullman.
To be fair, I'd like to point out that the 2nd Edition just came out when I picked it up and that's what I'm basing my opinion on. I've never read the 1st Ed (though it has a much cooler cover).
Honorable mentions:
The C Programming Language
Any of Tannenbaum's OS books (I'm kind of partial to the Design and Implementation one that uses Minix as a case study)
Deitel & Deitel's Java book (To be fair, it is good but overpriced if you don't already have to buy it as a textbook.)
The Art of Computer Programming by Donald Knuth (Score:5, Insightful)
It's good. I'm going to have to disagree with you on it being overrated. It's dense and long but it has lots of good things. I've learned a lot, despite only having started reading it recently.
Re:TCP/IP Illustrated, Vol 1 by W. Richard Stevens (Score:3, Insightful)
Everything by Stevens rates the word "classic". Pity the dude didn't live long enough to write more.
Prices! (Score:3, Insightful)
I followed some of the links, and was appalled at the prices. $100 for a simple summary of OS technology? That's a blatant, immoral cashing-in on the fact that students are are a captive audience.
(What's really sad is that $100 for textbook is actually relatively cheap.)
Even $70 for SICP is ridiculous. Fortunately, the authors are kind enough to provide a free online copy [mit.edu].
Re:Most Excellent Book (Score:3, Insightful)
The C++ Programming Language, 3rd Edition [amazon.com] is pretty excellent.
Ugh. He may have invented the language, but that book is as long as it is awful. There are *much* better (and more accessible) texts on C++.
favorite books (Score:4, Insightful)
I'll start with the one I'm most qualified to know about, with many years of UNIX systems administration under my belt - the UNIX System Administration Handbook. It reads like a book written by a bunch of sysadmins who know what they're talking about, and then telling you what you need to know.
Operating Systems Design and Implementation by Andrew Tanenbaum and Albert S Woodhull. Walks you step-by-step through Minix, a "POSIX conformant" Unix system designed primarily to teach students how operating systems work. You should probably have a *little* UNIX experience before going through it, but it will spell out in detail how things like pipes work beyond that they're STDOUT to STDIN, or how semaphores work and why it was necessary for semaphores to be invented in the first place. And so on.
K&R - not only a classic, but a useful one to boot.
Code Complete. Lots of the common wisdom, and theory to praxis to practice tried and true advice on how to right good programs - a preference for short functions that do one thing and do them well, with a limited number of variables, and with even more efforts to be conservative with regards to global variables.
Richards TCP/IP book. I use it as a reference when I need to know how to do something.
Knuth's The Art of Computer Programming is a reference book FOR reference books. You often see comments in kernel and critical software which says "Knuth's TAOCP says this is the best way to do this". He states how math underlies Computer Science which is probably why I'm still stuck on the first few pages of Volume 1. Maybe I'll go back to after I take a course in discrete math and calculus.
These are the six I can think of. I can think of other books I have found useful as well - some books on assembly programming and how the processor and system works, lots of O'Reilly books like the PERL ones.
And if you're looking for some light reading, Accidental Empires is good, as well as Hackers. You might also enjoy Just For Fun (by Linus Torvalds) and Free as in Freedom (about Richard Stallman) as well.
Re:Switching Power Supply Design, Abraham I. Press (Score:2, Insightful)
I wouldn't call that computer science
It's electrical engineering. The title of the article asked for Tech/engineering/CS books.
Re:Best Project Management Book Ever (Score:3, Insightful)
While it's a classic, and has good things here and there, I wouldn't say it's the best book. Peopleware [wikipedia.org] is, IMHO, much better, and the book I'd recommend everyone reads at least once.
Re:TCP/IP Illustrated, Vol 1 by W. Richard Stevens (Score:3, Insightful)
Re:The Art of Computer Programming by Donald Knuth (Score:3, Insightful)
Don't forget that by using bold it makes your text more important.