Great tools for teaching programming

In Oct this year (2010), the Edinburgh University Hoppers Group which Maxim Cramer and I help to run, decided to run a female developers conference. We ran this conference for a variety of reasons which warrants a blog post all by itself, but the important thing here is that I’ve been spending an increasing amount of time thinking about is how to encourage non-coders to code.

There are two groups of people which I think could benefit a lot from learning coding.

In my startup life, I am lucky enough to meet a variety of people from different backgrounds – some in management, marketing etc – some starting their own companies for the first time. Unsurprisingly, most of them are web-based. But one thing that it always strikes me is how quickly people are willing for someone just to take over the design and development of their sites without they themselves, having a go. Of course I’m not saying that you should build the whole website yourself first – after all, it takes YEARS to train as a good developer – but having some sort of background understanding helps articulating your vision in their terms, helps to understand what is and what isn’t possible, and helps you to see where opportunities for innovation are.

The second set of people which I think would help are … well, less a ‘set’ of people, but more the world … unlike two or three decades ago where new innovative products were real, physical things; instead, opportunities lie increasingly in the digital space. However, rather than seeing increasing trend of students going on to study computer science at University level, we see the opposite. And don’t even talk to me about the percentage of women within that number too. Having spent many long hours discussing how this could be better resolved, one large part of the answer is the need to make programming fun and exciting.

So here are some awesome tools which you should look at if you are interesting in learning how to code, or if you’re looking to teach non-coders to code.

1. Android App Inventor

Android App Inventor is by far one of the coolest tools I’ve seen in graphical programming. The idea is, with a few simple clicks by dragging and dropping components, you can get a fully functioning app running on your mobile really quickly. Meaning that non-coders can get results, fast. And the ability to show off to their friends what they had built.

There’s a front-end (interface builder) and a back-end (“blocks” builder for the programming aspects). Certainly the blocks builder is the most important part, as it is a gentle way to start teaching common programming concepts such as loops, if-then statements and database access.

I’ve had a play with it myself. Its fun. Although it can get me frustrated really quickly because I just want to get around to tweak the code, that’s probably a sign that this tool is great for step 1, but once you’ve got to a reasonable level, its time to move on.

2. Rails for Zombies

The idea behind Rails for Zombies is that you would be walked through the basics of creating a “twitter for zombies” through a series of tasks. In each section, you start with a simple task which gets built up to much more complex tasks. You get to learn about database programming prinicples, web development through ruby and so forth. Each player gets credits for solving a puzzle. Its meant to be fun and way more interactive than learning from a book or screencasts.

I can’t even explain how excited I am about the potential for Rails for Zombies and how awesome it is that gamification prinicples have FINALLY arrived in programming. I haven’t had a chance to play with it properly yet, but once I do, I’m certainly going to explore setting up programming workshops with Rails for Zombies.

3. Kodu

Built by the awesome people at FUSE labs (brought by Microsoft), Kodu is a visual programming lanugage made specifically for creating games. In particular, its aimed at teaching children programming principles. (And in that sense, it has a lot in common with SCRATCH).

The idea is that you can design, build and play your own games through a graphical interface. You can create the (3D) environment, build your character and set obstacles and tasks that the character has to achieve. The best thing about Kodu is that (not only is it free) but that you can run games on your XBox360 meaning that it makes you feel like you’ve actually created a real game. For fairly little work, someone can create a simple, but very polished looking game.

Obviously this one is aimed more at children: of the demos I’ve seen most of them have been aimed at the primary school age. Kids can share and play each other’s games over the network, and they can also download numerous other games around. To me, this is the 21st century equivalent of creating your own board game (I created quite a few when I was little) and enables them to explore their creativity. For adults, you should definitely check out Wild Pockets (Shanna Tellerman, their CEO, actually came and at one of the Girl Geeks Dinners this year).

So there you go. Hope you have fun!

(And after all that hard work, here’s some humour to go with it …)

One thought on “Great tools for teaching programming

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s