The Art of Computer Programming – a new beginning
Based on some online courses, and references on the Internet, I believe that this set of books is a good point to start studying computer science. (2018 update: I was wrong)
However, I will face a lot of difficulties: this study will not help me much in short time; I will not have opportunities to use these knowledges in applicable works until I master; the investment of time is huge but I will not get explicit return in years, I still have to work, while contributing in deep learning. Despite of all of these reasons, I also decided to do. I always question about basic principles behind technologies. I don’t want to be somebody only use someone else’s result blindly. The road ahead is long and hard, but I want to experience. The biggest benefit in short term is the fun of making my brain working in pressure, and through its limit. Nothing satisfy me more than the feeling of today I am better than yesterday, and I will not stop.
I studied algorithms at high school. When I was in college, I studied more about software engineering. At that time, I was thinking engineering is the practical part, and algorithms are old-fashioned. But after 10 years studying and working as an engineer, I also feel that I like science more.
About
This set of books is a monograph written by Donald E. Knuth. He attracted me when declaring the purpose of his work as:
Differs from that taken in most contemporary books about computer programming. I am not trying to teach the reader how to use somebody else’s software. I am concerned rather with teaching people how to write better softwares themselves.
And to deal with fast-moving computing industry, Knuth wrote:
My new goal has been to concentrate all “classic” techniques that are likely to remain important for many more decades. I am trying to emphasize concepts that are timeless.
I did not expect anything else.
How I will read
This is the first time I read The Art of Computer Programming. And surely I will read again many times. Therefore, to keep it suitable with my current level and background, make it maximum valuable for me, and make me most pleasure and joyful while reading, I decided to:
With time:
- Have time limit to everything: read a chapter, a section, do exercises.
- Determine if a section is should-read at specific time, based on what I will gain. Remember I will not read only once, and will not read exactly from begin to end.
- Following regular progress is not required.
- If a section is decided to read, read thoroughly.
With exercises:
- Don’t try to solve all the exercises.
- Don’t try to fulling understand all the deep mathematical issues.
- But it is recommended to read through and notice about their existence.
With interesting problems:
- If I choose to solve a problem, and see that it is interesting, I will write to describe its solution.
While reading this series, I have noted my experiments. You can find them at Experiments when reading The Art of Computer Programming