top | item 6856308

The Art of Computer Programming - eBook

94 points| tjr | 12 years ago |informit.com | reply

65 comments

order
[+] tjr|12 years ago|reply
Knuth says:

For many years I've resisted temptations to put out a hasty electronic version of The Art of Computer Programming, because the samples sent to me were not well made.

But now, working together with experts at Mathematical Sciences Publishers, my publishers and I are launching an electronic edition that meets the highest standards. We've put special emphasis into making the search feature work well. Thousands of useful "clickable" cross-references are also provided --- from exercises to their answers and back, from the index to the text, from the text to important tables and figures, etc.

The first fascicle can now be ordered from Pearson's InformIT website, and we expect to release thousands of additional pages next year.

http://www-cs-faculty.stanford.edu/~knuth/news.html

[+] mscottmcbee|12 years ago|reply
I have the first 4 books, but reading that makes me want to get it as an e-book, as well.
[+] goggles99|12 years ago|reply
>For many years I've resisted temptations to put out a hasty electronic version of The Art of Computer Programming, because the samples sent to me were not well made

Not well made? It's a book that is a PDF at some point before it hits printing presses. What is there to make at all? The kindle has been out for how many years? how is the book so different when reading it on an e-ink display? He mentions that shortcuts were added, but still - how is it worse than a printed book (there are no links there either).

This seems disingenuous.

[+] libria|12 years ago|reply
Wait, I thought the whole point of this book was occupy space on my shelf in a highly visible area. Can they at least include a dust cover so I can subtly project my latent leetness?
[+] ballstothewalls|12 years ago|reply
I recently graduated with a degree in math but not much programming experience (I am pretty familiar with Mathematica but nothing else). I was thinking about picking up an intro to CS book to begin learning CS. Would this book be good for this? Should I even bother with CS theory or just jump into using a language?
[+] rprospero|12 years ago|reply
To put it in math terms, using TAOCP for an intro to computer science would be like using Russell and Whitehead for an intro to arithmetic.
[+] pcmonk|12 years ago|reply
It depends on what you want. I've only read the first volume so far, but I would say that it's definitely appropriate for an intro to CS since you have the math background. I would definitely not recommend it to most people since the math is pretty dense and not all necessary (though very interesting). If you're familiar with combinatorics and stats, then it won't be too bad.

As a CS book, it teaches a lot of good CS concepts and techniques very thoroughly, and it analyzes the performance of algorithms very precisely. You'll not only use Big O notation, but you'll also figure out some of the constants. So, if your interest is in computer science proper, then this is a great introductory book.

On the other hand, if your goal is to be able to write programs, then definitely jump into using a language. Go find a book on a language and just start using the language to solve problems. After you get past the basics of programming, you'll start to see all the applications to math (especially discrete math). I've heard Structure and Interpretation of Computer Programs is a good book, and I plan to read it next semester, so maybe that's a good one for you. It uses Scheme (a Lisp) as the programming language, so the parallels with math are very clear.

[+] ErsatzVerkehr|12 years ago|reply
> I was thinking about picking up an intro to CS book to begin learning CS. Would this book be good for this?

No, absolutely not.

[+] nswanberg|12 years ago|reply
Buy the Knuth book. You can get it used for ~$25 on Amazon, and if it gathers dust or you dislike it, sell it and buy something like Programming Collective Intelligence for some fun motivating problems and to learn Python.

In Knuth's book you learn about and work with the details of how computers work that Mathematica handles itself and explicitly hides from you. If you ever wondered, for example, how Mathematica might store a matrix in memory, or why when you evaluate 1/.99999 it returns .00001, but if you add one more 9 to the denominator it returns 1., then Knuth's book is a good one to turn to.

Knuth does not use a high-level language to describe computations--instead he uses a made-up computer called the MIX 1009, which has its own machine language. He came up with 1009 by taking 16 of the machines at the time and taking the average of their numbers (360, 650, 709, 7070, U3, SS80, 1107, 1604, G20, B220, S2000, 920, 601, H800, PDP-4, and II) He also points out that you can derive the same number by taking the name as Roman numerals. If that makes you laugh, you will also find it to be a deeply funny book.

[+] Scriptor|12 years ago|reply
This is definitely not usable as an early intro to CS book, as it's pretty dense. There's a wide variety of introductory material that you can pick from, depending on your interests (what kind of stuff are you interested in doing). But TAOCP is aimed at someone a bit more advanced. Since you have a math background though I think you could give it a shot and see how far you get.
[+] TylerE|12 years ago|reply
Do you want to learn computer science or programming? The two are only tangentially related.
[+] brudgers|12 years ago|reply
tAoCP is not just a computer science book, in a sense It is part of the foundation for the field. That said, it is not so much theoretical as it is descriptive. In it [or them] Knuth describes algorithms. and programs and the mathematics of their execution. The sort of code described is for the things people use every day.

It's good reading if a person is fascinated by the subject. Otherwise it will be very very dry. Among the otherwise's, would be someone hoping to pick up a language or someone who wants an introduction to programming. With a math degree, you should not struggle with the math.

[+] baddox|12 years ago|reply
These books are good for humbling people who think they know a lot about computer science. They are definitely not good for introducing people to computer science.
[+] Millennium|12 years ago|reply
Don't use this series as your introduction.

Knuth attempts to build the discipline more or less from the ground up, using a mathematical perspective, and he actually more or less succeeds. The resulting books are awesome as references, but they're incredibly information-dense: not beginner-friendly at all.

[+] brg|12 years ago|reply
If you are coming from mathematics and want to learn programming, you should pick a language first and learn to compile, run, and debug it. Then just about any introductory programming text would serve you fine.

But learning computer science can be much different than learning software engineering. If you want to learn algorithms analysis, I would suggest you read, in order, Sipser and then pick and choose parts of CLR+S. This will give you a good overview of what is important and how proofs of correctness and complexity analysis are done.

[+] nicolethenerd|12 years ago|reply
Can't speak to this particular book, as I haven't read it, but the best starting point for you depends what you want to learn CS for - do you want to build apps, or do research, or dabble in a bunch of topics just for the sake of learning, or something else entirely? The basics of CS "theory" (ie. Big O notation, searching/sorting algorithms, etc) are useful for any programmer - but beyond that, there are many directions you can take.
[+] mikevm|12 years ago|reply
What do you want to learn? Programming or CS? CS is more than just programming, and CS theory is more than just Algorithms & Data Structures.

If you want to learn about Algorithms and Data Structures and you have a strong math background, then CLRS is the book to get: http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...

An undergraduate CS curriculum will mostly cover the parts I-VI of the book (that's around 768 pages) plus a few chapters from the "Selected Topics Chapter" (we covered Linear Programming and String Matching). Mind you, this book is very theoretical, and all algorithms are given in pseudocode, so if you don't know any programming language, you might have to go with a an algorithms textbook that is more practical. In my DS course we had to implement a Red-Black tree and a binomial heap in Java, and in my Algorithms course we only wrote pseudocode.

Maybe Sedgewick's (Knuth was his PhD advisor!) "Algorithms (4th ed)" will be a better choice for a beginner, as it shows you algorithm implementations in Java: http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewic... (If you decide to go this route, you might as well take his two Algorithms courses on Coursera, they will really help).

There are also a bunch of Python-based introductions to computer science which have a broader focus than just teaching specific data structures and algorithms. Some of them emphasize proper program design, debugging and problem solving. I haven't read any of them, so I can't vouch for them, but here are a few of the more popular ones:

* http://www.amazon.com/Introduction-Computation-Programming-U...

This book was written to go along with John's edX course: https://www.edx.org/course/mitx/mitx-6-00-1x-introduction-co...

* http://www.amazon.com/Python-Programming-Introduction-Comput...

Oh and btw, there's also the Theory of Computation, which is a major part of CS theory. Here are a few MOOCs and recommended books on the subject:

MOOCS:

* https://www.coursera.org/course/automata

* https://www.udacity.com/course/cs313

Books:

* http://www.amazon.com/Introduction-Theory-Computation-Michae...

Sipser's book is probably the best introduction to the theory of computation, and I believe its last chapter deals with Complexity theory as well.

* http://www.amazon.com/The-Nature-Computation-Cristopher-Moor...

I loved this book very much. It has a very informal and conversational style (don't let it fool you, the problem sets can be HARD).

* http://www.amazon.com/Computational-Complexity-A-Modern-Appr...

Once you are familiar with some computation models, its time to study computational complexity and this is one of the best books on the subjects. It is used both for graduate and undergraduate courses.

[+] serf|12 years ago|reply
While i'm glad about taocp being more available, my experience with Pearson and their ebook systems (due to their grasp on academia) quickly made me stop considering the purchase.
[+] wiT0|12 years ago|reply
This is probably OT, but how much is MIX/MMIX still used in the new books coming out? Volume1 had MIX code for everything, and IIRC by Volume3 it wasn't as pervasive.

Does Volume4 have MMIX code for all algorithms presented?

[+] jclem|12 years ago|reply
FYI, this is just a PDF. It's not in ePub or mobi formats.
[+] adiM|12 years ago|reply
Is there a sample chapter or section available. I normally like to see how an ebook containing math looks like on the different devices before buying.
[+] sampo|12 years ago|reply
See the other comments. If the result pleases Knuth, it probably is good enough for you, too.
[+] Jtsummers|12 years ago|reply
http://www-cs-faculty.stanford.edu/~uno/fasc1.ps.gz

That's the postscript version of an unmaintained version. You can probably convert it to pdf and it ought to be similar (sans links, errata fixes and other changes) to the purchasable version with respect to the math layout.

[+] systems|12 years ago|reply
who should read those book, i know for sure they are not for the average IT/Programmer guy

who is the right audience, and what would be a prerequisite reading

[+] mrcarlosrendon|12 years ago|reply
He starts at the beginning with math and works his way up. Your average IT/programmer guy will probably not have read this book, but it covers all the basics. Think of it as a replacement for a CS degree or at least the lower division courses.
[+] Jtsummers|12 years ago|reply
I liked the books as references. I really only worked through most of Volume 1. followed by a detour into Concrete Mathematics. I have made frequent use of Volume 2 and Volume 3 as reference volumes. In college they were invaluable when professors selected some awful textbooks by providing explanations of certain algorithms and concepts and data structures.
[+] r-s|12 years ago|reply
I filled out their survey and it only cost me $11.xx.
[+] rinon|12 years ago|reply
I can't wait until the rest of the volumes are offered. This particular volume is just a small supplement.
[+] jclem|12 years ago|reply
This link is only for a tiny section of "The Art of Computer Programming".
[+] chj|12 years ago|reply
Misleading title. This is only a tiny section of TAOCP.
[+] tjr|12 years ago|reply
What I really wanted to share was Knuth's announcement on his own website, which is that (1) this first small chunk of TAOCP is available now in eBook form, and (2) much more of TAOCP will be released in eBook form next year. Linking to Knuth's news.html page seemed wrong, since it's not a static link to this topic, so I linked to the current product offering, and then posted a comment here with more details.

No misleading intended, but I apologize for it coming across that way.

[+] forestgood|12 years ago|reply
If you are learning to program in Rails, www.hackhands.com will be a great resource. It is a real time expert marketplace where you can instantly connect with an expert (Uber for programmers). If you are a Rails programmer, sign up to become an expert today so you can get paid to help others and build your reputation.