Teach Children to Code

I read a fair few tweets last night on subject of teaching children to program in school. A lot of the discussion appears to have been prompted by Ben Goldacre’s link to a post by programmer/author John Graham-Cumming supporting a petition entitled “Teach Our Kids to Code”. The petition argues that we should teach kids to program from Year 5 (9-10 years old). Definitely! Just as I was about to sign the petition this morning I saw a tweet by Mark Henderson, The Times Science Editor, saying that David Willets MP had just announced a pilot programme to teach programming in schools! Great stuff.

David Willetts has just announced pilot programme to teach schoolchildren coding & to develop a programming GCSE.

11:23 AM Thu Sep 15, 2011

I was about 10 years old when my parents bought our first computer. They had saved up for a long time and I was so excited about it. I remember the day we got it very clearly. It was a Compaq Presario with 2.2 GB hard drive, 64 MB RAM and 600 MHz Celeron CPU. The power! If I wasn’t out on my bike with friends you could find me endlessly fiddling, breaking and then fixing the computer (all whilst trying to hide the fact that I had broken it from Dad—I had to fix it otherwise they were going to be pretty angry/worried that I had broken their expensive new PC).

At a young age I was a logical thinker and quickly became computer literate, teaching myself HTML and then Javascript and PHP. If I, by no means a “child genius”, can work it out on my own from Internet resources then there is no reason why other children couldn’t learn to program in school with some good teaching. I think a 10 year old could easily cope with logical statements such as “if this then that” or “while this do that”—they naturally think like it in everyday life, they just need to help to translate it into the formal instructions a computer understands. Programming is fun and intellectually satisfying, much more so than the ridiculous ICT “lessons” that I used to have: open a Word document, copy some text, print, make a change, print again. Completely pointless.

It’s a useful skill too. Being able to program has been really handy for me at university. Last year I recorded probably around a hundred absorption and emission spectra (and maybe thousands using an automated system) which would have been impossible to analyse using Excel, the standard tool of choice amongst undergrads in my department. A bit of code in MATLAB and you can analyse as much data as your computer can cope with. For some reason my department didn’t teach a programming language like other departments such as Physics who taught C++. Instead we had “maths lab” where we used Excel for numerical methods. Not very useful (and very dull). Solving Project Euler-style problems with something like MATLAB or even better a proper, open source, high level language like Python (with SciPy and matplotlib) would be much more useful. I’ve been learning it myself over the summer. It’s a fun language that I’d love to teach to a class of undergraduate chemists.

I think it’s clear that school children would benefit from being able to program. Even if they never use code again, they would gain an understanding of how a computer functions and can then use this knowledge to work out how new software works. Rather than teach specific software applications, teach computing. It’d benefit industry too. Fingers crossed that the government doesn’t force schools to teach a horrible proprietary language outsourced as a “solution” on a ludicrously expensive contract and instead choose something open source and useful. A recent report about open source in Whitehall doesn’t bode well…