Programming Pedagogy

I was at the local authority meeting of Computing teachers last week. One of the topics discussed was how we taught computer programming to our pupils. It was such a great discussion I thought I’d share some of the ideas and my own interpretations or opinions on the subject.

With six years of software engineer experience prior to becoming a teacher I feel I am an adequate code monkey. However although I might be able to see patterns, pseudocode and data flow tables from a cursory glance at a problem specification I know that my pupils can struggle to attain the problem solving skills required. Common problems are the mispelling of variable or procedure names, not ending loops or conditional statements, and typing code into Visual Basic 5 (our language of limited choice) without setting up the event definitions first. In short, there is a issue with my pupils’ programming literacy.

In my five years of teaching Higher Computing I have been the second pair of eyes in the classroom, helping pupils debug their programs by pointing out their spelling mistakes and decrying their inability to read a meaningful error message.

Meaningful error message, no really it is!

At the meeting one possible solution was suggested. One so simple it made my jaw drop. Pupils program in pairs, being the lead programmer and second pair of eyes alternatively. I’ll admit I was a little embarrassed that I’d never tried this strategy before but feel that this might improve error detection if not programming procedure if the pairs are selected carefully.

Other strategies suggested included, in my opinion, the outdated practice of desk checking their program before typing it into Visual Basic. Every. Single. Time. I feel that this method goes against the grain of event-driven programming languages like Visual Basic which are meant to be used for rapid application development. Objects are dragged in from the toolbox, code is quickly constructed and linked, module libraries are knitted into the main program and quickly great things can be happening. In the past few years I’ve taught my Higher Computing pupils how to make MP3 player software, cave-flying games and a homage to Horrace Goes Ski-ing in double-period lessons. These lessons were fun and boosted the pupils’ confidence – where is the fun in desk checking your code for these applications?

Desk Checking... Yup this one's fine...
A few years  ago a pupil joined my S4 class in the final two terms. He had completed almost all of his practical evidence for Standard Grade Computing Studies… except for programming. As our S3/4 course had changed to Int 2 Info Systems there was no programming in the plan and little time to set aside to teach this one pupil how to navigate their way through Visual Basic. I found some videos on the Internet which introduced the concepts and then adapted program task sheets to allow the pupil to gradually code with less and less support. He taught himself enough to gain a credit grade, but although video lessons are great in a crisis there was little chance for him to gain one-to-one feedback on the issues he was having with his own programs.
So I’m going to try paired programming with a small group of Higher and Intermediate 2 Computing pupils next term and see if their problem solving skills (and reliance on the eyesight of their teacher) make a change for the better. Anyone else in?

Ian

3 thoughts on “Programming Pedagogy

  1. Hi – I have a new MSc student project in which the student is interested in finding ways of giving fast feedback to pupils when they try short programming exercises. After musing upon how we learned maths at school (lots and lots of examples) we’re also interested in how much practice teachers feel is required to “get” a particular programming point. Could you point us towards any resources computing teachers might typically use to teach programming? Thank

  2. Hi, stumbled across you via the Twitterverse and had a quick poke around your blog. Nice to meet you.

    Pair programming is a fairly common dev technique these days and is a great way to help students learn programming. If you’re needing more resources, try this one:

    http://www.wikihow.com/Pair-Program

    or just google “pair programming”. One basic notion is the idea of test-driven development. In the classroom context, one student would come up with a test, and the other would program against that test.

    Here’s a bit more:
    http://www.agiledata.org/essays/tdd.html

    Hope this helps inspire more creative ways of getting kids learning how to problem solve.

    All the best,

    – Ian

    1. Ian, thank you so much for taking the time to read and respond to my blog. This is definitely a strategy I’m going to use with my classes in the future to see if it helps them improve their programming and debugging skills.

      All the best,

      Ian

Leave a Reply

Your email address will not be published. Required fields are marked *

productivity self-reflection Teacher Training + Support Workflow

This post is brought to you by the number 549 and the letter Q

This was the number facing me as I opened my email this morning: 549. 549 apparently unread emails. This was depressing. What a way to start the year! Already significantly behind! However I knew – in part at least – why the number had crept up to such heights. What I didn’t know was how […]

Read More
CPD Development digital literacy Digital Skills E-Learning Flipped Classroom IBook ICT for Learning iPad 1:1 Mobile Learning Teacher Training + Support

Magic Move in Keynote on iOS #ade2018 #AppleEDUChat

I caught up with the #AppleEDUChat twitter chat this morning and was taken with the idea of using Keynote for simple animations. I’d heard of the magic move transition before but hadn’t really explored the possibilities this offered. The example GIFs shown within the twitter chat really inspired me to take a closer look. How […]

Read More
self-reflection Teacher Training + Support Workflow

Brave or Stupid? Abandoning email #workflow #teacher5aday #wellbeing #productivity

There are plenty of articles out there about email productivity, labelling, filtering. Colour stars abound. Branching labels grow unchecked. I won’t link to them here. My workflow – for years – has almost always been manually controlled: Interesting / useful email message? Forward to Evernote for archiving and tagging. An action from an email message? […]

Read More