Slashdot Mirror


Book Review: The Art of Computer Programming. Volume 4A: Combinatorial Algorithm

asgard4 writes "Decades in the making, Donald Knuth presents the latest few chapters in his by now classic book series The Art of Computer Programming. The computer science pioneer's latest book on combinatorial algorithms is just the first in an as-of-yet unknown number of parts to follow. While these yet-to-be-released parts will discuss other combinatorial algorithms, such as graph and network algorithms, the focus of this book titled Volume 4A Combinatorial Algorithms Part 1 is solely on combinatorial search and pattern generation algorithms. Much like the other books in the series, this latest piece is undoubtedly an instant classic, not to be missing in any serious computer science library or book collection." Keep reading for the rest of asgard4's review. The Art of Computer Programming. Volume 4A: Combinatorial Algorithms Part 1 author Donald E. Knuth pages 883 publisher Addison-Wesley Publishing rating 9/10 reviewer asgard4 ISBN 0-201-03804-8 summary Knuth's latest masterpiece. Almost all there is to know about combinatorial search algorithms. The book is organized into four major parts, an introduction, a chapter on Boolean algebra, a chapter on algorithms to generate all possibilities (the main focus of the book), and finally 300 pages of answers to the many exercises at the end of every section in the book. These exercises and answers make this work an excellent companion for teachers of a university course.

The book begins with some introductory examples of combinatorial searching and then gives various definitions of graphs and directed acyclic graphs (DAGs) since a lot of combinatorial algorithms conveniently use graphs as the data structures they operate on. Knuth's writing style is terse and to the point, especially when he presents definitions and proofs. However, the text is sprinkled with toy problems and puzzles that keep it interesting.

After the introduction, the first chapter of the book (out of only two) is titled "Zeros and Ones" and discusses Boolean algebra. Most readers that have studied computer science in some form should be intimately familiar with most of the discussed basics, such as disjunctive normal forms and Boolean functions and their evaluation. The reader might be surprised to find a discussion of such an elemental foundation of computer science in a book on combinatorial algorithms. The reason is that storage efficiency is especially important for these types of algorithms and understanding the basic storage unit of computer systems nowadays (as the decimal computer is a definite thing of the past) is of importance.

After covering the basics of Boolean algebra and Boolean functions in quite some detail, Knuth gets to the most fun part of this chapter in my opinion: the section on bitwise tricks and techniques on integer numbers. Being a software engineer in the video games industry, I recognized a lot of the techniques from my day-to-day work, such as bit packing of data and various bit shifting and bit masking tricks. There is also a discussion of some interesting rasterization-like algorithms, such as the shrinking of bitmaps using Levialdi's transformation or filling of regions bounded by simple curves. The chapter concludes with Binary Decision Diagrams that represent an important family of data structures for representing and manipulating Boolean functions. This topic was also quite interesting to me since I have never been exposed to it before.

The second and main chapter of the book is titled "Generating All Possibilities". In this particular volume of the The Art of Computer Programming series, the only subsection of the chapter in this volume is on generating basic combinatorial patterns, or more specifically generating all n-tuples, permutations, combinations, partitions, and trees. We can expect more on this topic from Knuth in his continuation in Volume 4B and beyond.

The discussion on n-tuples starts out with a lengthy focus on Gray codes, which are binary strings of n bits arranged in an order such that only one bit changes from string to string.

A quite fun example for generating all permutations presented in this part of the book is alphametics, also sometimes known as verbal arithmetic — a kind of puzzle where every letter of a word stands for a digit and words are used in equations. The goal is to assign digits to letters in such a way that the equation is correct. A classic example is SEND + MORE = MONEY (the solution is left as an exercise for the reader).

The next section deals with generating all combinations. Given a set of n elements, the number of all possible combinations of distinct subsets containing k elements is the well-known binomial coefficient, typically read as "n choose k". One of the more interesting algorithms in this section of the book to me was generating all feasible ways to fill a rucksack, which can come in quite handy when going camping.

After combinations, Knuth moves on to briefly discuss integer partitions. Integer partitions are ways to split positive integer numbers into sums of positive integers, disregarding order. So, for example 3, 2+1, and 1+1+1 are the three possible partitions of the integer 3. Knuth, in particular, focuses on generating all possible integer partitions and determining how many there are for a given number. The book continues with a concise presentation of the somewhat related topic of set partitions, which refer to ways of subdividing a set of elements into disjoint subsets. Mathematically, a set partition defines an equivalence relation and the disjoint subsets are called equivalence classes; concepts that should be familiar to any mathematics major. Again, the focus is on generating all possible set partitions and determining how many partitions can be generated.

The main part of the book closes with a discussion of how to exhaustively generate all possible trees, which is a topic that I have never given much thought to. I am familiar with generating permutations, combinations, and partitions, but have never really been confronted with generating all possible trees that follow a certain pattern. One main example used throughout this part of the book is generating all possible strings of nested parentheses of a certain length. Such strings can be represented equivalently as binary trees.

Knuth's latest book is comprehensive and almost all encompassing in its scope. It compiles an incredible amount of computer science knowledge on combinatorial searching from past decades into a single volume. As such, it is an important addition to any computer science library. This book is not necessarily an easy read and requires a dedicated reader with the intention of working through it from front to back and a considerable amount of time to fully digest. However, for those with patience, this book contains a lot of interesting puzzles, brain teasers, and almost everything there is to know on generating combinatorial patterns.

On a final note, if you don't have volumes 1-3 yet you can get all volumes in a convenient box set .

Martin Ecker has been involved in real-time graphics programming for more than 10 years and works as a professional video game developer for High Moon Studios http://www.highmoonstudios.com/ in sunny California.

You can purchase The Art of Computer Programming. Volume 4A: Combinatorial Algorithms Part 1 from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

176 comments

  1. Boring. by Anonymous Coward · · Score: 0, Troll

    I can just, like, do all that in Visual Basic, without reading a bunch of boring words about theories and junk.

    1. Re:Boring. by St.Creed · · Score: 0

      Go away, Troll. The sun's coming up.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    2. Re:Boring. by Anonymous Coward · · Score: 0

      oh devxxx, you've forgotten to add a Visual $tudio or Micro$oft link in your post.

      QQ

    3. Re:Boring. by makubesu · · Score: 3, Funny

      YOU CAN'T HANDLE THE KNUTH!

  2. who needs this? by Anonymous Coward · · Score: 5, Funny

    I already have the entire O'Reilly library, plus selected volumes from the "for dummies" and "...in 21 days" series. Why do we need another lousy computer book? This one doesn't even appear to cover anything useful like HTML coding or Adobe software.

    1. Re:who needs this? by Anonymous Coward · · Score: 0

      HTML are you serious? Stupid capitalist book anyway.

    2. Re:who needs this? by drooling-dog · · Score: 1

      Algorithms! We don't need no stinkin' algorithms!

    3. Re:who needs this? by mangu · · Score: 4, Funny

      Idiot, you obviously don't know anything about computer programming. The Art of Computer Programming is all about CONCEPTS. If you want a book to hold your hand the entire time, stick to books 'for dummies'. You are clearly the target audience for such books.

      May I recommend to you the "Wooosh for Dummies" book?

    4. Re:who needs this? by Anonymous Coward · · Score: 0

      I think you'll love Knuth's next book

    5. Re:who needs this? by Mr+Z · · Score: 1

      The one published by the YHBT, YHL and HAND Consulting Group? ;-)

    6. Re:who needs this? by Mr+Z · · Score: 1

      The " Thousands of TrueType Fonts" part is what always pushes me over the edge.

    7. Re:who needs this? by Dogtanian · · Score: 1

      I already have the entire O'Reilly library, plus selected volumes from the "for dummies" and "...in 21 days" series. Why do we need another lousy computer book? This one doesn't even appear to cover anything useful like HTML coding or Adobe software.

      There's a Donald Knuth book for you too!

      --
      "Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
  3. Decades in the making! by Sponge+Bath · · Score: 1, Funny

    Yeah, but is it in 3-D? All the latest cool tech involves 3-D (soon to be the bell bottoms of this era).

    1. Re:Decades in the making! by Anonymous Coward · · Score: 0

      Yes, it uses a ground breaking container format which is fully 3D.

    2. Re:Decades in the making! by Anonymous Coward · · Score: 0

      Yeah, but is it in 3-D? All the latest cool tech involves 3-D (soon to be the bell bottoms of this era).

      An algorithm to generate the book in 3-D Form is left as an exercise for the reader.

  4. 9/10 ??? by condition-label-red · · Score: 4, Insightful

    After all the Foo for Dummies books that review on /. and rate a 10/10, Donald Knuth just gets a 9/10? Sad...

    --
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    1. Re:9/10 ??? by larry+bagina · · Score: 0

      30 years since his last book and all he can manage is two chapters.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    2. Re:9/10 ??? by turgid · · Score: 1

      "We only know 3 chords, but they're good ones!" - Status Quo.

    3. Re:9/10 ??? by gman003 · · Score: 4, Funny

      Be fair - he had to generate every possible combination of characters for a 883 page book, then select the optimal one to be published. Even with a really good algorithm, that's going to take a while.

    4. Re:9/10 ??? by Rene+S.+Hollan · · Score: 1

      I think Knuth would agree that no work is ever perfect, and be satisfied with 9/10.

      I once had a grad school prof who would never give perfect marks on assignments (we had weekly assignments in addition to papers and other work), for the same reason. He would even takes 1/4 marks off (out of 10) for spelling and typographical errors.

      I once received an assignment back, marked 9-3/4 / 10. I hurried through the paper to find the error. Apparently there was a ribbon defect in the ribbon I used to print the final draft and an "r" had the hook of the letter broken in the middle. The red note beside it was "-1/4: did not proof read".

      --
      In Liberty, Rene
    5. Re:9/10 ??? by by+(1706743) · · Score: 1

      I'm betting you either loved that prof or absolutely hated him. Hopefully the former!

    6. Re:9/10 ??? by Hijacked+Public · · Score: 2

      Was the prof Edward Tufte?

      --
      "Sacrifice for the good of The State" - The State
    7. Re:9/10 ??? by GreatBunzinni · · Score: 1

      The sad part is that quite possibly the only reason the book was given a 9/10 is because it is Knuth's book. Otherwise, as any other book on combinatorial algorithms, the book would never be reviewed, as the author doesn't have the faintest grasp on the subject, and this book review would be again dedicated to vacuous "learn X in n hours" books.

      --
      Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
    8. Re:9/10 ??? by raddan · · Score: 1

      People who review Foo for Dummies tend not to read books on theoretical computer science. The self-selection biases the scores, because their scoring criteria are different.

    9. Re:9/10 ??? by Anonymous Coward · · Score: 0

      After all the Foo for Dummies books that review on /. and rate a 10/10, Donald Knuth just gets a 9/10? Sad...

      Perhaps Knuth would appreciate the input and not expect an automatic 10/10 just because he's Knuth, though.

    10. Re:9/10 ??? by Evi1M4chine · · Score: 1

      You only need one book to teach them all anyway!

      --
      I must be some kind of leader... Since Slashdot is following me to the grave. ;)
    11. Re:9/10 ??? by Anonymous Coward · · Score: 0

      There is a difference between no such thing as perfection and no such thing as an assignment worth 100%... taking off 1/4 marks for stuff like ribbon defects is pretty absurd. I can see penalizing spelling and grammar errors, but refusing to give 10/10 on principle seems somewhat absurd.

    12. Re:9/10 ??? by Tetsujin · · Score: 1

      Be fair - he had to generate every possible combination of characters for a 883 page book, then select the optimal one to be published. Even with a really good algorithm, that's going to take a while.

      You can prune that down with a good heuristic guiding the search. You don't need to search the whole search space, it's generally good enough to work with a pretty good guess of the direction you should go to improve the book, and the algorithm will converge.

      The problem is there's lots of local minima fouling up the search space. On this book, for instance, Knuth's book writing algorithm kept getting stuck in basins of angsty vampire fiction and parodies of classic literature with zombies or ninjas. He tried to tweak the algorithm to get it out of those basins, guide it more toward computer science, but there's a long way to go to turn vampire fiction into a comp sci book, so the search algorithm would quit the line searches (classifying the search direction as "worse vampire fiction" because it didn't go far enough to reach the basin of attraction for what would be "good computer science books"

      But it all worked out in the end. Knuth published some of the side-products of his algorithm under various pseudonyms and gradually got his algorithm to converge on a better solution.

      --
      Bow-ties are cool.
    13. Re:9/10 ??? by Anonymous Coward · · Score: 0

      loooooool

  5. Knuth, it may get you a job. by perpenso · · Score: 4, Interesting

    Much like the other books in the series, this latest piece is undoubtedly an instant classic, not to be missing in any serious computer science library or book collection.

    During a job interview I was given a test. Some questions/problems were good, other were not. One of the not-so-good questions presented 8 or so sorting algorithms and asked for their run time complexity (O notation). I answered bubble sort and quick sort and then added that I bought Knuth vol 3 so I didn't have to memorize such trivia. I'm not sure the engineer who created and graded the test liked the answer but the manager of the team (not an engineer) loved the answer after I explained what Knuth vol 3 was. I got hired.

    1. Re:Knuth, it may get you a job. by falzer · · Score: 5, Funny

      I just tell potential employers that I ascended Nethack multiple times.

    2. Re:Knuth, it may get you a job. by hugetoon · · Score: 1

      Don't look down on those questions. The day You try You will realize that designing good problems is *much* harder than solving them.

    3. Re:Knuth, it may get you a job. by chemicaldave · · Score: 1

      Don't look down on those questions. The day You try You will realize that designing good problems is *much* harder than solving them.

      That all depends on how the questions were presented. Was it a fill in the blank style question which really is trivia, or did it ask the participant to analyze actual code and determine the complexity himself? My hunch tells me it was a memorization type question, in which case his answer was pretty clever.

    4. Re:Knuth, it may get you a job. by ShavedOrangutan · · Score: 2

      Did the position give you the opportunity to apply that knowledge?

      --
      Godaddy is a scam and a ripoff.
    5. Re:Knuth, it may get you a job. by perpenso · · Score: 1

      Don't look down on those questions. The day You try You will realize that designing good problems is *much* harder than solving them.

      Actually when I took that test I had already designed programming tests for job interviews at my previous employer. One of my first tasks at the new employer was to create a new test. I realize creating such tests is hard. The problem with the one I took was that the author had not really put much effort into it. It looked liked someone copied questions from undergraduate computer science quizzes.

    6. Re:Knuth, it may get you a job. by A+nonymous+Coward · · Score: 2

      Excellent section on sorting. I sped up a sort program 100x using that, after much study and fine tuning. This was back in the late 70s on an 8 bit machine with 8k of RAM to play with. Several years later, we switched hardware and interviewed some clown, who, when asked what he would do, said he would allocate a 1MB array and use bubble sort. Ouch!

    7. Re:Knuth, it may get you a job. by tixxit · · Score: 1

      That's true, but I think the question is bad on principle. I think a better question would be to give the interviewee a problem, and ask them what algorithm they'd use to solve it and why. For instance, what sorting algorithm (or data structure) would you use in the following situations, and why?

      1. Handle online sorting of packets that are usually in-order already, but occasionally not?
      2. Sort a terrabyte of data?
      3. Sort a list of ~1000 items in memory?

      This is better because it doesn't require the person to remember specific details, but just understand the underlying concepts (which are much harder to forget).

    8. Re:Knuth, it may get you a job. by perpenso · · Score: 2

      Did the position give you the opportunity to apply that knowledge?

      Yes. I needed to sort data in a time critical manner. I thought about the nature of my data, mostly already sorted, consulted Knuth's summary table and tried the algorithm he identified as having good performance on data of that nature. After implementation I profiled a run with a large data set and the sorting code barely showed up, 1% execution time. Good enough, moved on to next task.

    9. Re:Knuth, it may get you a job. by billstewart · · Score: 2

      I remember when I first got to use Virtual Machines, on an IBM VM/CMS system back in the mid-late 70s. You could define a virtual machine with a whole megabyte of storage! That was as big as a quarter of the physical RAM on the whole mainframe, not that it would actually all be in core at once!

      And yeah, Knuth's volume on searching and sorting was really important when computers had that kind of scale, and the principles mostly still apply even now when disk drives are the slow part and tapes don't exist.

      --

      Bill Stewart
      New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
    10. Re:Knuth, it may get you a job. by spiffmastercow · · Score: 1

      smoothsort, mergesort, quicksort. where's my job?

    11. Re:Knuth, it may get you a job. by Mindcontrolled · · Score: 1

      Nah, the real question to ask is whether bogosort or bozosort is less efficient... That shows the true wizard.

      --
      Ubi solitudinem faciunt, pacem appellant.
    12. Re:Knuth, it may get you a job. by Dails · · Score: 1

      Your answer should be "Smoothsort, how much data per item to sort, how big is each item," since two objects each containing 500GB of data would be way easier to sort than 20,0000 objects each containing 5MB of data.

      Maybe that's why you can't find your job :)

    13. Re:Knuth, it may get you a job. by spiffmastercow · · Score: 1

      Your answer should be "Smoothsort, how much data per item to sort, how big is each item," since two objects each containing 500GB of data would be way easier to sort than 20,0000 objects each containing 5MB of data.

      Maybe that's why you can't find your job :)

      Well, in fairness, mergesort is going to work pretty well in either of those situations. But I'll admit that I was assuming that the unit of data was at least smaller than a block of disk space, which is where mergesort comes in, as it can work on small amounts of data (4-8kb, or whatever the block size is for the file system), then sort those blocks by their file index, and then groups of files by their file index, and so on up the chain.

    14. Re:Knuth, it may get you a job. by Anonymous Coward · · Score: 0

      Pfft those are all trick questions. The examples are obviously:

      Online gaming traffic, you drop out of order packets.

      A set of 20 blu-ray movies, sort alphabetically.

      Seeing as how I can barely hold two things in memory, I deduce the person asking the question is Ben Pridmore and I tell him to sort them himself.

    15. Re:Knuth, it may get you a job. by modmans2ndcoming · · Score: 2

      Seriously... D-Bags who think a good engineer is someone who has memorized weird minutia should not be making decisions on hiring... and neither should HR.

      -Do you have experience with software development? (a good developer can learn any language and use the correct constructs)
      -Can I see code examples? (Proof of code quality)

      -Please return for interview two... [call 24 hours before and ask for code for a simple program in their preferred language to be brought with them] (validation of code quality)

      -You are hired (then watch the person for 30 days to gauge real world capabilities)

    16. Re:Knuth, it may get you a job. by owlstead · · Score: 1

      The answer to the third option is easy: anysort (tm). Sometimes you just don't care (unless you have to do many in a loop). Quicksort is probably the workhorse to use, but I would rely on the platform.

      One rather interesting fact: you got those exercises at university where you had to calculate which sorting algo was more efficient given a number of elements. Of course, easier algo's may be more efficient if the set is small. But the simple fact is that most of the time, small sets are not interesting anyway.

      At least your questions were more intelligent (but they lack in detail).

    17. Re:Knuth, it may get you a job. by chgros · · Score: 1

      How is calculating complexity "trivia"? Were the algorithms only described by name?

    18. Re:Knuth, it may get you a job. by Dails · · Score: 1

      That's interesting. I've only thought of these algorithms in a conceptual sense, and when I've coded them I've coded them to sort objects. I've never thought of any clever speedups or hardware tricks like that.

    19. Re:Knuth, it may get you a job. by perpenso · · Score: 1

      How is calculating complexity "trivia"? Were the algorithms only described by name?

      There was no calculation of complexity. There was merely the regurgitation of the textbook run time complexity of XXXsort that assumed randomly ordered data, ignored constants, assumed a sufficiently large n, etc. It was literally something like: Q. Bubble sort? A. O(n^2).

    20. Re:Knuth, it may get you a job. by Anonymous Coward · · Score: 0

      so.. since you had to explain it did you take the gig? hmm

    21. Re:Knuth, it may get you a job. by mikael · · Score: 1

      Many companies (in the UK at least) have online pre-screening tests for candidates for C++ questions which are fairly easy to answer.

      Some are a bit strange like, "What is the least number of parenthesis you can leave this equation with, and still have it function as intended?" Something like: result = ( ( a && b ) & (c || (d | e ) ^ f ) );

        Presumably it's an optimization test, but really, I wouldn't want to change any piece of code unless there was something wrong with it in the first place. Management would probably fire me if I was unnecessarily changing working code.

      Other questions are things like how many protected, private and public constructors can a class have.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    22. Re:Knuth, it may get you a job. by Anonymous Coward · · Score: 0

      I answered bubble sort and quick sort and then added that I bought Knuth vol 3 so I didn't have to memorize such trivia.

      The correct answer was "quick sort and merge sort" (or replace merge sort with another O(nlogn) algorithm). Quicksort is the fastest general-purpose O(nlogn) algorithm, but its worst case is O(n^2), so in some applications you need to use something that's guaranteed to be no slower than O(nlogn) (like mergesort). Bubble sort, by contrast, has no redeeming features.

      For that matter, the question is still useful even if the sorting algorithms in it are utterly useless: it tests whether you're able to look at a piece of code and see how it scales. For this purpose, it's better if the person being tested isn't familiar with the sorting algorithms in the first place.

    23. Re:Knuth, it may get you a job. by Anonymous Coward · · Score: 0

      Yes. I needed to sort data in a time critical manner. I thought about the nature of my data, mostly already sorted, consulted Knuth's summary table and tried the algorithm he identified as having good performance on data of that nature. After implementation I profiled a run with a large data set and the sorting code barely showed up, 1% execution time. Good enough, moved on to next task.

      Well golly gee, that sounds real scientific. That's about what I expected to hear, looked something up in a table once and moved on to real work. /me goes back to working on the other 99.9% of computing problems that cannot be indexed in a book.

    24. Re:Knuth, it may get you a job. by epee1221 · · Score: 1

      Presumably it's an optimization test

      I dunno, it looks to me like this test is about memorizing operator precedence >_>
      Barring issues not mentioned in the problem statement, I'm rather inclined to let the compiler handle optimization on this.

      --
      "The use-mention distinction" is not "enforced here."
    25. Re:Knuth, it may get you a job. by perpenso · · Score: 1

      so.. since you had to explain it did you take the gig? hmm

      Yes. The manager I explained it to was not a programmer. We chatted enough that day that I was able to get the impression that he was smart and reasonable.

    26. Re:Knuth, it may get you a job. by t2t10 · · Score: 1

      You shouldn't have to memorize that stuff, you should be able to figure it out.

    27. Re:Knuth, it may get you a job. by Anonymous Coward · · Score: 1

      Ascension is trivial as you start out next to the stairs.

    28. Re:Knuth, it may get you a job. by Anonymous Coward · · Score: 0

      It's hardly trivia, knowing the properties of your tools. The implementation details are trivia, sure, but they weren't asking that. Knowing the O of each sort algorithm is like knowing the diameter of each drill bit. Lucky for you you found a non-technical manager who loves smart-asses.

    29. Re:Knuth, it may get you a job. by Mr+Z · · Score: 1

      The sorting stuff came in handy for me when doing incredibly small sorts, ironically enough. Median filters end up being small sorts. With a 5x5 or 7x7 median filter, you've got 25 or 49 pixels and need to find the median pixel value quickly. Interestingly enough, I ended up using a combination of sorting networks and insertion sort a partially sorted pixel buffers for 7x7. (Partially sorted because the 7x7 kernel for adjacent pixels overlaps and so you can take advantage of the partial sorting in the overlap region for both.)

      I've had it come in handy for other similar things here and there over the years. For example, I reused the 7-point sorting network when helping a customer optimize their power supply filtering code on a microcontroller once, for example. (It too was a median filter, but one dimensional.) Not everyone needs to sort megabytes of data to make use of Knuth. :-)

      (Ok, I guess I am still filtering megabytes of data in some sense. Just not all in one go. I'm doing many, many, many smaller sorts that don't cross-communicate.)

    30. Re:Knuth, it may get you a job. by mikael · · Score: 1

      I'd agree with that - operator precedence vs. parenthesis writing. In the past, the recommended practise was to put separate operations in parenthesis in case of dodgy compilers that didn't handle precedence correctly, and also to mimc mathematical notation.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    31. Re:Knuth, it may get you a job. by Anonymous Coward · · Score: 0

      It's hardly trivia, knowing the properties of your tools. The implementation details are trivia, sure, but they weren't asking that. Knowing the O of each sort algorithm is like knowing the diameter of each drill bit. Lucky for you you found a non-technical manager who loves smart-asses.

      That is a newb answer. The O notation of each algorithm is dependent on the characteristics of the data. Until you know the data you don't know the Os, you are memorizing Os for a convenient academic and hypothetical data set. You fail on your analogy too. Looking up algorithms in Knuth, where he discusses O under different types of data, is like looking at the diameter markings stamped into the drill bit.

  6. wait a minute by Anonymous Coward · · Score: 4, Funny

    Someone actual read The Art of Computer Programming? Are you sure it wasn't just sitting on your shelf?

    1. Re:wait a minute by fishbowl · · Score: 2

      I often found the whole focus on the MIX hypothetical machine to be counterproductive to learning the material. I always went to CLR first for anything, and to Knuth for certain things where I wanted more depth or just a different explanation. Knuth's pseudocode resonates with me fairly well, but MIX examples tended to just give me headaches. Yes, I did read the introduction, and yes I'm glad he didn't try to use any of the languages that were in vogue in 62.

      --
      -fb Everything not expressly forbidden is now mandatory.
    2. Re:wait a minute by Anonymous Coward · · Score: 0

      actually read it cover to cover, all 3 books, and these new ``books''. It's actually an ok "subway" book---just read a few pages every commute.

    3. Re:wait a minute by Citizen+of+Earth · · Score: 1

      What? It has words inside??

    4. Re:wait a minute by chienyul · · Score: 1

      In Seinfeld's words, "great great book if I may say so. I almost read the whole thing".

    5. Re:wait a minute by makubesu · · Score: 1

      I've been meaning to read my copy, but what will keep my paper held down?

    6. Re:wait a minute by Anonymous Coward · · Score: 0

      I liked how MIX was used specifically because it's a really fucking weird (theoretical) machine. It proved that the algorithms are universal, and not dependent on 8 bit bytes and 32 bit words or whatever.

    7. Re:wait a minute by billstewart · · Score: 1

      Languages in vogue in 62? (Not that the first volume actually shipped until 68...)

      • That would be Algol, which would have been a great language for Knuth to teach in (and the CACM used it for most articles about algorithms for years, though they still tended to be in Fortran then.)
      • LISP was around, but was sufficiently abstract that it wouldn't have matched most of the things Knuth was trying to teach because it doesn't have the physicality.
      • But even F0RTRAN II would have been better than Knuth's pseudocode for most of his examples, if you got a newer version that had COMPLEX numbers.
      • COBOL had enough header baggage that it would be awkward, and I don't know if the early COBOLs could have done the job or not.
      • Assembler languages? Most of them would have been more clear than MIX, though I can understand not wanting to show manufacturer favoritism, and there were some weird ones that would have been worse. The PDP-1 came out in 61, but I'm not sure how many were around that early, and the 1965 PDP-8 was wildly successful but Knuth was probably well into writing and not willing to abandon MIX by then.
      --

      Bill Stewart
      New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
    8. Re:wait a minute by martyros · · Score: 2

      Yeah -- I bought the first three as a set, but I never could bring myself to invest the effort to learn an imaginary language. The book could have been written in a very simplified C, which can be trivially reduced to assembly if need-be, but can be easily read by nearly any programmer today. His books could have a much wider impact if they were translated into something that had a lower barrier-to-entry.

      --

      TCP: Why the Internet is full of SYN.

    9. Re:wait a minute by Anonymous Coward · · Score: 0

      The MIX is optional - there is pseudocode as well.

      The point of MIX is to allow an *exact* run time and space analysis in some languiage, which is necessarily a bit wooly if you stick to the pseudocode description.

    10. Re:wait a minute by Phantom+Gremlin · · Score: 1

      Yeah -- I bought the first three as a set, but I never could bring myself to invest the effort to learn an imaginary language. The book could have been written in a very simplified C, which can be trivially reduced to assembly if need-be, but can be easily read by nearly any programmer today.

      C did not even exist when the first two volumes of TAOCP were published. I'm not at all crazy about MIX, but Knuth can't be criticized for not "simplifying" a language that hadn't even been invented at the time.

      Plus, MIX isn't completely "imaginary". Emulators actually exist for it.

    11. Re:wait a minute by martyros · · Score: 1

      I'm not at all crazy about MIX, but Knuth can't be criticized for not "simplifying" a language that hadn't even been invented at the time.

      Sorry -- I didn't actually mean to criticize him for not writing it with C originally, but looking back at my comment, it sure sounded like that. :-) What was really meant (although I didn't actually write it) was that the books would have a much wider influence now if they were translated into very simplified C.

      --

      TCP: Why the Internet is full of SYN.

  7. More Knuth is Always Welcome by Millennium · · Score: 3, Interesting

    Knuth's books are awesome, not just for the content (which would itself be a bargain at quadruple the price) but also for the sheer intimidation factor.

    However, I've got to admit: the volumes I'm most looking forward to -5, 6, and 7- are yet to come. This bothers me, because with the way Volume 4 keeps growing, I'm no longer convinced that he's going to live long enough to finish the series, not because of any slowness on his part but because the work just keeps getting bigger and bigger. Has he made arrangements for others to finish the series in case the worst happens?

    1. Re:More Knuth is Always Welcome by petermgreen · · Score: 1

      not because of any slowness on his part

      He banged out volumes 1, 2 and 3 over about 5 years. It's been nearly 40 years since then with relatively little progress. Something has slowed knuth down big time whether it is other commitments, reduction in mental capacity, inceasing complexity of the work or some combination thereof.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    2. Re:More Knuth is Always Welcome by Anonymous Coward · · Score: 0

      He has ditched the internet, so he's made better progress lately. His lolcat contributions will be missed though.

    3. Re:More Knuth is Always Welcome by larry+bagina · · Score: 4, Funny

      That something was TeX. Have you ever tried using it? We're lucky he got part A out. The entire chapter (not just part A) would have been published 30 years ago if he hadn't been dicking around with the font, margins, gutters, line breaks, etc.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    4. Re:More Knuth is Always Welcome by assantisz · · Score: 1

      Well, according to his own website (http://www-cs-faculty.stanford.edu/~knuth/taocp.html) his plan is to finish volume 5 by 2020 and will then revisit volumes 1-3 to update them. And only then, and if he's still alive, will ge start on volumes 6 and 7, which he doesn't count as "central core of computer programming for sequential machines", though.

    5. Re:More Knuth is Always Welcome by gewalker · · Score: 1

      I don't understand. Is he part of the Duke Nuke'm Forever development team?

      I love this story about Donald Knuth writing an Algol compiler during the summer of 1960

    6. Re:More Knuth is Always Welcome by vlm · · Score: 1

      Well, according to his own website (http://www-cs-faculty.stanford.edu/~knuth/taocp.html) his plan is to finish volume 5 by 2020 and will then revisit volumes 1-3 to update them. And only then, and if he's still alive, will ge start on volumes 6 and 7, which he doesn't count as "central core of computer programming for sequential machines", though.

      In his latest book collected papers on fun and games he referred to it as his last book. Hopefully his last book as in last book of the "collected papers" series.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    7. Re:More Knuth is Always Welcome by billstewart · · Score: 1

      There was this little thing called TeX that occupied a bit of his time....

      Last time I saw Knuth, he was over at Techshop making stuff on the laser cutter.

      --

      Bill Stewart
      New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
    8. Re:More Knuth is Always Welcome by raddan · · Score: 1

      I know you're kidding, but TeX is a seriously great piece of software. LaTeX would not be possible without TeX, which is the de facto standard for typesetting mathematical and scientific papers. And it's easy to use. Have you ever tried using Word or OOo to write anything substantive about math? Forget about it. Learning LaTeX is one of the first items on the agenda of a new grad student in my department. So I tend not to think of TeX as a waste of time on Knuth's part.

    9. Re:More Knuth is Always Welcome by mikael · · Score: 1

      Oh yes, I wrote my MSc thesis in Latex and PhD in Word.

      The biggest problem with Word was that page numbering was a pain, because the front pages have no numbering, everything from the introduction, table of contents, list of figures is page numbered in roman numerals. The rest of the chapters are numbered normally. You also need a list of special keywords which are all in italics, not forgetting that the plurals of some words are hyphenated, while the singular isn't.

      With mathematical equations, matrices are in bold capital letters, vectors are in bold letters, scalar values are in normal font. You have to list what each variable is for. Trying to remember the code sequence for greek symbols was even worse. On some occasions, particularly late nights, the equations could be scrambled due to some deleted entry somewhere.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    10. Re:More Knuth is Always Welcome by Anonymous Coward · · Score: 0

      Knuth could be the Robert Jordan of computing

    11. Re:More Knuth is Always Welcome by syousef · · Score: 1

      That something was TeX. Have you ever tried using it? We're lucky he got part A out. The entire chapter (not just part A) would have been published 30 years ago if he hadn't been dicking around with the font, margins, gutters, line breaks, etc.

      Leave the poor man alone. He's just trying to build an alternative to MS Word that isn't O(n^2) ;-)

      --
      These posts express my own personal views, not those of my employer
    12. Re:More Knuth is Always Welcome by indeterminator · · Score: 1

      Something has slowed knuth down big time whether it is other commitments, reduction in mental capacity, inceasing complexity of the work or some combination thereof.

      Knowing that his time will eventually run out, he's been busy creating an algorithm that generates the rest of the volumes in the series.

    13. Re:More Knuth is Always Welcome by Anonymous Coward · · Score: 0

      That Knuth spent years perfecting TeX and Metafont instead of just writing his books with MS Word is a blessing for all writers who care about the readability and appearance of our books.

  8. Hope it's not a cliff hanger by Hatta · · Score: 1

    Decades in the making, and all he can complete is Volume 4A part 1. How long for part 2? Will we ever see 4B?

    --
    Give me Classic Slashdot or give me death!
    1. Re:Hope it's not a cliff hanger by c0lo · · Score: 1

      Decades in the making, and all he can complete is Volume 4A part 1. How long for part 2? Will we ever see 4B?

      All I can say: we'll see it after DNF is released... marketing reasons: too many miracles in the same time come with risk of trivializing them.

      --
      Questions raise, answers kill. Raise questions to stay alive.
    2. Re:Hope it's not a cliff hanger by Anonymous Coward · · Score: 0

      He'll get to it as soon as he finishes writing Duke Nukem Forever.

  9. Combinatorics and Permutations! by geek2k5 · · Score: 1

    Fun stuff. I guess I'll need to buy the book. If you know the theory behind things, you can often do a better job of making things work.

  10. Get this trash out of my Slashdot! by Anonymous Coward · · Score: 0

    Boooooo! Give me more shill reviews of Packt Publishing books by RickJWagner and his various sockpuppet personalities! We need them to help pay for CmdrTaco's micropenis enlargement surgery! Get this faggot's book out of my Slashdot right now!

  11. I never read things like this by bigsexyjoe · · Score: 1

    I spend all day writing Model-View-Controller, DAOs, debugging, and writing JavaScript. Reading rich algorithmic stuff really just makes me sad.

    1. Re:I never read things like this by Anonymous Coward · · Score: 1

      And that, dear Arsegroper, is why you never be a Master.

    2. Re:I never read things like this by Anonymous Coward · · Score: 0

      Yeah but some(read: team leaders) engineering types always claim that a good algorithm is "too academic for real use", despite the fact that most would probably be easier to implement than that bug prone three hashmaps + one stack "real world algorithm" they use to sum negative numbers.

    3. Re:I never read things like this by JoeD · · Score: 2

      Your comment makes me sad. You're missing so much really beautiful stuff that will help you in ways that you can't even imagine, and you don't even know it.

    4. Re:I never read things like this by bigsexyjoe · · Score: 1

      Yup. If you're boss doesn't understand it, you can't use it. Or at least not make it central to your architecture. Trying to put in anything advanced is met with condescension at best.

      Besides all that, most of what the work in the real world is just MVC, DAO, with an occasional webservice, or AJAX thing thrown in. If our clients can benefit from more, the people selling our service can't explain it anyway.

    5. Re:I never read things like this by bigsexyjoe · · Score: 2

      Like I said above, the people selling to the client understand little, so nothing complex is sold to them. Besides, you can't really use an algorithm your boss doesn't understand, can you? Knuth is the enticement into the world of programming, but the reality is usually grinding out crap for businesses.

    6. Re:I never read things like this by idontgno · · Score: 1

      Good point.

      The pipefitter may admire and envy the sculptor, but the pipefitter that tries arranging the plumbing into something like a Highfield is the pipefitter that loses his job and his union card.

      Still, I don't think you should just walk away from Knuth, even if it doesn't pay the bills. Some parts of Knuth are art. Some parts of Knuth are more like craft. Some parts of Knuth is just basic workmanship. I recommend reading it for your own edification, just like the pipefitter may want to be an amateur sculptor in his off hours. (And who knows, maybe hit it big and ditch his pipefitting gig.)

      --
      Welcome to the Panopticon. Used to be a prison, now it's your home.
    7. Re:I never read things like this by billstewart · · Score: 1

      Yeah. I remember when I was running the machines that some physicists were using to do a networking simulation. Their core loop was grunging through a linked list to find the next event. I was disappointed that turning it into a heap only tripled the speed of the whole application, but the data set was large enough that the machine had to page it in and out, and there were other parts of the program that took time also, but until we fixed the event list, they weren't the dominant time-wasters.

      --

      Bill Stewart
      New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
    8. Re:I never read things like this by Anonymous Coward · · Score: 0

      Model-View-Controller, DAOs, and even JavaScript are but passing fancies and in time may fade but Math is forever.

    9. Re:I never read things like this by martyros · · Score: 1

      Yup. If you're boss doesn't understand it, you can't use it. Or at least not make it central to your architecture.

      I think if your boss either can't trust you to make good decisions or has such an ego problem that he can't stand the idea that you're smarter than him, you should really find another job.

      There is definitely something to be said for maintainability, though. "Debugging is twice as hard as writing code in the first place, so if you code as cleverly as possible, you're by definition not smart enough to debug it." The only reason to use a "too clever to understand quickly" algorithm is if you're really hitting a performance limit; and then should be contained, with a very well-defined input and output, and with references to any tomes which you used as reference.

      --

      TCP: Why the Internet is full of SYN.

    10. Re:I never read things like this by raddan · · Score: 1

      Sure, but if you ever find yourself in the position of needing to scale things up quickly, you'll be glad you have a little theory in your corner. You'll know which parts of your program you can trivially parallelize, how to keep things moving quickly with hardware constraints, and how to save yourself work by using the more powerful features of your language. Programming is a blend of science and art, and your work will be a lot more fulfilling if you see it that way. This is coming from someone who churned out mundane enterprise/IT code for years, and who now gets to work on really fun things (scientific computing) because of that attitude.

  12. Combines all the Volume 4 fascicles by jmcbain · · Score: 4, Informative

    This new book combines all of the previously-published Volume 4 fascicles from 2005 to 2009, all of which I bought last year and am still reading. Those fascicles are:

    • Volume 4 Fascicle 0, Introduction to Combinatorial Algorithms and Boolean Functions (2008)
    • Volume 4 Fascicle 1, Bitwise Tricks & Techniques; Binary Decision Diagrams (2009)
    • Volume 4 Fascicle 2, Generating All Tuples and Permutations (2005)
    • Volume 4 Fascicle 3, Generating All Combinations and Partitions (2005)
    • Volume 4 Fascicle 4, Generating All Trees; History of Combinatorial Generation (2006)

    All the volumes combined are a true masterpiece for the computer science community. I do not know of many other fields in the sciences where the core ideas, both theoretical and practical, are wrapped up so well. The only comparison I know of is The Merck Manual for physicians. If anyone knows of definitive and comprehensive readings for other engineering fields like EE, CivilE, or ChemE, I'd like to know of them.

    1. Re:Combines all the Volume 4 fascicles by vlm · · Score: 2

      If anyone knows of definitive and comprehensive readings for other engineering fields like EE, CivilE, or ChemE, I'd like to know of them.

      Closest I've got for EE is either the classic "Art of Electronics" or an ARRL handbook...

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    2. Re:Combines all the Volume 4 fascicles by Anonymous Coward · · Score: 0

      Newton's Principia?

    3. Re:Combines all the Volume 4 fascicles by fwice · · Score: 1

      Closest I've got for EE is either the classic "Art of Electronics" or an ARRL handbook...

      Completely agree on "The Art of Electronics". I'm curious what other people mention. My go-to books as an ECE are TAOCP, TAOE, and "Introduction to Algorithms" by Rivest et. al.

      On the second tier are "The Practice of Programming" by Kernighan & Pike, "Hacker's Delight" by Warren, "The Pragmatic Programmer" by Hunt & Thomas, and a bunch of even more specific books on DSP, Stoch, and C. But these are a bit more subject specific and 'opinion' then reference a la the first tier.

    4. Re:Combines all the Volume 4 fascicles by Rostin · · Score: 1

      For chemical engineering: Perry's Chemical Engineers' Handbook.

    5. Re:Combines all the Volume 4 fascicles by metlin · · Score: 1

      For a while, Resnick & Halliday was the mecca for Physics, and Morrison & Boyd for Organic Chem. Can't really speak to other areas.

    6. Re:Combines all the Volume 4 fascicles by Anonymous Coward · · Score: 0

      You can get the pre-fascicles from here: http://cs.utsa.edu/~wagner/knuth/

    7. Re:Combines all the Volume 4 fascicles by Anonymous Coward · · Score: 0

      Encyclopedia of Optimization is pretty comprehensive, and applicable to most engineering disciplines as well as CS. If you use optimization techniques for analysis or machine learning, or have interest in those subjects then it is probably worth the $2000 or so price tag as it gives critical insight into how various techniques relate to one another and how to blend different approaches to solve a problem more efficiently.

      It is a compilation of work written by various authors so not cohesive like Knuth; however, it is similar in that it has a wide scope and covers both theory and practice in depth.

      http://www.amazon.com/gp/product/0387747583/ref=pd_lpo_k2_dp_sr_1?pf_rd_p=486539851&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=0792369327&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1PNAD8E179E4RM7K6W81

    8. Re:Combines all the Volume 4 fascicles by Henk+Poley · · Score: 1

      "Molecular Biology of the Cell" (colloquially: The Cell), is kind of like TAoP for cell biology. It's not short though. But combining all the TAoP Volume 4 Fascicles together, you are already at a large fraction of the amount of pages in The Cell. So I guess it's what you are looking for.

    9. Re:Combines all the Volume 4 fascicles by ChrisMaple · · Score: 1

      I didn't get the fascicles 'cuz I figured they'd melt if I took them out of the freezer.

      --
      Contribute to civilization: ari.aynrand.org/donate
    10. Re:Combines all the Volume 4 fascicles by Anonymous Coward · · Score: 0

      in ME we have a few books: (1) Machinery's Handbook (2) Mark's Handbook for Mechanical Engineers, and (3) Roark's Formulas for stress and strain. You can argue whether (2) and (3) are ubiquitous, but (1) goes without saying (now on the 28th edition).

    11. Re:Combines all the Volume 4 fascicles by Anonymous Coward · · Score: 0

      For Instrumentation & Control, the closest thing is Liptak's collection of articles (many self-published), called the Instrument Engineer's Handbook Vol 1-3. Considered to be The Bible of Instrumentation & Control, they are both intimidating, and excellent.

    12. Re:Combines all the Volume 4 fascicles by moller · · Score: 1

      When I was in undergrad everyone referred to Calculus - Vol I and II by Tom M. Apostol as the mathematician's bible.

  13. Re:only for a select few by fishbowl · · Score: 1

    Knuth's books didn't start making much sense until I took the first semester of Discrete Math. Basically I didn't have many of the problems for which those texts were the solution until then, but I certainly started to benefit from them long before I was into "advanced academic computing" (and continued to benefit during those analysis courses.)

    --
    -fb Everything not expressly forbidden is now mandatory.
  14. Hmm... by MrEricSir · · Score: 0

    You should like someone I went to college with.

    --
    There's no -1 for "I don't get it."
  15. Knuth volumes are approachable and practical by perpenso · · Score: 2

    They'll be a nice addition to the other pristine volumes on your "personality bookshelf" ...

    Be forewarned. Some of us who have fairly pristine looking copies today once pooled resources and read a shared copy back in the day.

    Only students of advance academic computing theory can actually glean anything from them ... Very different for our "instructables" DIY culture.

    I think it is a little more approachable than you suggest. I read it sophomore year of a computer science program, while some proofs were beyond my abilities the concepts and algorithms were not. Basically these volumes can be used as practical references to algorithms and concepts. Part of the popularity of the books is due to its making grad school level work practical, you get the fancy math with greek letters :-) and you get assembly language level implementations.

    Also I've know a few DIY'ers who read university level materials on their own initiative. YMMV.

  16. Damn it by jDeepbeep · · Score: 1

    Now my 3 volume slipcased set will look awkward and incomplete and knaw away at me every time I see additional books next to it that I know conceptually belong in the slipcase.

    --
    Reply to That ||
    1. Re:Damn it by Imagix · · Score: 1

      You could just buy the 4-book slipcase... it even comes with a bonus copy of volumes 1-4 that you can give to someone else! :)

  17. In Real Genius... by HiggsBison · · Score: 1

    In the movie Real Genius, when Jordan is guarding the hallway filled with ice, she's holding a volume of Knuth. Upside down. Sure, a bit of light reading.

    So no, it's not just for sitting on the shelf. :-)

    --
    My other car is a 1984 Nark Avenger.
    1. Re:In Real Genius... by Anonymous Coward · · Score: 0

      My mind is blown...

  18. but the real question is: by Anonymous Coward · · Score: 0

    is there anything here that isn't in wikipedia already?

    1. Re:but the real question is: by dragonquest · · Score: 1

      Knuth doesn't copy from Wikipedia, Wikipedia copies from Knuth.

      --
      "Never try to tell everything you know. It may take too short a time."
  19. easy problem is easy by marcello_dl · · Score: 1

    SEND + MORE = MONEY
    0001 + 0001 = 00010

    The Art Of Cheating, Problem?

    --
    ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    1. Re:easy problem is easy by kruhft · · Score: 2

      You set E to both 0 and 1.

    2. Re:easy problem is easy by Matthew+Weigel · · Score: 1

      So E represents 0 and/or 1?

      --
      --Matthew
    3. Re:easy problem is easy by MBCook · · Score: 1

      It's a quantum E.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    4. Re:easy problem is easy by Whatsisname · · Score: 2

      More like the Art of Failing, in your case.

    5. Re:easy problem is easy by reiisi · · Score: 1

      I think he thought those were three variable names. Or was joking around like they were.

      --
      Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
    6. Re:easy problem is easy by marcello_dl · · Score: 1

      no no, i forgot about the first E :)

      --
      ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    7. Re:easy problem is easy by marcello_dl · · Score: 1

      LOL ok, let's try again

      SEND + MORE = MONEY
      0000 + 0000 = 00000

      --
      ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    8. Re:easy problem is easy by Anonymous Coward · · Score: 0

      My dick is failing in your ass, motherfucker

  20. Have you finished learning the previous volumes? by billstewart · · Score: 1

    As George R.R. Martin said to fans wanting to know when the next volume of "A Game of Thrones" was coming out, "I'm not your bitch."

    Have you worked all the problems in the previous volumes yet, or just the easy ones?

    Yeah, ok, me neither :-)

    Actually, I'd probably have gotten through much more of the first three volumes if Knuth's coding style wasn't so horrible. There's MIX, which was the ugliest baroque botch of an assembler language out there when he could have taught the same lessons with a simple clean assembler language, and pseudocode, which tended to be ugly spaghetti code that was much harder to follow than either Algol (which had been the CACM standard language for publishing algorithms in for a decade or so) or top-down-structured pseudocode. On the other hand, the math parts were brilliant and clear, and the code did represent them adequately even though it wasn't very readable.

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  21. Marking off for spelling and typography by billstewart · · Score: 1

    In a computer course? You betcha! If you're lucky, the compiler will find spelling errors and typos for you, and if you're not, it'll let them through to become runtime errors. When I was in college, we used the Cornell version of the PL/I compiler that auto-corrected mistakes, sometimes even correctly. (Since we were using punchcards, even having it correct them badly was helpful, because it would let more of your program run so you usually find one or two more bugs if you had any.)

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
    1. Re:Marking off for spelling and typography by Rene+S.+Hollan · · Score: 1

      Grad course. The papers were entirely theoretical and academic. Things like algorithm complexity and stuff like that.

      --
      In Liberty, Rene
  22. Programming by Peter656 · · Score: 0

    I have a 10 year old son who wants to learn programming. Any ideas?

    1. Re:Programming by Rebelgecko · · Score: 1

      Well, this is a book review for Volume 4 (well, the first part of volume 4) of Donald Knuth's series. I think you'd be better off starting him at volume one.

      --
      CATS/Diebold '08- All your vote are belong to us!
  23. Cookbook? by Major+Variola+(ret) · · Score: 0

    I await his ten thousand page book on cooking...

  24. Partition Numbers in the News by lee1 · · Score: 3, Interesting

    A stunning result probably too recent to have made it in to the book under review: we now have a closed-form formula for the partition numbers.

  25. Weight training for the mind by Nefarious+Wheel · · Score: 1

    I think Knuth would agree that no work is ever perfect

    Which doesn't harm it in the slightest. Bench pressing a barbell will give you the desired effect irrespective of whether you're a half centimetre off at extension. (The metaphor holds -- reading Knuth is weight training for the mind.)

    And SEND+MORE=MONEY isn't quite right, it's off by one. SEND+MORE=MONEY-A would work.

    --
    Do not mock my vision of impractical footwear
    1. Re:Weight training for the mind by Anonymous Coward · · Score: 0

      Umm.. I assure you that SEND+MORE=MONEY has a solution (unique).... Without spoiling it completely M=1.

      Work on your mental weight training a tad bit more.

    2. Re:Weight training for the mind by Nefarious+Wheel · · Score: 1
      (removes a small disk from each ear) I should have written "+A". (sigh) I should never have signed that...

      What I did was to assign a simple sequence of A=1,B=2...Z=26 and sum the indices.

      I *want* that book...

      --
      Do not mock my vision of impractical footwear
    3. Re:Weight training for the mind by Permutation+Citizen · · Score: 1

      Would you mind to read the question again ?

  26. Read, learn and move on by Anonymous Coward · · Score: 0

    If you love this stuff, then read and learn. You will move on to more interesting work, because it will just become inevitable for you.

    I waited far too long to follow my dreams, but I've made several jumps, from systems administration, to development, to technical leadership. I now get to (occasionally) design interesting things involving advanced algorithms, sometimes at the cutting edge of research. I've even had occasion to reference the Art of Computer Programming (but mostly it still sits on my shelf looking cool!)

  27. Re:only for a select few by billstewart · · Score: 3, Insightful

    I never could get more than 10-20 pages into Gravity's Rainbow. And you left out A Brief History of Time.

    I forget whether the "advanced academic computing theory" course I first used Knuth in was "CS100" or "CS201", probably the latter. But that was 30+ years ago, and kids these days get to college having been exposed to a bit more than BASIC in high school. And self-taught programmers these days probably don't bother with assembler language unless they're trying to automate toasters (so the "instructables" DIY crowd) or write viruses.

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  28. While Knuth may be the authority on algorithms, by Yxven · · Score: 1

    is he the best teacher?

    Put another way, if a motivated student wanted to become a top-notch programmer and cared only about his knowledge and not the bragging rights of being able to read Knuth's books to completion, would you still recommend this series or is there another resource that you would like to share that you think explains the concepts better?

    Personally, whenever I pick up one of these books, I get turned off due to having to learn a trivial programming language just to understand the examples. (Not because I think learning it would be difficult but because it feels inefficient. I wouldn't be interested in computer science if efficiency wasn't a main motivation in my life.)

  29. Fix the article title by Anonymous Coward · · Score: 0

    please

  30. Re:Have you finished learning the previous volumes by errandum · · Score: 1

    No.Neil Gaiman said that GRRM is not your bitch :)

    Kuth's books are awesome, too bad he'll most likely die before we get to read all the brilliant things he has yet to write. :(

  31. Knuth on the Bible by benjto · · Score: 4, Interesting

    I respect Knuth for his stand that a man of such technical sophistication does not have to be at odds with faith. In fact, he wrote a pictorial Bible study:

    http://www.amazon.com/3-16-Bible-Texts-Illuminated/dp/0895792524

    Knuth as quoted from a reviewer:

    "it's tragic that scientific advances have caused many people to imagine that they know it all, and that God is irrelevant or nonexistent. The fact is that everything we learn reveals more things that we do not understand... Reverence for God comes naturally if we are honest about how little we know."

    1. Re:Knuth on the Bible by ChrisMaple · · Score: 2, Insightful

      Reverence for "God" comes from an abject failure in critical thinking on that subject.

      --
      Contribute to civilization: ari.aynrand.org/donate
    2. Re:Knuth on the Bible by Anonymous Coward · · Score: 0

      Hmm. Now I don't respect him as much anymore.

    3. Re:Knuth on the Bible by Anonymous Coward · · Score: 0

      One of the biggest proofs of the effectiveness of early age indoctrination. Hopefully the next generation of scientists won't waste their time on invented all-powerful beings and can think of sociology as a human phenomenon.

    4. Re:Knuth on the Bible by jebblue · · Score: 0

      Reverence for "God" comes from an abject failure in critical thinking on that subject.

      Ignorance is bliss; the blind find comfort in the dark.

    5. Re:Knuth on the Bible by Anonymous Coward · · Score: 0

      It's typical that moderators would reward such a pseudo-intellectual comment from a mental midget.

  32. Gray Codes by Anonymous Coward · · Score: 0

    I read in the blurb about Gray codes and only one bit changing at a time, eg: 00, 01, 11, 10, 00 (etc). Yep, its how ball mice work. If you are at 10 and suddenly you go to 11, the ball went that-a-way. If you are at 10 and then 00, the ball went the other way. A clock pulse generator, with a 50% duty cycle, and two sensors, which completely cover an entire open 'window' will generate a gray code. So one clock pulse generator with two sensors for one axis (say the x axis), and one clock pulse generator with two sensors for the other axis (say the y axis). The sensor/clock pulse generator sets are arranged at 90 degree angles. Now-a-days though, super-duper optical mice do it a bit differently. Thanks for reading, I'm here till Thursday! Try the veal!

    1. Re:Gray Codes by mikael · · Score: 1

      The first time I heard about Gray codes, was when our local computer club had a visit to an oil company. They had some old oil rig weather stations with the anenometer disassembled. Right inside the (previously) hermetically sealed weatherproof case of the weather vane was this six inch steakpunk copper wheel with a crazy zig-zag pattern. It was actually a Gray code pattern used for determining the wind direction to 10+ bit precision.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
  33. There's a bit of an in- joke in the name. by reiisi · · Score: 1

    Or were you pointing that out?

    --
    Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
  34. The order he wrote them in -- by reiisi · · Score: 1

    If you don't understand the combinatorial stuff, how do you follow calculating the order of a sort?

    --
    Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
  35. More to follow? by mfnickster · · Score: 1

    The computer science pioneer's latest book on combinatorial algorithms is just the first in an as-of-yet unknown number of parts to follow.

    The dude is 73 years old. There's a good chance we won't see any more volumes from him considering how long this one took. There was a fair amount of doubt that 4a would ever see print.

    Now if we can just get those hyperlongevity + brain mapping technologies working...

    --
    "Slow down, Cowboy! It has been 3 years, 7 months and 26 days since you last successfully posted a comment."
  36. this is good news by Anonymous Coward · · Score: 0

    I thought Barney Fife died a few years ago. Good to know he's still kicking. I like his brand of comedy.

    1. Re:this is good news by istartedi · · Score: 1

      No, no, no. You're thinking of a guy who writes books on topology, seamanship and berry farms. We're talking Knuth here.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  37. 28 years by EdwinFreed · · Score: 5, Interesting

    Back in 1983, when I was still in school, I published an article in Dr. Dobb's Journal on how to perform various binary operations efficiently. I also sent a letter to. Knuth describing one algorithm in particular: An efficient means of calculating a weighted sum of the bits in a word.

    The minute I put the letter in the mailbox I regretted bothering Knuth with such a trivial matter. I was greatly relieved when there was no response; I assumed the letter had circular-filed.

    Then about three years ago I got a phone call from someone working with Knuth. They informed me that after 25 years my letter was about to become an exercise in volume 4A, and asking how I wanted my name to appear in the index. And now the book is out, and there it is: Section 7.1.3, exercise 44.

    It goes without saying that I was delighted by what happened. But even more than that, I am in awe of the level of scholarship behind this work, where such a little thing as this algorithm was tracked for almost three decades.

    1. Re:28 years by Anonymous Coward · · Score: 0

      Back in 1983, when I was still in school, I published an article in Dr. Dobb's Journal on how to perform various binary operations efficiently. I also sent a letter to. Knuth describing one algorithm in particular: An efficient means of calculating a weighted sum of the bits in a word.

      The minute I put the letter in the mailbox I regretted bothering Knuth with such a trivial matter. I was greatly relieved when there was no response; I assumed the letter had circular-filed.

      Then about three years ago I got a phone call from someone working with Knuth. They informed me that after 25 years my letter was about to become an exercise in volume 4A, and asking how I wanted my name to appear in the index. And now the book is out, and there it is: Section 7.1.3, exercise 44.

      It goes without saying that I was delighted by what happened. But even more than that, I am in awe of the level of scholarship behind this work, where such a little thing as this algorithm was tracked for almost three decades.

      Wow. Congrats!

    2. Re:28 years by Anonymous Coward · · Score: 0

      I am sure that it is a large good news for you,it is that Swarovski supply a lot of Swarovski Crystals sale 50% off.Furthermore they are all nobby for women as a Fashion Accessories,expecially Swarovski Crystal Beads.I am waiting for you to come to our outlet store to buy some Swarovski Beads with reasonable price.

  38. Really? by EdwinFreed · · Score: 1

    I've never taken an theoretical CS class of any sort, but I read, enjoyed, and understood large chunks of Vols 1-3 back when I was a high school senior. Methinks you seriously underestimate the quality of these books and overestimate the difficulty of reading them.

  39. If anyone has Donald's ear, please ask him... by LostMyBeaver · · Score: 1

    Where's the eBook. As a matter of principal (and the fact that I don't want to buy a bigger house) I have stored away all my computer books which are available in eBook form whether I've purchased the eBook or not as I can more easily buy it then find the printed copy on my old shelves. I am looking forward to moving all my printed books to the recycling bin in the future. This is 2011, there's just no reason for printed books anymore... well except for going to the book store to find things which look interesting to download.

    Please let him know that since we know he keeps the books in Tex format, it's time for a Kindle edition.

  40. The Emperor by dugeen · · Score: 0

    These books are useless because everything is expressed in terms of Knuth's ludicrous obfuscatory pseudo-OS. And the typography makes the material look like it was last revised in 1965. Other fonts than Century Schoolbook are available.

    1. Re:The Emperor by Anonymous Coward · · Score: 0

      So you don't like the font.

      Otherwise a quick flick through my vol 1-3 revised editions reveals some very close to C syntax code fragments. And given this is basically a life's work using a concrete language would be a little pointless: Minix is better than BCPL or Fortran or whatever that would be a source of complaint now.

      Anyway, it's a detailed conceptual work and transcends language-of-the-week type pulp.