11

I am currently self-studying The Art of Computer Programming as an undergrad in my free time. To do all of the exercises (or even a portion of them) would be incredibly difficult and time-consuming; however, there are solutions at the back of the text. I am wondering if I would miss out on something from a pedagogical perspective if I simply look at the problem, understand what it's asking, and then read the solution and understand it?

I would hope that mastery of the content is gained through experience in the field and further study in mathematics. How strongly recommended is giving “the old college try”?

2
  • 4
    George Polya wrote something like, "in order to learn to solve problems, you must solve problems. Some of the problems in The Art of Computer Programming are, or were at the time, suitable for doctoral dissertations, but each problem has a numerical indication of difficulty. Do the easy ones and try the ones that are a stretch for you. – Bob Brown Sep 3 '20 at 14:11
  • 6
    The only way to learn to do the thing is to actually do the thing. – JeffE Sep 3 '20 at 14:13
25

Some of the exercises are very hard. That is expected. But it depends on how deep you want your learning to be. If you are happy enough with a superficial understanding, then just read the solutions.

But if you want "operational" knowledge. The knowledge of how to put all of that to use and to extend it in your work, then you need to do a lot of the exercises. Mark them off when you succeed and come back to the ones you can't do later on. Or, find someone more knowledgeable than yourself, who also understands learning, who can give you minimal hints when you get stuck.

The issue is in the way the brain works. Long term memory works not by seeing something once and having it immediately imprinted somehow, but through rewiring of the neurons through repetition, reinforcement, and feedback. If you don't do that, you won't develop a deep understanding - or even memory of what you've seen.

But, since many of them are hard, and there may still be a few research problems hidden in there, don't work until you get frustrated. But instead of giving up and reading the solution, put it aside and go on to another. Come back to the hard ones occasionally and see if you can do better.

The more you do, the more it will enable you to do others, even if it doesn't make them easy.

In some books the exercises are what give it value. If you can do them, you have some deep knowledge TAOCP is like that.

But the same is true of the books you have for your coursework in CS and in Math.

5
  • ok this makes sense—should i read the book once through and do the exercises afterwards? – Jack Sep 2 '20 at 22:56
  • 6
    Unlikely. Especially that book. A bit of reading and a bit of working is better for most people. There are (rare) exceptions. And maybe a bit of bike riding or violin playing to give yourself a break. – Buffy Sep 2 '20 at 22:58
  • I've posted a number of things here about how learning works. A good book on the subject can be found by searching this site for "Zull", the author. – Buffy Sep 2 '20 at 23:03
  • 1
    thank you so much and i will search for zull, topic is of great interest to me in the present moment – Jack Sep 2 '20 at 23:06
  • 1
    The great thing about TAOCP is that the difficulty of the problems is specified. It might not always be perfect, but it makes figuring out how much time you want to spend on trying a problem much easier. Knuth talks about that in the foreword iirc (how he once read a text where there was an open research problem among much easier problems without any notice). – Voo Sep 3 '20 at 13:10
5

Reading the problem and then reading the solution to understand it would be like going to the gym and then understanding how to lift weights by watching other people. Unless you do it yourself, you won't build any actual muscle.

Any amount of studying is better than never having picked up the book, but programming is very much a skill you have to practice. There are so many things you have to experience and fail at first hand to develop this skill.

For example, people often joke about forgetting something as simple as a semicolon at the end of their statements. The only way to ingrain that into your brain is to get that error a few hundred times in real life practice.

1
  • 1
    Nice analogy. Like "learning" to swim by watching the olympics. – Buffy Sep 3 '20 at 13:01
4

You probably have no chance to finish all the exercises in the TAOCP in your lifetime. Some of them appear to be open problems, i.e., the solutions would be publishable.

A better way would be to skim over the material, and go into the details and the depth of the parts that really interest you. Then you might find out that TAOCP is not complete, and that you'll need even more time to find the additional literature by yourself.

A titanic task, indeed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.