Incremental Java
Teaching Programming

I've been teaching programming for several years. I believe the key to teaching programming is learning to listen to students. If you spend the time to listen to what confuses students and spend time writing down notes, you begin to see where students have problems.

Understanding where students have problems is the first step to trying to solve their problems. However, it isn't enough.

You also have to think about how to get them to where they're going given what they already know. In essence, your job is to place a road between where they are now and where you want them to be.

This can be quite challenging depending on how bright and how hard working the student is.

Years of teaching have shown that people learn at different rates, and learn in different ways. This makes teaching as we know it, a nearly impossible task. What works well for one student may not work well for another. Yet, we don't have the kind of time to customize lectures that work well for each student.

Still, there are some general guidelines for trying to teach programming.

There's plenty of books that try to teach students to write programs as soon as possible. There's some sense in this. Students get the rewarding feeling that something they wrote it working. I find programming challenging enough to teach that I want to wait for a few lectures before writing a program.

I wrote some Java notes where programming was taught a little late. While I kind of liked the way the notes were written, there was something vaguely dissatisfying about it.

First, I tend to write very lengthy notes. This usually works fine in a book, but these days you see many "dummies" books that try to get a simple point across in a page or two.

While I write closer to the way textbooks are written, I'm beginning to believe that this is the right way to teach programming. Teach one small idea at a time, and build on that.

I also want to figure out how to write programs sooner.

So to that end, I'll come with a series of lessons. Each lesson teaches a small idea, and tries to reinforce it. But we must build up on those ideas, to get to the harder concepts.

Enjoy!