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.)"
The Art of Computer Programming (Score:3, Interesting)
(personally, I think it's overrated, but I'm still proud to own the set).
Switching Power Supply Design, Abraham I. Pressman (Score:4, Interesting)
Awesome book.
http://www.amazon.com/Switching-Power-Supply-Design-3rd/dp/0071482725/ref=pd_bbs_sr_2?ie=UTF8&s=books&qid=1230057542&sr=8-2 [amazon.com]
The Camel Book (Score:2, Interesting)
Introduction to Computing Systems (Patt/Patel) (Score:3, Interesting)
"Introduction to Computing Systems: From Bits and Gates to C and Beyond"
http://highered.mcgraw-hill.com/sites/0072467509/ [mcgraw-hill.com]
This is where every programmer should start.
Code by Charles Petzold (Score:4, Interesting)
I've never read a book that taught me so much in so few words so fluidly. I picked it up in a Barnes and Noble for like $20 (Skeptical from the logo on the back) and have never been so pleasantly surprised with a dead tree.
Re:Best books? (Score:5, Interesting)
Introduction To Algorithms 2nd Edition was by far the most useful book I've ever delved into. Back in the olden days when I was stuck coding in a borrowed copy of QuickBASIC, I developed one helluva binary search routine that could search through about 50,000 records in tolerable time on an PC-XT, and that book saved my ass.
Re:Best books? (Score:4, Interesting)
Then let me reply directly (read: a poor excuse to top-post).
Michael Sipser's "Introduction to the Theory of Computation." It's easily the best textbook I've ever owned, and had me paging through it well ahead of the pace of the course. It of course doesn't serve nearly the same purpose as K&R and all those other books on practical topics, but for someone who's never been exposed to the theoretical side of CS, it's a wonderful eye-opener.
Apparently the same opinions are shared by most of the other CS students I've talked to.
Re:My Math Books (Score:4, Interesting)
I agree completely. Aside from language reference books (a dime-a-dozen) and the web, I primarily use Mathematics texts books as my primary reference works. Lattice and Category theory are very helpful for understanding database design and algorithms -- an inner join on database tables is join of "sub-tables" in the Dedekind-MacLane completion of the lattice of "sub-tables", for example.
Combinatorics are helpful when analyzing algorithms in general. Category theory and some first order logic (quantifying over categories) gives you a sound and rich theory of types (or you can develop an equivalent one in about a million different ways). Never mind the domain specific problems I've worked on, including statistical analyses of large amounts of data.
For most computing domains, a CS degree is overrated. A Mathematics degree gets you 90% of the way there, and gives you so much more.
Books I highly recommend (Score:2, Interesting)
Re:Switching Power Supply Design, Abraham I. Press (Score:2, Interesting)
I wouldn't call that computer science per se, but then I don't know anyone who designs computers who doesn't also have Howard Johnson:
http://www.amazon.com/High-Speed-Digital-Design-Semiconductor/dp/0133957241/ref=sr_1_1?ie=UTF8&s=books&qid=1230059485&sr=1-1 [amazon.com]
Re:Applied Cryptography (Score:4, Interesting)
Here's a criticism of that book from its own author: it supports the illusion that all you need to secure a system is the right technology.
Re:K&R2 (Score:3, Interesting)
Add a vote for K&R2, and one that may seem off the wall:
"Oh! Pascal", by Cooper and Clancy. It's probably out of print, but it had the most lucid, understandable explanation of pointers that I have ever seen in my life.
The Cuckoo's Egg (Score:4, Interesting)
Without doubt Clifford Stoll's The Cuckoo's Egg [wikipedia.org] It had me gripped in a way that no programming book could have :-)
Re:Design Patterns (Score:3, Interesting)
I think it's probably an important book in the history of Software Engineering (not to be confused with CS). The book unfortunately spawned at much bad design as it did elegance.
My Favorites (Score:3, Interesting)
How to Break Web Software
Functional and Security Testing of Web Applications and Web Services
Programming Pearls
The Art of Computer Programming (3 vols)
Donald E. Knuth
Re:Introduction to Computing Systems (Patt/Patel) (Score:2, Interesting)
Simply awful. The book was written with the hairbrained notion that students should learn about transistors and CMOS first and only at the end of the semester should they actually program in a reasonable language.
I had the misfortune of working with students as a teaching assistant in that course and, predictably, students struggled. There's a reason it's a good idea to learn concepts first and then approach the implementation details later. The concepts are much more important.
The theory was that students should learn what's going on under the hood when they program. A better approach would be to require all CSE students to take computer architecture, compilers and operating systems courses.
Re:Modern C++ Design (Score:3, Interesting)
I actually taught a class with "Modern C++ Design" as a primary text. Perhaps surprisingly, it turned out to be a great success. While the actual techniques in the book are not always suitable for use in most professional C++ programming shops, the revolutionary thinking and skills in it will serve you well whatever programming you do, even if it is in a different language, which is a hallmark of classic texts.
Software Engineering: A Practictioner's Approach (Score:3, Interesting)
Re:My favorites list (Score:1, Interesting)
Numerical Recipes is impressive, but the problem is that the code is legally encumbered. You have to cut a deal with the author in order to use the code outside of an academic setting. I've decided against even owning a copy to avoid getting myself and my employer entangled into a lawyers' nest.
Re:Yes, K&R2 is still the best. (Score:2, Interesting)
Re:Yes, K&R2 is still the best. (Score:2, Interesting)
I have to admit I've never cared for the Griffiths E&M book. His writing style put me off, plus there's a bit too much hand-waving. At that level of E&M (beginning/intermediate) I prefer Purcell's "Electricity & Magnetism" or "Foundations of Electromagnetic Theory" by Reitz, Milford & Christy. The math and the explanations are better in those books than in Griffiths', in my opinion, and both are better preparation for Jackson's more comprehensive book.