Sunday, November 05, 2006

Who reads Knuth?

It all started on the day when professor Anal Acharya was teaching us Quicksort Algorithm in our class. He mentioned to us that a person named D.E.Knuth has written an entire book on Sorting and Searching! Initially I could not believe that there could be an entire book on this subject. Till then my idea of Sorting and Searching was limited to Kruse and Tanenbaum books on Data Structures. Each of them had devoted around 50 pages on this topic. Prof. AA also informed us that it was the most authoritative book on the subject till date and a complete reading of that was enough to make a person expert in this field of work. He added that it was quite beyond us (and even beyond him) to study the book. The next time I went to buy my books I tracked down a copy of Knuth. It was called "The Art of Computer Programming – Vol.I, Fundamental Algorithms". I found out that Knuth had written a series of 3 books and Sorting and Searching was the 3rd book on the series. I was handed out Vol.3 of Knuth. I browsed the book and at first look it seemed quite intimidating. Filled with math formulas and Assembly language code, the book has a property to intimidate you in no time. I am a bookworm and I just love to collect books. So although the books costed me a lot, I managed to buy a full set of "The Art of Computer Programming, by D.E.Knuth". The first thing that I did after returning to home was to open the book on Sorting and Searching and look for Quicksort, which happened to be my favourite sorting algorithm at that time. Needless to say that I was feeling completely lost in the book. Nothing beyond the initial introduction seemed to make sense. So I started from the very first volume of the book and was astonished to find out that Knuth has given a flowchart on how to proceed through the books! With my exams knocking at the door I did not have much time to waste, so I left the books for the time being. After exams I sat with the books and this time started from the beginning of the book. It was a disastrous experience to say the least. I understood almost nothing. The text usually was difficult to understand and the mathematical formulae were simply beyond me. I seeked help from people who have done post graduate in Computer Science and all of them dissuaded me to continue. They told me that the book was too difficult and even they did not venture into it. My professors echoed the same opinion when I asked them. All this had a bad effect on me and I left the books as ornaments in my bookshelf. After completing my BSc in Computer Science I have joined Rajabazar Science College under the Calcutta University for my post graduation studies. Here the name of the book again came up during a class by Prof.SSS. He was teaching the concept of Algorithms and his lecture notes were based on the book by Knuth. This time seeing a professor following this book gave me a lot of confidence. So I brought out the books which were gathering dust during the last 6 months. I read up the first chapter of Vol.I - Fundamental Algorithms. This time it was a pleasant surprise. I understood most of it! and could even work out most of the problems. It was difficult no doubt, but was achievable nonetheless. I was puzzled at this. It was not as difficult as my seniors or professors had stated! I concluded that all of them had either never read the book and had actually transferred some opinions on the book to me. Or it might have been the case that they like my first attempt tried to read the book from anywhere other than the beginning and had failed miserably. The book was indeed hard to understand and the mathematical proofs do take a lot of time to understand, but at the end of it if one tries patiently the book is definitely readable; and the knowledge gained is definitely worth all this trouble. My journey with Knuth has not ended, in fact it has just began and I don't want to draw any conclusions about the book. But one thing I've learnt for sure is that don't go by what others say blindly. We should always apply our reasoning to arrive at an opinion and not be guided totally by other's opinions. Please post your own experiences with Knuth. If through this article I have managed to convince even one person to read Knuth's Art of Computer Programming, I'll consider my efforts to be a success.

3 comments:

  1. Good old Donald Knuth.
    Can't believe you bought the books though!
    They are not really affordable.
    I read the post with interest as it almost mirrors my experience - I approve of the idea of collating all known knowledge in one area of a discipline in one tome; hence I always liked the idea of the Knuth books. However I deplored his choice of invented structured language for the examples. What sillyness.
    It prevented my devouring of the knowledge & writing more informed programs when I developed my first GUI for DOS aged just 17.

    Good on you for sticking with it though & I am certain you will achieve a solid grounding in the principles of the discipline if you see it through to conclusion.
    Plus you have to get value from your purchase now. Also it is a great habit to see through one's journeys having committed with the 1st step no matter how arduous & unappealing at first the next step & those that follow soon, may be.

    ReplyDelete
  2. your story is in fact impressing to me. what things happen to you make me
    remind myself people always selfconciousness to orther so we need
    the true teacher who can open any knowledge door i 'm finding, and rise up my think, he infact my teacher.
    YOu are a happy man becase u have find ur true teache.
    Good luck!

    ReplyDelete
  3. If you read the books, starting with book one, and if you do all the exercises, the books are not difficult and in fact a great pleasure.

    The mathematics in the books is not advanced and calculus or other advanced mathematics is not needed to clearly understand it.

    A programmer who has read and understood Knuth is a better programmer than one who has not.

    One of my proudest possessions is a check from Donald Knuth for finding a mistake in his work (of course, it was a trivial thing). His willingness to do that shows his great concern for correctness that is the hallmark of excellence in this line of work.

    IMO-YMMV.

    ReplyDelete

I'd love to hear from you !