Piggybacking on the recent Where to Start Programming and Hacker School Threads... What texts and works do you feel are essential and should be a part of every hackers library. <p>Looking for books and also free online material. Any topic from strict programming texts to more abstract works.<p>I'll start: <p>Church-Turing Thesis: <a href="http://plato.stanford.edu/entries/church-turing/" rel="nofollow">http://plato.stanford.edu/entries/church-turing/</a>
For my 2 cents these are books I read in the past year and was very impressed with the clarity of the presentation. <p>Theory of Computing. Michael Sipser.<p>Introduction to Algorithms, by T. H. Corman, C. E. Leiserson, and R. L. Rivest<p>How to design programs
<a href="http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-1.html#node_toc_start" rel="nofollow">http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-1.html#no...</a><p>I think I will add something that I am interested in, it is not of interest to programmers, but heck, we are hackers! <p>All the Math you missed: Thomas A Garrity<p>Mathematics: Form and function. Mac Lane. <p>These are the first 2 books I would buy if I am interested in math and want to know more. These books are simply index books. They go over the land mark concepts in mathematics along with the key theorems and how they evolved in the historical context. You will be surpriced at how obvious things took years for people to learn and will come to appreciate the value of mathematical knowledge. <p>The algorithm will be like this: You want to know about some field of mathematics. Say Differential geometry. You can consult the sections on both these books. Will take you about 3 full days. And then go ahead and read the list of suggested books. This is the real gold mine of both these books., they suggest the best books for all of the sub-fields of math. Besides they really list the key theorems in a few pages with proof sketches and this is like a map for you. You can follow the map to exactly where you want. This sort of idea, you will get only after studying that field for say a year. And these books just give it to you right away. <p>I think we need a continuous thread for this sort of book suggestion, reviews etc.
In no particular order:<p>The Art of Computer Programming, by Knuth<p>Compilers: Principles, Techniques, and Tools by Aho, Sethi, and Ullman (the dragon book)<p>Structure & Interpretation of Computer Programs, by Abelson and Sussman<p>On Lisp, by Graham<p>A First Course in Database Systems, by Ullman and Widom<p>The C Programming Language, by Kernighan and Ritchie<p>The Cathedral and the Bazaar, by Raymond
Most programming books I'd recommend have been repeated a lot recently in news.yc, so I'll add a couple good ones on usability:<p>The (Psychology|Design) of Everyday Things, by Donald Norman (it comes under both titles; 'Psychology' is an older edition.)<p>Don't Make me Think, by Steve Krug<p>And a timeless one on writing:<p>The Elements of Style, by Strunk and White
free computer science video lectures:
<a href="http://www.lecturefox.com/computerscience" rel="nofollow">http://www.lecturefox.com/computerscience</a><p>The first on the list is great: Dr. Garcia presents the outstanding computer science lecture Machine Structures (C, Assembly, CPU design...) at the University of California Berkeley.
The Art of Unix Programming by Eric Raymond: <a href="http://www.catb.org/~esr/writings/taoup/html/" rel="nofollow">http://www.catb.org/~esr/writings/taoup/html/</a>
<i>Snow Crash</i>, <i>Cryptonmicon</i>. Both are by Neal Stephenson.<p>Another pair of good fiction novels are <i>Plowing the Dark</i> and <i>Galatea 2.2</i> by Richard Powers.<p>Sometimes you need good fiction to inspire you.
Kernighan & Ritchie, The ANSI C Programming Language<p>Kernighan & Pike, The UNIX Programming Environment<p>Kernighan & Pike, The Practice Of Programming
(Really, anything written by Kernighan is pure joy, even a man page)<p>Jon Bentley, Programming Pearls<p>Papadimitriou &Lewis, Elements of the theory of computation
All the suggested computer books are pretty good, but you'll bump into those sooner or later if you're looking. You can't avoid them.<p>What' I'd recommend, in addition to those, are some mind-broadening books that give you some ideas about other disciplines. I'm particularly interested in economics, because that's very important for understanding the whys and hows of the market. If you just want one recommendation, "Information Rules" is a good one.<p>I summarized a bunch of books I like here:<p><a href="http://www.squeezedbooks.com" rel="nofollow">http://www.squeezedbooks.com</a><p>In particular, others that I would recommend:<p>- Crossing the Chasm <p>- In Search of Stupidity: Over Twenty Years of High Tech Marketing Disasters<p>- The Innovator's Dilemma
I would recommend The Programmer's Stone on www.reciprocality.org . While not a very standard book with many factually disputed points, its a book that really made me think about the art and essence of computer programing.