pozorvlak ([info]pozorvlak) wrote,

Why we should teach our kids to code

There's a petition up on the British Government's e-petitions website, called "teach our kids to code". Despite being plugged by geek luminaries like Ben Goldacre, it's received barely a thousand signatures at the time of writing. I think this issue is much more important than that.

Goldacre says "heaven knows where our successive governments think the next generation of nerds is going to come from". But that's not the point. Call us nerds, geeks, hackers or Morlocks, the technological priesthood of humanity isn't going anywhere: this stuff is so goddamn fascinating that enough people will teach it to themselves for the wheels to keep turning. I don't know any programmers who weren't at least partly self-taught. Today's proto-hackers don't have the easily-programmable 8-bit micros that programmers of my generation cut their teeth on, but they've got something much better: a full open-source software stack whose source they can read, resources like Project Euler and Hackety Hack to help them take their first steps, and a huge community of open-source hackers to learn from. The petition talks about narrowing the appalling gender gap in IT, and that's a genuinely important issue, but it's not the main reason we should be teaching coding in schools.

John Graham-Cumming very nearly nails it:
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.
Yes, we need some people who know how to instruct the machines if we want to have a viable economy. But the real point is that we currently live in a pre-algorate society¹. People who object that "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" (a quote from one of JGC's commenters) are missing this point entirely. Computers are not like cars. Cars have a well-defined purpose, for which they have been ruthlessly optimised. Computers are more like writing. Writing is a means for expressing and conveying ideas (and here's the key bit: any ideas); computers are machines for executing instructions (and here's the key bit: any instructions). Saying that only a few people need to code today is like saying that only a few people needed to read and write in the 1500s². Their whole society was set up with the assumption that very few people could read: pub signs were carved representations of the pub's name, for instance. Everyone got by, but our society is incomparably richer since the advent of mass literacy. We're in the same situation with regards to algorithms today: a technological priesthood tries to do the algorithmic thinking for everyone, but the shiny toys they produce for non-algorists are often more hindrance than help. And unsurprisingly they miss a lot of opportunities for algorithmic assistance: ever see someone repetitively copying-and-pasting something over and over in Word? Do you feel the same almost physical pain that I get when I see someone doing drudge-work on a computer? In a mass-algorate society, that Word user would realise immediately that they were doing work that the computer could be doing for them, and the software would be set up to make it easy for them to automate their drudgework.


A very, very old description of an algorithm for calculating volumes. From the British Museum's Babylonian collection.


I want to live in a mass-algorate society. I want to use the software that a mass-algorate society would develop: sane and hackable, because everyone would know what computers fundamentally do and how to make them do what they want. I also expect that a mass-algorate society's software would have discoverable, predictable APIs, because 99% of coders would not be specialist programmers and would have better things to do than read endless documentation. But again, that's not really the point; the point is that I expect mass algoracy to have knock-on effects at least as dramatic as those of mass literacy.

Where do you want to go today?

Edit: followup post; Reddit discussion.




¹ "Algorithmate" strikes me as rather a mouthful. I propose "algorate", because it's shorter, easier to say, and a backhanded compliment to the man who, after all, was the first political leader to recognize the importance of the Internet and to promote and support its development. Poor Muhammad ibn Musa al-Khwārizmī al-Majousi al-Katarbali has already lost 14 of his name's 18 syllables by the time we've got to "algorithmate", two more seems like a relatively minor loss.

"Algorist", by the way, isn't a neologism: it's a long-established term meaning "one who invents algorithms".

² Car maintenance isn't analogous to coding; car maintenance is analogous to system administration, which I agree most users shouldn't have to bother with.
Tags: computers, programming, rants

  • Post a new comment

    Error

    Your IP address will be recorded 

  • 25 comments

[info]cyocum.myopenid.com

September 15 2011, 10:01:37 UTC 8 months ago

This would be great...

Yes, I am rather frustrated that people tend to think of computers as "magic boxes" rather than the programmable things that they are. I wish we did more to teach programming to kids.

That said, I was once called a "fascist" by a computer scientist when I suggested that we spend the first two years of an undergrad humanities degree teaching these people how to code.

[info]pozorvlak

September 15 2011, 23:24:53 UTC 8 months ago

Re: This would be great...

I wouldn't go so far as to call you a fascist, but one should probably teach some humanities at some point in the first two years of a humanities degree :-)

Anonymous

September 16 2011, 15:28:06 UTC 8 months ago

Re: This would be great...

Quite honestly it would be a great idea to teach some humanities to the nerd crowd also. Two years of that before programming might make better citizens.

[info]citizen428

September 15 2011, 11:32:49 UTC 8 months ago

I agree, that's why I created a website collecting info about various programming languages/environments specifically targetting kids:

http://www.happynerds.net/

Sorry for the plug, but this is a completely non-for profit project, so I figured it's ok.

[info]pozorvlak

September 15 2011, 12:13:37 UTC 8 months ago

No problem at all! Your site's a great idea, and I'll do what I can to plug it.

[info]filecoreinuse

September 15 2011, 12:16:53 UTC 8 months ago

I've added this site to here: http://elinux.org/RaspberryPiBoard/EducationalLinks

[info]citizen428

September 15 2011, 12:35:26 UTC 8 months ago

Cool, thanks!

[info]0olong

September 18 2011, 14:49:00 UTC 8 months ago

I like it. Sorry not to see Processing on there, but I guess it's not specifically targetting kids...

[info]citizen428

September 18 2011, 14:54:28 UTC 8 months ago

Processing is something I always was unsure about including, but I went ahead now and added it. "kids" is not exactly a strictly defined term and for teenagers Processing is cool.

[info]0olong

September 18 2011, 15:03:50 UTC 8 months ago

Nice one!

For what it's worth, I started out with 'the easily-programmable 8-bit micros that programmers of my generation cut their teeth on' - at around the age of 8 or 9 - and I'm pretty sure that Processing is at least as easy as ZX Spectrum BASIC, even if it is a lot more powerful!

[info]edtechdev

September 15 2011, 11:34:16 UTC 8 months ago

computational thinking

Yeah many agree, and our national science foundation and others are making a big push for this, if you search for phrases like 'computational thinking' or programming for all. Here are some resources:

computational thinking:
https://docs.google.com/viewer?url=http%3A%2F%2Fwww.cs.cmu.edu%2Fafs%2Fcs%2Fusr%2Fwing%2Fwww%2Fpublications%2FWing06.pdf

programming is the new literacy
http://www.edutopia.org/programming-the-new-literacy

Program or Be Programmed - Douglas Rushkoff
http://www.huffingtonpost.com/douglas-rushkoff/programming-literacy_b_745126.html

Tools for learning some basics of programming for kids:
Scratch http://scratch.mit.edu/
Light Bot http://armorgames.com/play/6061/light-bot-20
Kodu for xbox http://research.microsoft.com/en-us/projects/kodu/

For older kids & undergraduates
http://www.yoyogames.com/gamemaker/html5
http://processingjs.org/
http://pixieengine.com/
http://www.playmycode.com/
http://www.greenfoot.org/
http://marshallbrain.com/kids-programming.htm

I would not recommend starting off with python or ruby or the like. Those were not designed with beginners or kids in mind. Even with older kids / high school students I would emphasize things that let them get productive / make something quickly, like some of the mobile app builder sites, or gamemaker and the like. The point is to let them see what you can do & accomplish with programming, not teach programming for programming's sake.

[info]pozorvlak

September 15 2011, 12:15:11 UTC 8 months ago

Re: computational thinking

Good stuff, and thanks for the links!

[Minor point: IIRC, Python grew out of an earlier language called ABC, which was intended as a first programming language. But I agree that it's possible to do better.]

[info]gaspodog

September 15 2011, 13:39:04 UTC 8 months ago

Re: computational thinking

Go Python! It would be my current first choice for a language around which to base a core coding curriculum.

Anonymous

May 5 2012, 12:44:12 UTC 3 weeks ago

There is also ToonTalk (http://www.toontalk.com/), a videogame-style logic programming language suitable also for kindergarteners.

[info]eugene_bakin

September 15 2011, 12:17:49 UTC 8 months ago

We are going to be there

Saying that only a few people need to code today is like saying that only a few people needed to read and write in the 1500s².

Yeah. The next stage is when coding would be the distinction of a higher class. =) And then we should wait for mandatory coding education.

Fortunately this is going to happen much faster than in case with literacy.

[info]gaspodog

September 15 2011, 13:36:18 UTC 8 months ago

I've thought something similar to this for a long time - ever since I was at school myself and discovered that the Computing course I was taking (standard grade) didn't actually teach you to code anything beyond three or four simple statements in Pascal.

Fast-forward to when I was teaching in secondary schools and covering ICT lessons... idly thumbing through the revision guide for current GCSE ICT courses is just depressing. Apparently knowing the capacity of a floppy disk and what the difference is between a mainframe and a minicomputer are essential, but being able to code? Barely even mentioned.

I think school ICT curricula should be thrown out and re-written from scratch. Start kids on things like Lego Mindstorms toys (with their visual block-based programming tools) and move on up to a nice, tidy language like Python later on.

I think the ICT curricula themselves are only half the problem. Maths teaching is the other half. School maths courses do not teach problem-solving, and the concept of proving something barely gets a mention until A-level. The skills children should be learning in maths classes from an early stage would provide an excellent foundation for algorithmic and logical thought. I reckon the excellent A Mathematician's Lament (pdf), which I suspect you've already seen, has the maths angle pretty well covered.

Anonymous

September 15 2011, 14:47:29 UTC 8 months ago

Petition is for UK citizens only

I'd like to see it open for the U.S.

Anonymous

September 16 2011, 08:26:13 UTC 8 months ago

Re: Petition is for UK citizens only

Perhaps start one for US citizens? It doesn't make much sense for you chaps to be voting on a UK poll when the US has the same issues.

[info]vlion

September 15 2011, 14:55:17 UTC 8 months ago

I'm with you here. I don't want to be part of the high priesthood of the computer.

I want everyone to be able to easily deal with data and repetitive tasks.

Raspberry Pi looks like a lot of fun here.

[info]pingback_bot

September 15 2011, 20:41:46 UTC 8 months ago

Interesting Links for 15-9-2011

User [info]andrewducker referenced to your post from Interesting Links for 15-9-2011 saying: [...] Why we should teach our kids to code. An interesting argument. [...]

[info]pingback_bot

September 15 2011, 21:34:25 UTC 8 months ago

Another literacy

User [info]supergee referenced to your post from Another literacy saying: [...] Kids should code. [...]

Anonymous

September 17 2011, 12:42:43 UTC 8 months ago

This will never work.

If you let kids learn how to program computers some of them will love it and explore it further, others won't bother.
If you force them to (by marks/grades) most of them will hate and forget it after just a few weeks.

[info]stronae

September 19 2011, 09:17:56 UTC 8 months ago

I'm with you, most generally because as kids learn to code, they develop logical thinking that is sometimes hard to develop in other environments. And frankly, too many children are growing up idiots, at least in the States. :/

Anonymous

September 19 2011, 09:22:49 UTC 8 months ago

Petition fail

I agree with your post. I think the wording in the petition is weak and uninspiring which might be why no-one has signed up. Perhaps you could help get that text edited

Miss Lake

Anonymous

May 5 2012, 12:40:07 UTC 3 weeks ago

There is also ToonTalk (http://www.toontalk.com/) (source code (http://code.google.com/p/toontalk)), a videogame-style logic programming language suitable also for kindergarteners.
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…