Thoughts about this Course and How to Learn
Programming
This is the first time I've taught computer programming as a course.
As such, I'm less certain than usual how the class will go. For the
course to be a success, honest feedback will be especially important.
Here are some initial general thoughts about how to go about learning
programming and some specific thoughts about the course.
- The only way to learn programming is to do it. A lot. I suppose
that this is true about learning just about anything. But it seems
somehow more true for programming than some other areas.
- I have never taken a programming class. I learned C++ mostly on
my own, but had help from some friends and colleagues who are very
good programmers. I do not consider myself to be an expert
programmer, although I am certainly not a beginner, either.
- I will use class time to explain general concepts and some
particularly tricky or subtle aspects of coding. I will follow the
textbook fairly closely. However, my aim will be to complement the
text and not duplicate it. It will be essential for you to spend a
fair amount of time thoughtfully reading the book. I think the book
is well written and is almost always quite clear. There are
definitely some sections that you can skim, but I suspect that you'll
want to read most of it.
- This class likely will be a lot of work at time. It is difficult
to estimate how long it will take you to complete a programming
exercise. This is the nature of programming. Sometimes a program
compiles on the first try. Other times it may take days. Learning to
struggle and cope with this is part of the course.
- Particularly at first, you won't understand everything. I think
the best thing to do is to blast ahead anyway. When learning a spoken
language, it is inevitable that you'll have to use grammatical
constructions that at first you don't understand. Only after you've
learned quite a few things does the logic of the language come into
view. I think learning a programming language is similar. Don't feel
like you have to be perfectly comfortable with one chapter before
going on to the next.
- If you're not keen on C++, don't worry. Once you know one
language it is relatively easy to pick up an additional language.
(Learning to program isn't the same thing as learning a particular
language.)
- Some of the programming exercises might be a little tedious. It
will be a while before you'll be able to code up anything really
interesting or new. I don't think there is any way around this.
However, by the end of the course you should be able to write your
own, reasonably complex original programs. You should have a fairly
large number of working programs that you can use as templates and
starting points for other programs that you might want to write in the
future.
- I hope after this class many of you will use programming as part
of your academic or non-academic work.
- Programming is an art as much as a science. Effective programming
involves creativity and originality; it is not simply a technical
skill.
- Programming is also a "state of mind." To program effectively
requires patience, focus, and motivation. This state of mind has been
likened to that which is gained in practicing certain sorts of martial
arts.
Others' thoughts
Here are some essays on how to learn programming, how to learn to
be a hacker, and generally how to learn. I don't agree with all
recommendations, but these make quite interesting reading.
- Undergraduation by
Paul
Graham. I think this is an excellent essay. Highly recommended.
- Teach
yourself programming in ten years by Peter Norvig, director of
research at Google.
- How to become a
hacker, by Eric
Raymond.
- How to
be a programmer by Robert L. Read.
- Advice
for computer science college students by Joel Spolsky