Shop now Shop now</arg> Shop now Shop now Learn More Shop now Shop now Learn more Shop Fire Shop Kindle Amazon Music Unlimited for Family Shop now Shop now

Your rating(Clear)Rate this item

There was a problem filtering reviews right now. Please try again later.

on 25 January 2000
The book is split into two chapters, Basic Concepts and Information Structures.
Chapter 1. Basic Concepts
Chapter 1 starts with a Section which considers what is an isn't an algorithm, and the properties that an algorithm must have. This section closes by offering a mathematical definition of a computational method, "by which the concept of algorithm can be firmly grounded in terms of mathematical set theory". This gives a hint as to what's next! The second Section of Chapter 1 provides a vigorous and intensive overview of the mathematics required for being a practitioner of computer science: induction, powers, logs, sums, products, integer functions, elementary number theory, permutations, factorials, binomial coefficients, harmonic numbers, Fibonacci numbers, generating functions, algorithm analysis and asymptotic representations. Phew! Three thousand years of mathematics are covered in a breathtaking 100-and-a-bit pages and are tested by an almost unbelievable 390 questions, all with answers! The third Section of Chapter 1 covers MIX, an artificial assembler language. My view is that understanding assembler is critical, not optional! To call yourself a computer scientist, or even software engineer, without having at least a working understanding of what your software is actually instructing the processor to do is akin to calling yourself a car mechanic when you don't know how the engine or transmission work! Those few ignorant "reviewers" who gripe about MIX prove that they haven't actually read the book, but wish only to associate their names with someone far more worthy than themselves because as Knuth himself admits: "... MIX is quite obsolete [and will] be replaced ... by a new machine called MMIX ... [which is] a ... reduced instruction set computer" [p124]. He goes on to admit that this will take "a long time". Being able to work with MIX, however, will prepare you to start working with many real-world commercial processors. Finally, a completely artificial construct such as MIX has far more value than creating an artificial high level language as one other reviewer has suggested. Learning the syntax and keywords for any non-trivial high level language, handling control flow, arithmetic, storage, conversion and IO, would take a much larger section than the 40-odd pages that Knuth allocates (even my 1978 edition of Kernigan and Ritchie's "C Programming Language" is over 200 pages!). MIX's application to investigating permutations is also explored in this section. The last Section of Chapter 1 looks at fundamental programming techniques : subroutines, coroutines, interpreters and IO, closing with a short history and bibliography of these techniques.
Chapter 2. Information Structures
Section 1 of Chapter 2 is a short introduction illustrating a linked list, using a hand of cards. Section 2 of Chapter 2 covers: stacks, queues, deques (double-ended queues), sequential allocation ("pushing" items on a stack), linked allocation, circular lists, doubly linked lists, arrays and orthogonal lists (rows and columns). Section 3 of Chapter 2 describes binary and non-binary trees, mathematical properties of trees (free trees, oriented trees and calculation of tree path length), and ends with a description of linked lists and garbage collection. No mention of red-black trees, though. Section 4 of Chapter 2 describes multilinked (nested) structures. Section 5 of Chapter 2 describes dynamic storage allocation and some algorithms for allocation/reallocation. Chapter 2 closes with a history and bibliography of the information structures and algorithms which it describes.
Following the Answers to the Exercises, there are two Appendices, one presenting a table of fundamental constants and numbers, the other offering an index of notations.
Throughout this book, Knuth explains the mathematics extensively, offering not just usage of the algorithms and structures which he describes, but proofs of correctness, investigations of efficiency of speed vs space, references to further material on every page and more than 900 questions (and answers). To paraphrase Gates' quote on the back "You should definitely send me a resumé if you can answer all the questions!"
0Comment| 15 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 26 November 1999
I thought I knew everything there was to know about linked lists until I read this book. How wrong I was. The same could be said for just about any other topic touched on by Knuth.
The main drawback is that if you want to work through the example questions, then you need to learn MIX and get your hands on a MIX simulator. I've nothing against learning assembler, but this is 1960s assembler, not something "nice" like 68K.
Knuth is working on an updated version, but it'll praobably be years before it's ready. I wouldn't let that put me off buying these books though.
Paul Floyd
0Comment| 8 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 15 August 1999
I read this book when I was a sophomore in high school and I thought it was excellent. Prior to reading the book, I had wanted for a long time to write a program to evaluate standard mathematical expressions. I had even tried once before, but I didn't know enough about what I was doing to be really successful. Somewhere in the second chapter in a discussion of lists, doubly-linked-lists, and binary trees, a good solution came to me, and I implemented it right after I finished reading the book. It worked very well. This book helped me to accomplish the major goal-project of my computer programming career so far, and I definately think it is worth reading for anyone wanting a really advanced understanding of fundamental algorithms. Now I know to many advanced means total [over]use of fully encapsulated C++ objects, which this book doesn't have, but this book gives an advanced understanding, which is infinitely more valuable than classes. If you understand OOP and you understand this book, you should be able to combine the two just fine. Lastly, I'd like to comment on the use of MIX. I read almost none of the MIX assembly code when I read this book. The little I looked at I looked at because I wanted to see what assembly was like in the 60's. But you can understand everything he's trying to say by his explanations of the algorithms, the assembly code is only for clarification, and you don't have to read it. I also believe that everyone who's been using fully encapsulated classes for their entire programming career should learn an assembly language sometime. Just like this book, it will teach you how to think.
0Comment| 3 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 10 November 1997
Anyone who aspires to be a transcendent programmer must own (and use) Knuth. I've used my 20 year old TAOCP vol. 1 so many times over the years that it lays flat at any page.
The updated volume 1 is more of the same - a classic revisited, revamped, restored. It is odd to handle something so familiar, yet so crisp.
Those who dislike MIX will be unimpressed - to them, I say that you don't learn by doing the same vanilla thing time and again, but rather by wrestling with unfamiliar concepts and architectures. Many times my fellow programmers will find themselves roadblocked in an unfamiliar situation, while I often can see the unobvious solution - I attribute this ability to a wide experience with unconventional solutions, including extensive study of Knuth's TAOCP.
If you're serious about your programming abilities, you *must* own (and study) this book! Frankly, if computer science were taught as an apprenticeship, this would be the journeyman's manual. I've required the many programmers I've trained over the years to own and study TAOCP, and they've all come to appreciate it's layered approach to problems - you can read Knuth at many levels, from algorithm reference to meta-analysis of an entire class of problems.
If there is a Koran, Bible, or Tao of Computer Science, this is it. The only thing close is Aho's "Dragon Book," and it's specific to compilers.
0Comment| 2 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 24 October 1997
Knuth set out to write a series of books with timeless information for programmers. In that he has succeeded. Certainly, some elements of his book are dated, such as the MIX architecure, and he'll be the first to admit it. His pages on TAOCP at [...] contains valuable, up to date information pertaining to the series. He sums up his reason for using assembily language quite reasonably. You can read it at: [...] . And I must say that if your debugging has never taken you into assembily code, you are a luckier programmer than I. Finally, having just completed my BS in Computer Science, I must say that Knuth teaches the importaint concepts in a much clearer, easier to understand manner than we were taught them (and I had some excellent profs). Why TAOCP wasn't used as a text in many of my courses aludes me. This is a must read for any serious programmer.
0Comment| One person found this helpful. Was this review helpful to you?YesNoReport abuse
on 1 January 1999
When I read Knuth #1, I was an English Major with a certificate in COBOL programming. Alot of what he said made no sense; after struggling for 3 weeks I began to understand. I used Knuth to learn QA, testing techniques, structured analysis; Knuth was my Harvard & Yale of programming knowledge.
I read the poor reviews of Knuth here & I think: THEY must be lazy, really lazy. If you want to work hard & have NO Background in CS other than a programming language you really know YOU can master this book. Yeah the math & true CS graduate can read this easier than me, but can they owe a lifetime of programming methodology to it?
I owe everything to Knuth; I love the man.
0Comment| One person found this helpful. Was this review helpful to you?YesNoReport abuse
on 6 July 1999
This book is still a classic, and the reference for anyone who wants to write efficient code. Poor comments bellow come from people who don't actually understand computer science, and don't have a clue on what an algorithm really is. The use of MIX assembly could be substituted by C, but it's still valid even today.
0Comment| One person found this helpful. Was this review helpful to you?YesNoReport abuse
on 29 November 1997
Knuth has finally updated the three completed volumes ofhis exceptional "The Art of Computer Programming" series,correcting errors and updating the topics to includestate-of-the-art algorithms while retaining the basicstrengths and weaknesses of the books. This comes as arelief to many old-time programmers who, watching Knuth's20-year diversion in pursuit of typographic perfection, hadbecome convinced he was NEVER going to get around tocompleting the remaining four volumes of the series.
The series's strength is its exhaustive survey and deepscientific analysis of the many algorithms applicable tothe areas of computer science covered. No other book orseries comes close in providing the reader with the toolsto understand and develop algorithms and to choose amongthe alternatives available when faced with a programmingchallenge requiring an algorithmic solution.
Knuth's primary weapon for analysis is mathematics and hedoesn't hesitate in beating algorithms to death with abarrage of equations; in fact, on a few pages a reader canfind up to thirty summation signs. So a warning is inorder: readers with math anxiety are likely to be reducedto a state of insensate palpitation. Yet the books containvery little calculus or other higher mathematics and thus acollege sophomore should be able to follow the discussion.Also, the reader can skip all the proofs on first readingand simply trust that Knuth is telling the truth.
Surprisingly, the series contains much background materialon the history of computer science and quite a bit of wryhumor. It is about as lively as can be expected of a seriesso deeply technical.
The series's greatest weakness is the MIX assemblylanguage, which Knuth uses to illustrate algorithms, almostalways after first describing them in English. Althoughassembly language is necessary in order to maintain Knuth'sdeconstructionist approach, MIX is deeply rooted in the1960s concept of a computer, with no stack orgeneral-purpose registers. Worse, a reader returning to thebook after letting it lie fallow will find the MIXinstruction mnemonics are needlessly cryptic (What do"ENNX" and "JBUS" mean!?). Perhaps Knuth will update theinstruction set or improve the mnemonics in a futureedition.
To sum up, I'd like to repeat some advice that was given tome in 1974 and is still true today: "If you want to be aprogramming technician, read about the latest programmingfad. If you want to be a computer scientist, read Knuth."
-- Glenn Fawcett
0Comment|Was this review helpful to you?YesNoReport abuse
on 6 October 1997
As a `Technical Informatics' student, I had heard of the three (so far) volumes of Knuth. When I found out that new editions of the books were being published, I asked a teacher if it could be of any use to me. He said it was pretty heavy on the math, and if you don't have a feeling for math, the books are pretty tough. Now, I am not very good at mathematics, but when I went to a localbookstore where the new edition of volume 1 laid in stacks on a `just arrived' table, I picked up a copy and started reading somewhere in chapter 2. Suddenly a member of the bookstore's staff tapped me on the shoulder and asked me if I tried to read the whole thing right there. When I asked why, she told me I had been standing there for more than half an hour, completely absorbed by the book. Right there I concluded my teacher was wrong, and that if you've been programming for some time, this book can still teach you some very valuable lessons, even about `trivial' things like lists and stacks. When the other two volumes are published, they'll be right beside my copy of volume 1. A very impressive sight for friends who want to know what these beautifully bound books are about. In short, if you're a programmer, you get a copy of all the volumes of The Art of Computer Programming. I think it's a good step in becoming a computer programming artist.
0Comment|Was this review helpful to you?YesNoReport abuse
on 27 May 1998
While weaker minds may abhor the assembly code, this book (and series) contains the most comprehensive discussion of computer topics I've seen. Knuth gives both an english-language representation of the algorithm and an assembly implementation. For those who want "pseudocode", it's there, if you can read english. However, the assembly implementation allows Knuth to discuss real-world implementation issues.
This book is not easy, and probably not good for a BS CS candidate (or graduate) unless they're very dedicated. That said, the best, most experienced, and most capable computer scientists I know have Knuth and swear by it.
In short, if you'd like to learn far more than a Bachelor's in CS will even touch on, buy this book. (And the rest of the series... how many people these days even know what a trie is? And no, that's not a spelling mistake.)
0Comment|Was this review helpful to you?YesNoReport abuse

Sponsored Links

  (What is this?)