views:

354

answers:

4

I want to read Art of Computer Programming by Donald Knuth for various personal and professional reasons. So when I walk into the book store I see a couple volumes a couple versions and a whole bunch of Fascicles/sub volumes. eventually these Fascicles should be a concise volume and then further editions and versions will ensue. If I will only have time in my natural(ey busy) lifespan to go through these once and it does not necessarily need to be now, what is the most efficient way to go though these, optimizing for time first, then bredth of knowledge.

+1  A: 

Don't optimize your path of learning. You should just pick up any of the books and see if you can work through it. However, I would say if you're looking for a way to optimize your path, you won't be very interested in the books. These books are for the sole pursuit of learning theory of computer science.

dasickis
I'm inclined to disagree somewhat. I love computer science, but it's a huge field. Odds are there won't be enough time in my life for my to fully study everything that interests me, so I'll have to make some compromises. I don't see anything wrong with doing some planning to try and maximize my time's utility. "Believe in the resolute urgency of now," and all that.
bcat
True, I didn't interpret that from your question. I apologize for the brash comment. It seemed like your comment was akin to "Can I understand TAOCP in 24 hours from idiots teaching dummies?" Yet, it seems you're trying to understand what material you need to understand quickly.
dasickis
Just to clarify, this isn't my question. I just edited the tags. :)
bcat
+2  A: 

Edit: For my initial answer, I had key-ed on the latter part of the question, missing the issue of versions / facsimile etc. While the following "reading plan" is valid, do read Alex Martelli's answer, which addresses the issue of the outdated MIX virtual processor along with [as usual ;-)] plenty of pertinent info. +1 from me, let this be the top response (unless maybe Mr Knuth would give his two cents... or his $2.56)

A good place to start is with Volume 1

and I don't say that in jest... Here is why:

  • As you noted, the complete works is quite extensive, better get started sooner than later
  • Volume 1 cover the Fundamental algorithms and data structures
    It also introduce mathematical concepts and notation, as well as the algorithm notation and language used throughout the other books.
  • After reading Book1, one can start reading TAOCP in no particular order. For example if you have particular needs with Sorting, Vol 3 (or indeed parts thereof) would be relevant.
  • Volume 1 is relatively stable. Depending on the edition you have, including the latest which I believe is 3rd ed. (1997), you can check the web site for addendums and corrections, but on the whole little has changed.

Another more general consideration when reading Donald Knuth: don't be in a rush! Take the time for the exercises, be sure to understand the material, because it's impressive how in a few pages, Don Knuth can pack so much info! The thing is: most of the content of TAOCP is fundamental in nature and unlike many computer books which get outdated by coffee break time, most of this will still be quite relevant throughout one's career.

mjv
I'd strongly disagree. Volume 1 is a terrible place for most people to start, as it has the heaviest math, and is the farthest remote from people's expectations.It's a much better idea to start with one of the later volumes, and return to Volume 1 for reference.
Michael Dorfman
+4  A: 

The latest version (the one in fascicles) has the strong advantage of using a new and improved "pseudo-computer", MMIX, for all the assembly / machine code in it -- essentially a MIPS - ish CPU with a nice and regular architecture, while the old "MIX" pseudo-processor used in previous editions was a somewhat peculiar cross-breed whose very architectural concepts are hopelessly date. As Knuth puts it in the URL I gave:

And ouch, the standard subroutine calling convention of MIX is irrevocably based on self-modifying instructions! Decimal arithmetic and self-modifying code were popular in 1962, but they sure have disappeared quickly as machines have gotten bigger and faster. A completely new design is called for, based on the principles of RISC architecture as expounded for example in Computer Architecture by Hennessy and Patterson.

So I suggest starting with the fascicles, from the start (indeed from the pseudo-computer and its assembly code, explained in the first fascicle which you can download). After that, you need volume 1, third edition (which, alas, uses the old MIX and MIXAL), supplemented by the downloadable material mentioned at the URL I already gave (the errata are also all linked from that URL). Books 2 and 3 need not come right after 1 (depending on your research interests, I might suggest proceeding from Book 1, to Book 4's fascicles).

Alex Martelli
+1  A: 

There's a lot of needless confusion here.

There are not multiple "versions" of TAOCP currently available for sale.

Volumes 1, 2 and 3 are published in hardcover. There is a paperback update (Volume 1 Fascicle 1) for some portions of Volume 1.

In addition, there 5 fascicles for Volume 4 (Fasicles 0-4), which will later be collected into a hardcover volume.

I would strongly recommend that you begin with Volume 4 Fascicle 0, and see if you are interested. If you are, you can either continue with the volume 4 fascicles, or you can read one of the earlier volumes, and wait for Volume 4A to arrive in hardcover in the coming years.

However: you're starting things off on the wrong foot if you think you "only have time to go through these volumes once". That's not the right way to read them, and you're unlikely to get much satisfaction if you try.

Michael Dorfman