Comment author: Jonathan_Graehl 17 January 2011 04:27:19AM *  7 points [-]

Subjects: algorithms/computational complexity, physics, Bayesian probability, programming

Introduction to Algorithms (Cormen, Rivest) is good enough that I read it completely in college. The exercises are nice (they're reasonably challenging and build up to useful little results I've recalled over my programming career). I think it's fine for self-study; I prefer it to the undergrad intro level or language-specific books. Obviously the interesting part about an algorithm is not the Java/Python/whatever language rendering of it. I also prefer it to Knuth's tomes (which I gave up on finishing - not enough fun). Knuth invents problems so he can solve them. He explains too much minutia. But his exercises are varied and difficult. If you like very hard puzzles, it's a good place to look.

Introduction to Automata Theory, Languages, and Computation (Hopcroft+Ullman) was also good enough for me to read. I've referred to it many times since. However, it's apparently not well-liked by others; maybe because it's too dense for them? I haven't read any other textbooks in the area.

The Feynman Lectures on Physics are also fun to read. But I doubt someone could use them as an intro course on their own. Because they're filled with entertaining tidbits, I was tempted to read through them without actually following the math 100%. Obviously this somewhat defeats the purpose. That's always a danger with well written technical material consumed for pleasure. I had already taken a few physics courses before I read Feynman; his lectures were better than the course textbooks (which I already forgot).

I didn't care for Jaynes. I only read about 700 pages, though. I remember there was some group reading effort that stopped showing up on LW after just a few chapters :)

For plain old programming, I've read quite a few books, and really liked The Practice of Programming - it was too short. I read Dijkstra's a discipline of programming and loved it for its idea to define program semantics precisely and to prove your code correct (nobody really practices this; it's too slow and hard compared to "debugging"), but it's probably not worth the price - I checked it out from a library.

I also agree with rwallace's recommendations also, except that the AI text is not especially useful (not that I know of a better one). I would not give SICP to a novice, though. Although I had done everything described in the book before (and already knew lisp), it did increase my appreciation of using closures and higher order functions as an alternative for the usual imperative/OO stuff. It also covers interpretation and compilation quite well (skipping the character-sequence parsing part - this is lisp, after all).

Comment author: Mimi 19 March 2012 03:14:29AM 1 point [-]

For an AI text, I think any (text)book on a subject of your interest by Judea Pearl would fit the bill.
"Symbolic Logic and Mechanical Theorem Proving" by Chang and Lee is still an exceptionally lucid introduction to non-probabilistic AI.

Comment author: Jonathan_Graehl 17 January 2011 04:27:19AM *  7 points [-]

Subjects: algorithms/computational complexity, physics, Bayesian probability, programming

Introduction to Algorithms (Cormen, Rivest) is good enough that I read it completely in college. The exercises are nice (they're reasonably challenging and build up to useful little results I've recalled over my programming career). I think it's fine for self-study; I prefer it to the undergrad intro level or language-specific books. Obviously the interesting part about an algorithm is not the Java/Python/whatever language rendering of it. I also prefer it to Knuth's tomes (which I gave up on finishing - not enough fun). Knuth invents problems so he can solve them. He explains too much minutia. But his exercises are varied and difficult. If you like very hard puzzles, it's a good place to look.

Introduction to Automata Theory, Languages, and Computation (Hopcroft+Ullman) was also good enough for me to read. I've referred to it many times since. However, it's apparently not well-liked by others; maybe because it's too dense for them? I haven't read any other textbooks in the area.

The Feynman Lectures on Physics are also fun to read. But I doubt someone could use them as an intro course on their own. Because they're filled with entertaining tidbits, I was tempted to read through them without actually following the math 100%. Obviously this somewhat defeats the purpose. That's always a danger with well written technical material consumed for pleasure. I had already taken a few physics courses before I read Feynman; his lectures were better than the course textbooks (which I already forgot).

I didn't care for Jaynes. I only read about 700 pages, though. I remember there was some group reading effort that stopped showing up on LW after just a few chapters :)

For plain old programming, I've read quite a few books, and really liked The Practice of Programming - it was too short. I read Dijkstra's a discipline of programming and loved it for its idea to define program semantics precisely and to prove your code correct (nobody really practices this; it's too slow and hard compared to "debugging"), but it's probably not worth the price - I checked it out from a library.

I also agree with rwallace's recommendations also, except that the AI text is not especially useful (not that I know of a better one). I would not give SICP to a novice, though. Although I had done everything described in the book before (and already knew lisp), it did increase my appreciation of using closures and higher order functions as an alternative for the usual imperative/OO stuff. It also covers interpretation and compilation quite well (skipping the character-sequence parsing part - this is lisp, after all).

Comment author: Mimi 19 March 2012 03:01:27AM 1 point [-]

I also prefer Hopcroft+Ullman (original edition) to later alternatives like their own later edition, Papadimitriou, and even Sipser who is widely regarded as having written the definitive intro text.

Comment author: Jonathan_Graehl 17 January 2011 04:27:19AM *  7 points [-]

Subjects: algorithms/computational complexity, physics, Bayesian probability, programming

Introduction to Algorithms (Cormen, Rivest) is good enough that I read it completely in college. The exercises are nice (they're reasonably challenging and build up to useful little results I've recalled over my programming career). I think it's fine for self-study; I prefer it to the undergrad intro level or language-specific books. Obviously the interesting part about an algorithm is not the Java/Python/whatever language rendering of it. I also prefer it to Knuth's tomes (which I gave up on finishing - not enough fun). Knuth invents problems so he can solve them. He explains too much minutia. But his exercises are varied and difficult. If you like very hard puzzles, it's a good place to look.

Introduction to Automata Theory, Languages, and Computation (Hopcroft+Ullman) was also good enough for me to read. I've referred to it many times since. However, it's apparently not well-liked by others; maybe because it's too dense for them? I haven't read any other textbooks in the area.

The Feynman Lectures on Physics are also fun to read. But I doubt someone could use them as an intro course on their own. Because they're filled with entertaining tidbits, I was tempted to read through them without actually following the math 100%. Obviously this somewhat defeats the purpose. That's always a danger with well written technical material consumed for pleasure. I had already taken a few physics courses before I read Feynman; his lectures were better than the course textbooks (which I already forgot).

I didn't care for Jaynes. I only read about 700 pages, though. I remember there was some group reading effort that stopped showing up on LW after just a few chapters :)

For plain old programming, I've read quite a few books, and really liked The Practice of Programming - it was too short. I read Dijkstra's a discipline of programming and loved it for its idea to define program semantics precisely and to prove your code correct (nobody really practices this; it's too slow and hard compared to "debugging"), but it's probably not worth the price - I checked it out from a library.

I also agree with rwallace's recommendations also, except that the AI text is not especially useful (not that I know of a better one). I would not give SICP to a novice, though. Although I had done everything described in the book before (and already knew lisp), it did increase my appreciation of using closures and higher order functions as an alternative for the usual imperative/OO stuff. It also covers interpretation and compilation quite well (skipping the character-sequence parsing part - this is lisp, after all).

Comment author: Mimi 19 March 2012 02:56:29AM 1 point [-]

"A Discipline of Programming" is rather hard to follow. Dromey gives an introductory treatment that's a bit too introductory, "Progamming Pearls" by Bently includes another even more informal treatment, and Gries's "Science of Programming" would be the textbook version that I might recommend covering this material. All three are somewhat dated. More modern treatment would be either Apt's "Verification of Sequential and Concurrent Programs" or Manna's "The Calculus of Computation." and depending on your focus one would be better than the other. However, the ultimate book I would recommend in this field is "Interactive Theorem Proving and Program development" by Yves Bertot. It doesn't teach Hoare's invariant method like the other books, but uses a more powerful technique in functional programming for creating provably correct software.

Comment author: gjm 18 January 2011 01:58:56AM 5 points [-]

Well, let me do Jonathan's job for him on one of those.

Introduction to Algorithms by Cormen, Leiserson, Rivest, and (as of the second edition) Stein is a first-rate single-volume algorithms text, covering a good selection of topics and providing nice clean pseudocode for most of what they do. The explanations are clear and concise. (Readers whose tolerance for mathematics is low may want to look elsewhere, though.)

Two obvious comparisons: Knuth's TAOCP is wonderful but: very, very long; now rather outdated in the range of algorithms it covers; describes algorithms with wordy descriptions, flowcharts, and assembly language for a computer of Knuth's own invention. When you need Knuth, you really need Knuth, but mostly you don't. Sedgwick's Algorithms (warning: it's many years since I read this, and recent editions may be different) is shallower, less clearly written, and frankly never gave me the same the-author-is-really-smart feeling that CLRS does.

(If you're going to get two algorithms books rather than one, a good complement to CLRS might be Skiena's "The algorithm design manual", more comments on which you can find on my website.)

Comment author: Mimi 19 March 2012 02:41:53AM *  0 points [-]

Manber's "Algorithms--a creative approach" is better than Cormen, which I agree is better than Knuth. It's also better than Aho's book on algorithms as well. It's better in that you can study it by yourself with more profit. On the other hand, Cormen's co-author has a series of video lectures at MIT's OCW site that you can follow along with.

Comment author: rwallace 16 January 2011 05:25:26PM 10 points [-]

General programming: Structure and Interpretation of Computer Programs. Focuses on the essence of the subject with such clarity that a novice can understand the first chapter, yet an expert will have learned something by the last chapter.

Specific programming languages: The C Programming Language, The C++ Programming Language, CLR via C#. Informative to a degree that rarely coexists with such clarity and readability.

AI: Artificial Intelligence: a Modern Approach. Perhaps the rarest virtue of this work is that not only does it give about as comprehensive a survey of the field as will fit in a single book, but casts a cool eye on the limitations as well as strengths of each technique discussed.

Compiler design: Compilers: Principles, Techniques and Tools. The standard textbook for good reason.

Comment author: Mimi 19 March 2012 02:38:34AM *  1 point [-]

Disagree with "C++ the programming language" as a C++ textbook. Anything by Lippman, Koenig or Moo would be better.

Comment author: barrkel 17 January 2011 12:33:53PM 9 points [-]

I don't agree on the dragon book (Compilers: Principles, Techniques and Tools). It focuses too much on theory of parsing for front end stuff, and doesn't really have enough space to give a good treatment on the back end. It's a book I'd recommend if you were writing another compiler-compiler like yacc.

I'd rather suggest Modern Compiler Implementation in ML; even though there are C and Java versions too, a functional language with pattern matching makes writing a compiler a much more pleasant experience.

(I work on a commercial compiler for a living.)

Comment author: Mimi 19 March 2012 02:37:36AM 0 points [-]

+1 for ML (and purely functional languages) used for implementing compilers.

Comment author: David_Gerard 16 January 2011 03:37:04PM 3 points [-]

Software engineering: everything by Andrew Tanenbaum. The standard texts in the field for good reason.

Comment author: Mimi 19 March 2012 02:34:56AM 3 points [-]

Tannenbaum wrote some Operating System books (including one on networking). He's not so much concerned with software engineering.

Comment author: caustic 16 March 2012 09:00:01PM *  1 point [-]

These two books are great for those who want to study Computer Sciense in a breadth-first manner. While each topic is not discussed in great details, the number of covered topics is mind-boggling. From trivial ones such as Sorting and Searching to more esoteric matter like Pricing Algorithms for Financial Derivatives, etc.

Comment author: Mimi 19 March 2012 02:33:07AM 0 points [-]

"The (New) Turing Omnibus" is better for this purpose.

Comment author: wbcurry 17 January 2011 06:04:31PM 6 points [-]

Non-relativistic Quantum Mechanics: Sakurai's Modern Quantum Mechanics

This is a textbook for graduate-level Quantum Mechanics. It's advantages over other texts, such as Messiah's Quantum Mechanics, Cohen-Tannoudji's Quantum Mechanics, and Greiner's Quantum Mechanics: An introduction is in it's use of experimental results. Sakurai weaves in these important experiments when they can be used to motivate the theoretical development. The beginning, using the Stern-Gerlach experiment to introduce the subject, is the best I have ever encountered.

Comment author: Mimi 19 March 2012 02:22:30AM 0 points [-]

Why don't you like Cohen-Tannoudji?

Comment author: Fhyve 31 March 2011 07:27:24PM *  2 points [-]

Recommendation requests: Intro to calculus. I know about derivatives and I can use them and I sort of understand integrals but my knowledge is very fragmented. For instance, I don't know what half of the notation is supposed to actually represent. Also, I want strategies for solving problems rather than being given a bunch of (apparently) unrelated tools and told to just figure it out.... yea, I didn't have a good math teacher

Set theory and other discrete mathematics.

Psychology.

Something or other on the scientific method (how to design experiments)

Biology. General, human, micro, intro or advanced... Just trying to make the list more comprehensive

Chemistry. See above.

Physics. There are already some here but I want more topics (thermodynamics is the first that comes to mind).

In recommendations, I would suggest another criteria be added related to learning type. Some books are being praised for their concreteness and others for their topical comprehensiveness and others for their pedagogical comprehensiveness (addresses most common misconceptions etc.) and other sometimes mutually exclusive traits. Just a way of systematizing this and making it easier for people to get the type of book that they are looking for.

Edit: Another topic: writing. I have read elements of style but I haven't read anything else on the subject. I would like to see how it compares to other (newer?) books.

Comment author: Mimi 19 March 2012 02:12:34AM 1 point [-]

Re: how to design experiments:

Look into statistics. Most experiments have a statistical or hidden statistical basis.

See my suggestions above for calculus.

View more: Next