Teaching programming

By Murray Bourne, 28 Sep 2005

A very common complaint among computing students is that they hate programming. Say what? It is a fundamental of so many computing jobs, so there is something wrong...

Programming should not be taught via lectures and should not be assessed via written examinations. Sure, there are practical issues with this when you have large classes. However, what do you want from your graduates?

I recently came across the interesting article "A Participative Approach to Teaching Programming" by Tony Jenkins at University of Leeds. The writer wanted to change the students from passive recipients of information to active particpants in the learning process. That is, they wanted reflective practice rather than "drill and kill".

According to Race, people learn effectively by...

  • doing it
  • practive
  • trial and error
  • getting it wrong at first and learning from the mistakes

Various programming concepts were acted out as follows:

  • Arrays: Each student acts as one element of an array and needs to take appropriate action as the program proceeds. For example, all "elements" in the "array" are initialised with some value and then students need to calculate and remember their own "element value", given some programming step. Other activities could be finding maximum and minimum values of the array, sorting the array, etc.
  • Functions: Once again, students are given the role of variable, function, procedure, etc and need to act on each other.
  • Pointers and linked lists: Students play the roles of pointer, memory manager, members of linked lists, null pointer, etc. Links were made physical by the use of string.

Not surprisingly, the more abstract the concept, the more helpful these participative approaches were for the students. Most students reported that the apporach helped their understanding and enjoyment of the programming classes. From the instructors' point of view, the extra interaction was more stimulating and "worth the risk" of the feeling of a loss of control.

What a lot of us forget is that many of our students are still very much concrete thinkers. They are not able to handle difficult, abstract concepts (especially when their day is full of such concepts from many different directions). Let's use more concrete methods to help such students understand, enjoy and learn what they need to know.

Oh - and this applies to mathematics teaching as well...

Be the first to comment below.

Leave a comment

Comment Preview

HTML: You can use simple tags like <b>, <a href="...">, etc.

To enter math, you can can either:

  1. Use simple calculator-like input in the following format (surround your math in backticks, or qq on tablet or phone):
    `a^2 = sqrt(b^2 + c^2)`
    (See more on ASCIIMath syntax); or
  2. Use simple LaTeX in the following format. Surround your math with \( and \).
    \( \int g dx = \sqrt{\frac{a}{b}} \)
    (This is standard simple LaTeX.)

NOTE: You can't mix both types of math entry in your comment.

Search IntMath, blog and Forum