1B. Course Philosophy: Do It Yourself

This is primarily a course on problem solving, algorithms and data structures. You cannot learn problem solving by simply using solutions produced by other people. Accordingly, this is a do-it-yourself course. You will need to work things out on your own.

Some courses concentrate on how to use libraries containing a lot of prewritten stuff. This is not one of those courses. For beginners, libraries can be more a crutch than a tool. If you learn to program by relying on libraries, you find yourself at a loss for how to proceed if a library does not provide exactly what you need.

After learning how to do things yourself, it is easy to learn how to use a library where someone else has done some of the work for you.

Here is a true anecdote. I once had a student doing some programming work for me. I asked him to write a small module to carry out a clearly specified task. A week later, he came back to me and said that he had scoured the library, and could not find a tool that performed that task. He suggested that we wait for the next release of the library, since that release might have the tool that I asked him to create. Really! I sent him away to do it himself.