Teaching in “Sometimes Useful Shock Horror"

IMG_7895-Edit.jpg

If any of my students ever want to bring me a completed exam script I’m always happy to “mark” it in front of them. Quite a few take advantage of this and it really helps their grades (folks on 08120 – there’s still time before Thursday)

I’ve spent some time today going through answers and I’ve noticed something that worries me every time I see it. Some of the answers were just about spot on, but didn’t leave me with the impression that the student giving them really knew what they were talking about. It was as if they were just giving responses that they had learned, rather than speaking about something they understood. Now the thing is that this approach probably works fine if you are learning about Kings and Queens of England, but it is very different when we are teaching something that we really want you to apply. A lot of the stuff that we are teaching is intended to be applied to solve problems.

The thing to remember, if you are stuck in this revision thing, is that it is much more sensible to put effort into trying to understand the topic that it is to work really hard just remembering things. I never really got to grips with the piano because I was too “lazy” to learn how to sight read music for my left hand. So I’d just learn the left hand bit in time for the lesson that week. Of course, eventually this technique broke, when I found that the next exam had a “sight reading” test.

Learning to program is like this. You can learn “If a class implements an interface it must contain implementations of all the methods specified in the interface for it to be possible to create an instance of that class”. Or you can work out that we have interfaces so that we can build systems that deal with objects in terms of what behaviours they have (these are the methods specified in the interface) rather than the class hierarchy that they are part of.

Knowing the former will get you half the marks in the exam. Knowing the latter will let you create a mechanism whereby all the objects in your solution, the receipts, customer records, addresses, invoices and product descriptions, can be sent to a printing process that just asks them to print, and doesn’t care what type of object they really are because all the objects implement the iPrint interface which contains a “PrintToPaper” method.

If you want me to go through any of this stuff please come and see me and I’ll be happy to do just that. You can also post questions on the forum, and use the Twitter tag #08120Revision for quick questions. And don’t forget that we are not telling you this stuff so you can reflect it back to us in exam answers, we are telling you this stuff so you can use it to make things work.

I always find it amusing when students come back to me after a while on the course and say “That thing you taught us, turns out it is actually useful”.

Well, duh.