You are viewing pozorvlak

Beware of the Train - Why we should teach our kids to code [entries|archive|friends|userinfo]
pozorvlak

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| My moblog Hypothetical, the place to be My (fairly feeble) website ]

Why we should teach our kids to code [Sep. 15th, 2011|12:11 am]
Previous Entry Add to Memories Share Next Entry
[Tags|, , ]

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.
linkReply

Comments:
From: cyocum.myopenid.com
2011-09-15 10:01 am (UTC)

This would be great...

(Link)

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.
[User Picture]From: pozorvlak
2011-09-15 11:24 pm (UTC)

Re: This would be great...

(Link)

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 :-)
From: (Anonymous)
2011-09-16 03:28 pm (UTC)

Re: This would be great...

(Link)

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.
[User Picture]From: citizen428
2011-09-15 11:32 am (UTC)

(Link)

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.
[User Picture]From: pozorvlak
2011-09-15 12:13 pm (UTC)

(Link)

No problem at all! Your site's a great idea, and I'll do what I can to plug it.
[User Picture]From: filecoreinuse
2011-09-15 12:16 pm (UTC)

(Link)

[User Picture]From: citizen428
2011-09-15 12:35 pm (UTC)

(Link)

Cool, thanks!
[User Picture]From: 0olong
2011-09-18 02:49 pm (UTC)

(Link)

I like it. Sorry not to see Processing on there, but I guess it's not specifically targetting kids...
[User Picture]From: citizen428
2011-09-18 02:54 pm (UTC)

(Link)

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.
[User Picture]From: 0olong
2011-09-18 03:03 pm (UTC)

(Link)

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!
[User Picture]From: edtechdev
2011-09-15 11:34 am (UTC)

computational thinking

(Link)

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.
[User Picture]From: pozorvlak
2011-09-15 12:15 pm (UTC)

Re: computational thinking

(Link)

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.]
[User Picture]From: gaspodog
2011-09-15 01:39 pm (UTC)

Re: computational thinking

(Link)

Go Python! It would be my current first choice for a language around which to base a core coding curriculum.
From: (Anonymous)
2012-05-05 12:44 pm (UTC)

(Link)

There is also ToonTalk (http://www.toontalk.com/), a videogame-style logic programming language suitable also for kindergarteners.
From: eugene_bakin
2011-09-15 12:17 pm (UTC)

We are going to be there

(Link)

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.
[User Picture]From: gaspodog
2011-09-15 01:36 pm (UTC)

(Link)

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.
From: (Anonymous)
2011-09-15 02:47 pm (UTC)

Petition is for UK citizens only

(Link)

I'd like to see it open for the U.S.
From: (Anonymous)
2011-09-16 08:26 am (UTC)

Re: Petition is for UK citizens only

(Link)

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.
[User Picture]From: vlion
2011-09-15 02:55 pm (UTC)

(Link)

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.
[User Picture]From: pingback_bot
2011-09-15 08:41 pm (UTC)

Interesting Links for 15-9-2011

(Link)

User andrewducker referenced to your post from Interesting Links for 15-9-2011 saying: [...] Why we should teach our kids to code. An interesting argument. [...]
[User Picture]From: pingback_bot
2011-09-15 09:34 pm (UTC)

Another literacy

(Link)

User supergee referenced to your post from Another literacy saying: [...] Kids should code. [...]
From: (Anonymous)
2011-09-17 12:42 pm (UTC)

This will never work.

(Link)

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.
[User Picture]From: stronae
2011-09-19 09:17 am (UTC)

(Link)

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. :/
From: (Anonymous)
2011-09-19 09:22 am (UTC)

Petition fail

(Link)

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
From: (Anonymous)
2012-05-05 12:40 pm (UTC)

(Link)

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.
From: (Anonymous)
2012-06-05 02:14 am (UTC)

(Link)

I obviously agree, and am working on a Scratch-inspired, web-native programming system for kids and other non-CS programmers: http://waterbearlang.com/ It's a drag-and-drop system of blocks that can wrap whatever language you like. We currently have wrappers for Java robotics, Arduino, and Javascript.
From: (Anonymous)
2014-03-21 08:16 pm (UTC)

(Link)

Hello! Do you use Twitter? I'd like to follow you if that would be okay.
I'm undoubtedly enjoying your blog and look forward to new posts.
[User Picture]From: pozorvlak
2014-03-21 09:21 pm (UTC)

(Link)

Sure! I have the same username there.