My tuppence on teaching programming in schools.

There’s been a bit of noise on teaching kids programming at school level.  It’s been on the boil for a while now and accelerated when TED released the video of 12 year old Thomas Suarez an iPhone App Developer.

 

From previous experience and also from doing computer studies from 1985-1990 here’s my take on things.

  • At a primary school level using computers is fine and teaching the basics of logic is even better. To a point this is already happening.
  • Dedicate computer clubs within schools teaching programming will fair better than a class based lesson in programming.  Attention and ability levels aside, not everyone is interested in text on a screen.
  • Focusing on one language is dangerous.  In the 80’s we had little choice, at the time every classroom had a BBC Micro and you were plunged in to the mysterious world of BASIC.  It’s real world use was,well how can I politely put it, limited.  Is there such a thing and a natural kids based programming language?  And what’s taught now probably won’t be relevant in the real world when the same child leaves school in 5/6/7 years time.

Lastly, not everyone is cut out for programming.  There has to be an inner drive to want to program a computer in the first place.  It’s usually to challange an assumption or to solve a problem and if kids aren’t inquizitive from the start then the uphill task of learning to program becomes all the more harder.

It’s great that kids do want to program but if the single aim is to create iPhone developers to make apps then we’ve already failed before we started.  The quality of the teacher is vital as well, it’s not about programming knowledge but being able to hold an air of mystery so intoxicating that any kid will say, “that’s what I wanna do”.

The likes of Thomas are a rare 1 in 10,000 kids who can apply all this logic, patterns and the syntax and put it together. On the opposite side of the coin I’ve seen grown men in tears over trying to get Java to produce a simple for loop because the books they were given were useless.

 

 

5 responses to “My tuppence on teaching programming in schools.”

  1. I agree with everything you say except the part about using a single programming language being dangerous. I too was taught Basic on a BBC Micro which, as you say, had no real world relevance. But what it taught me was the structure of a programming language. That is all you really need at that age. Just pick a language, I don’t care what it is, and get them excited about it. They then pick their own language when it is appropriate.

  2. Stuart – I agree with what you’re saying, the getting them interested part is the key. Yeah we can change languages at anytime but that relies on the ability (and want) to learn more.John – Lego Mindstorms, perfect choice but now in the deadpool no?

  3. Following on from your statement about single-programming language and Stuart’s response; I just wanted to throw in my tuppence.I demonstrate for 1st year UNIVERSITY students, some with little or no ability to think in a logical, imperative reasoning. They then get thrown into one of two camps; C++ for EEE, Java for CS.Never mind my personal disdain for these languages; these are ‘adults’ who have never programmed before, having to work within horrible syntactic constraints that they don’t have the experience and context to understand.I’m a child of the ‘multi-language’ experience, and I’m pretty damned good at it, but people need to be taught how to think like a computer before they can tell it what to do in the ‘flowery’ languages.Start them on Python dammit! 😀

  4. While I don’t want to bang the drum for my current language of choice, I think Ruby would have a lot of positives. Very simple language structure, not memory allocation rubbish, it can be used in a very structured and OO fashion or it can be hacked together to create a simple script. Also then leads on well to Rails for web development.I do like the idea of starting them early, even having simple tablet (not necessarily ipads) based programs that allow them to control a device. If we want to go really old school, think BigTrak. As John said, allow them to understand that it is possible to control a device and you just might spark something in them.

  5. University’s plough the C++/Java route because that’s what was commanding money at the time. Only if you’re doing embedded chip work would C++ be a real advantage. Would I put it in front of a first timer? Never.Ruby – The language is nice, as is Python. I’m still a Perl hack at heart for the quick dirty command line stuff but it’s what I’m used to and I don’t want to go through the process of relearning to do a task when I can do it in Perl without much thought.My only issue with Ruby is that people mistake Rails as a language when it’s really a framework. We had a raft of folk learning the framework and not the language.http://www.dataissexy.co.uk/knowing-the-framework-is-not-knowing-the-langSo what is really taught? Variables, arrays, for loops, while loops, if statements. If you can nail that down then you’re doing well to port that knowledge to any language.My next progression is Scala and Clojure for those who are insanely interested 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: