How to initiate kids (or anyone) in coding

Posted by Emma on September 13, 2011

This post is a follow on from the one I wrote about how we need to start teaching children to code in their junior years (Year 5 is my stab in the dark). This would address the issue of fewer female coders than male, and the fact that not enough people are equipped with this super awesome skill whether their career ends up being in programming, car manufacture or shoe design. The post received such a wealth of feedback in the comments that I could probably write a blog post every day of the year to explore all of the stuff raised in there - I won’t but I will try to draw out some.

In this post I am going to answer the question: what resources can we use to learn or teach code? This seemed to be the question immediately raised in the comments on the post and on twitter, so I have simply read all of the comments and looked at the products and listed them all here for you to use as a resource. I am pretty sure that commentors will leave further links in the comments on this post.

However, before I continue, John Godfrey, one of the commentors on my last blog post left a link to this video. It’s just over an hour long, by Randy Pausch and I would love it if you could all watch it if you haven’t already, as well as read this list of resources! Bear with it, you will learn some excellent things as you watch, but you will also see the insight and inspiration behind Alice, one of the suggested links included below. (If you don’t have an hour or so free right now, then come back to it, but watch the ten ish minutes from this point in the video) otherwise watch the whole thing here:

[youtube http://www.youtube.com/watch?v=ji5_MqicxSo&w=420&h=345]

Deep breath… here is a list of resources (including Alice)

Scratch

Scratch got many thumbs up from commentors on the last post and was indeed the basic skill many of the Young Rewired Staters attending this year’s coding challenge. Here is the blurb from Scratch:

Scratch is a programming language that makes it easy to create your own interactive stories, animations, games, music, and art — and share your creations on the web.

As young people create and share Scratch projects, they learn important mathematical and computational ideas, while also learning to think creatively, reason systematically, and work collaboratively. Logo (and the turtle)

A few people mentioned this. It is good, but it is also a bit boring dated. It is described as “the term used to describe a range of programs that in various ways provide the user with the means of controlling the movement of an object on the screen ( often a turtle)“. So yes, it is a great thing but would need some good teacher skills to make it relevant and exciting, I think. Or it could be a very painful and dreary maths lesson.

Logotron has a list of resources etc for teaching and teacher.

Alice

After insisting on you watching Randy Pausch’s lecture, how could Alice not feature highly? Alice is a 3d programming environment, designed to “create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience.”

So there is Alice 2.0 and Alice 2.2 as well as Story Telling Alice. The latter was the one mentioned by Randy as being developed by Caitlin Kelleher and is “… designed to motivate a broad spectrum of middle school students (particularly girls) to learn to program computers through creating short 3D animated movies.” <- danaaaa!! You can download Story Telling Alice here, but it is not hugely tested, is only available for windows based machines, has no support - but I certainly plan on playing about with it with Amy (9).

‘Proper’ Alice has full support and documentation and teaching materials and so on.

Android

Android was recommended as an easy way to start mobile programming - “Android is a mobile operating system for mobile devices such as mobile telephones and tablet computers developed by the Open Handset Alliance led by Google.”

Indeed just looking at all of the web resources to help a person get started in Android programming, I can see why it came so highly recommended. So I found this on the Code Project website and it is a great tutorial. This is a great starting point for teenagers/newby adult coders, frustrating for littler ones unless they are already into this. I lost quite a few hours researching these links for Android programming, and where you can go from there. So be warned, Googling ‘Android’ might just mean that you can just sod off and go teach yourself everything you want to know really from a pretty decent standing start. There are bazillions of tutorials out there.

2simple.com/2diy

This software was recommended but it costs money. Not that I do not agree with people charging for providing such useful resources, of course, but just a warning. It is software used for “creating your own interactive Flash resources, activities, games, puzzles, quizzes.”

It is a resource really for teachers to use in schools, co-creating with children to use across subjects utilising the whiteboards (as well as websites and learning platforms). Wins an applause award from me for making it all relevant! But is very much aimed at younger learners.

Lego Mindstorm

Programmable lego ends

=======Drumroll please=============

Whilst in the process of writing this post a brilliant website was born: http://www.codecademy.com/ simple, brilliant perfect way to pick up javascript. I don’t need to tell you about it, they do a perfectly fabulous job of that all by themselves in their own ingenius fashion. I can see no fault in it, but it has been met with some scepticism, I just cannot see why really, but that’s my own opinion. It is the javascript version of Try Ruby.

Other interesting links

Blitz Academy has a whole list of resources for those thinking about getting a job as a games developer (in fact the reading and link list is interesting for anybody even vaguely interested in anything)

Someone mentioned the Bytes Brothers books. Now that was an interesting hour lost! (Again - this post has taken nearly a week just because I keep disappearing down digital allies). So the most useful link I could find for these was here. Here’s the blurb: “Sort of a cross between Encyclopedia Brown and Micro Adventure, each volume in this series contains several short mysteries. The user must read carefully and run very simple BASIC computer programs in order to guess the solutions.”

I wrote another post a while back for the “inquisitive” it is for those reading this who want to try Python or Ruby, or even scraping websites.

Post Script

I am not equipped with a teaching degree, so I cannot give equivocal advice on what to teach at whatever stage, however here is a great guide from Matthew (@pixelh8):

Year 5 = 9-10 age Computational thinking, logic, cause and effect (try Scratch, Google app inventor or Lego Mindstorms all visual based programming) or even Game Maker.

Year 6 = 10-11 age Should definitely be coding (try Processing very visual very quick feedback and free see http://pixelh8.co.uk/category/programming-in-schools/ for code examples and http://www.wired.com/geekdad/2009/11/teaching-kids-programmers/ )

Year 7 = 11-12 age try XNA, iPhone & Android dev the program doesn’t have to be complex or world changing you just have to show them a way in. Also they love being able to use and create on up to date tech.

Year 8 = 12-13 age some of the best iPhone developers are 13 years old.