Better way to teach beginning programming classes

  • code
  • education

As a programmer myself, I find it hard to believe that high school students would find programming boring. What?!! "Computing is one of the most exciting things that human mind can do", how could it be boring?

Today my friend sent me this link, which kind of explains why.

Here's a template for a first programming class: Use a book with a language name in the title. Start with the very basics like formatted output and simple math. Track through more language features with each chapter and assignment, until at the end of the semester everyone is working with overladed operators and templates and writing their own iterators and knows all the keywords related to exception handling.

If you're a student in a class like this, you have my sympathy, because it's a terrible way to be introduced to programming.

The author went on to say:

Once you've learned a small subset of a language like Python--variables, functions, control flow, arrays, and dictionaries--then features are no longer the issue. Sure, you won't know all the software engineery stuff like exceptions and micromanagement of variable and function scopes, but it's more important to learn how to turn thoughts into code before there's any mention of engineering.

I'd even go so far as to say that most OOP is irrelevant at this point, too.

My real template for a first programming class is this: Teach the bare minimum of language features required to do interesting things. Stop. Spend the rest of the semester working on short assignments that introduce students to problem solving and an appreciation for the usefulness of knowing how to write code.

I believe this was the exactly how Little Schemer teaches programming.  That is, to treat learning programming as a training for problem solving skills instead of a way to memorize syntax.  I thought the problem has been solved when the book was published back in December, 1995 but apparently it has become almost too old to matter that much anymore.