Monday, September 12, 2011

Teach our kids to code

There's a very worthy petition entitled Teach our kids to code on the DirectGov web site. It's asking that children be taught to program starting in Year 5 (that's children roughly 9 or 10 years old). I fully support that idea because I think that 'programming thinking' is an important skill that needs to be taught. Children first need to learn to be literate, then they need to learn to be numerate and finally they need to learn to be 'algorithmate' (yes, I just made that word up).

It's obvious to most people that illiteracy and innumeracy are problems to be tackled at school, but it's not obvious that we are now living in a world where logical and algorithmic thinking are very, very important.

Recently, Eric Schmidt (one-time CEO of Google) criticized Britain for throwing away our great computing heritage:
Schmidt said the country that invented the computer was "throwing away your great computer heritage" by failing to teach programming in schools. "I was flabbergasted to learn that today computer science isn't even taught as standard in UK schools," he said. "Your IT curriculum focuses on teaching how to use software, but gives no insight into how it's made."
We really do need to teach children logical thinking (since such logic underlies programming) and algorithmic thinking (the breaking down into a finite sequence of steps the solution to a problem). What we don't need is to teach a specific language. Any language will do.

Back in the 1980s Britain made great strides (and inspired a generation of programmers, of which I am one), with the BBC Computer Literacy Project project. This project wasn't about using Word or a web browser (the current focus of IT in schooling), but about how computers work, and how to make them do what you want. Making computers do what you want is fundamental and goes beyond just programming (for example, creating a Smart List of songs in iTunes requires the sort of boolean logic thinking that children could easily be taught).

Recently, there's a volunteer project called Raspberry Pi that has echoes of the BBC Micro project without any government backing. And schools could be teaching LOGO or Scratch or using Processing. And if the school can't afford even the cheapest computers, get kids programming on paper. That's how I started.

The current government is promoting an area in East London as East London Tech City: a hub for startups based around an area that has recently seen many small hitech firms choose to locate there. As part of the initiative the government has laid out plans to help start ups through changes in IP law and visas. One additional thing the government can do is ensure that there's a supply of 'algorithmate' people who can actually start and run these companies in years to come.

The petition itself is marred by a rather confused statement of its aims which seem to cover teaching children to code and doing something about the gender gap in IT. Nevertheless, I think it's important to sign it if you are British. We can't go on allowing our children to see themselves as users and not programmers.


Teraknor said...

the frustrating part is that there are plenty of qualifications with plenty of units that are dedicated to coding and software design

But many schools, fearful of league tables, GCSE results (and their equivilence) tend to opt for the easy and mundane units/skills.

Love Raspberry Pi and Arduino, so much can be accomplished with these on a small budget and a large imagination have already encouraged some educators to use these on a nationally recognised qualification before its changed beyond recognition with post-wolfe report changes

Martin McCallion said...

Totally agree, including the confused wording of the petition. Indeed, I think it should be rephrased as "Teach our kids to program". Most MPs will probably think "to code" has something to do with ciphers.

Then again, they might think "programming" has something to do with TV.

Anonymous said...

Please sign this petition:

carterson2 said...

I have been trying to teach Android programming for free in Memphis. No one wants it.

Search for it....

andydev said...

Great to hear. About time really. Only last week Anna Debenham spoke at UpdateConf in Brighton about how poor ICT education was in Schools. Being only a few years out of school myself I know this all too well and would have loved programming being part of the curriculum.

I've posted links to the petition to get the word out. Can only be a good thing to get programming in schools back on track.


David said...

Given the role algorithms and computers play in our lives, I think this quote from Douglas Rushkoff:

"Program or be programmed."

I totally support the idea of kids learning how to program in schools.

Who's going to teach it? We struggle to fill positions to teach math & science in many schools with highly qualified people already...

Anonymous said...

Stupid idea. Kids no more need to know how to code than they need to know car maintenance or how to build a table - useful for some, pointless for the majority.

And saying "the language doesn't matter" is really worrying. So teaching kids to code in F# or Erlang is as useful as teaching them in BASIC or Java? Or Prolog?

Every language requires a different mindset and represents a completely different approach to solving a problem. Frankly, teaching them systems thinking would be a better use of time in an already quite full curriculum.

Sarah said...

I think it's a good idea. Agree with the comment that most children may not end up using programming skills in their day to day life as adults - but some certainly will, and the same argument applies to most subjects we teach at school, beyond basic reading and arithmetic. I agree about teaching logic and 'programming thinking', it usually isn't too difficult to pick up the syntax of a new language once you're confident in the general principles.

Has programming ever been taught formally in UK schools though? In my experience most programmers are self-taught in the first instance, at least until university level. Didn't most of us teach ourselves Basic at home on an old BBC? Maybe the equivalent now is kids teaching themselves to write apps for their smartphones?

DRAY said...

intersting idea, but literacy and numeracy have to come first along with emotional intelligence.

only problem with teaching coding at such an early age is that most of it will be out of date by the time the kids actually leave school

Anonymous said...

"only problem with teaching coding at such an early age is that most of it will be out of date by the time the kids actually leave school"

The programming language is largely irrelevant. It's the concepts that are important and these do not go out of date.

P.S. If you've got a scheme of work for teaching "emotional intelligence", please forward it. My pupils have none whatsoever and I have to learn them it.

Xenophon said...

This might be approached better by suggesting teaching "Computational Thinking." Take a look at the Wikipedia page for that phrase, or read Jeannette Wing's paper ( on the subject.

Teaching the thinking skills probably has lasting value, even though any specific programming language or tool will become obsolete.

John Graham-Cumming said...

@xenophon Thanks for that link. Very good stuff. This is sort of what I was getting at with algorithmacy and the point that a specific programming language is unimportant.

Sounds like this takes it to a higher level.

badvogato said...

play chess or weiqi/go game, learn a foreign language is as good as any 'new' coding scheme invented by computer scientists, IMHO

winkleink said...

Computers in schools are boring and not very engaging or rewarding.
I completely understand why kids don't want to do it.

Back int he 80s I learned to program because our schools policy was you could only play games if you wrote them yourself.

Get the kids to a Maker Faire or Hackspace visit. Bring in Arduino and game developers.

Not every kid will want to learn to program, just like not every kid will want to play football, but for those that are excited by computers it needs to be engaging and rewarding.

If you a group of musicians, coders and graphics people came together then they would be excited about achieving their goal of developing a game.

A Raspberry Pi with Python and PyGame on a modern Linux distro would be enough to get started with from a tech standpoint.
Allowing development in school as well as at home.

The reason so many kids (mainly boys) learned to program in the 80's was because it wasn't taught as a school subject but something that was nurtured and encouraged as an activity.

Paul Baker said...

You speak a lot of sense here. I was a spotty teen in the 80's with a ZX81 and a BBC Model B, inspired by the BBC Project you refer to. Nowadays I make my living writing code.

Now, 30 years on, computing is infinitely more relevant to everyday life and yet there is no coding anywhere on the curriculum that I have seen.

Computing, yes, that's taught. My year 7 (age 11) daughter can put together a Powerpoint Presentation and my year 4 (age 8) son can take photos on a digital camera and print them out. But they wouldn't know an if statement or a loop if it poked them in the eye. But the interest is there - my daughter was fascinated when I showed her my Arduino coded to flash some LEDs in sequence.

I have signed.

Andrea Garbagnoli said...

I think Toontalk, a
videogame-like programming environment, could be interesting; it was used also by kindergarteners, as
you can read in Leonel Morgado's thesis.
Principles of Toontalk
Source code
Unfortunately, it's only for Windows, but I hope someone will migrate it to Linux for Raspberry Pi and OLPC XO-3.

Antikokosh said...

I have a 9 year old and we started building simple programs using Basic! on iPad. I end up writing the code mostly but we do discuss what we want to do and how to attack the problem, which is really the most beneficial part for him. Often we need to discuss math concepts, etc to, say, build a bouncng ball program. We are posting our source codes as well as some screen shots to our tumblr in case anyone wants to have a look at

Gulliver said...

I am doing GCSE ICT at the moment, and all we seem to do is write about ICT in Microsoft Word. These skills would be very handy in a lot of jobs nowadays, but we have done too much work in Microsoft Office.

I think that programming would be a useful skill to learn, especially in Year 5, as introducing it in Year 10 would not be a good idea for the students who do not enjoy ICT.
I am teaching myself Java at home in my own time and I think that ICT lessons at school are mostly a waste of time if we don't do something useful in that time.
The least they could do is have an advanced ICT course that people could choose to take instead of the normal, boring OCR Nationals course.