When I first went to college, I had some programming experience because I’d been a keen Apple II programmer. This meant that I did have some idea of how much work was involved in making cool things happen on the computer. When you only had 7 colours in high res mode and you had to super pixel to make orange – you quickly realised that cool games took time. The people I started college with came in three varieties: people who could program in some sort of computer language (to varying degrees), people who knew what computers were but only as users, and people who had never touched one before. The people who had used them before, but had never programmed, used to gripe that we were doing all sorts of boring stuff and why couldn’t they just write a game? In fact, where were the graphics? (We were using a mainframe with dumb (text) terminals attached to it. GTC Infoton, VT102 emulation, 80×24, 2400 baud, all hooked up to an VAX 11/780. Yow.)
These days, everyone has at least seen a computer and, as we all know, the things you can see on a computer today are mind-blowing. The graphics in just about any game can make you believe you’re in another world.
That, of course, is why a lot of people come to Computer Science and that, sadly, is also the reason that a lot of people are unhappy in first year. We teach them a lot of programming but, until recently, we didn’t use a language or environment that would allow them to do two important things:
- Do cool things.
- Show them off.
That’s where some of the great new(ish) languages are making their mark in early programming. Scratch and Alice, which I’ve referred to before, allow school students to make things happen. This allows them to do cool things and they can show it off to their friends – this makes what we do interesting, engaging, exciting and something that they may wish to pursue. At the other end of the spectrum, iOS and Android offer another pathway but they’re pretty high level in many ways – especially if you’re having to manually manage memory and write quite intricate code to handle Controllers or tie Views together. There’s no doubt that mobile platform computing is a short path to awesome but intro students may not be ready for the many complexities and pitfalls of starting in such a hostile world.
Students want to do amazing things as soon as they can because, for most of them, that’s why they came to us. Nobody came to listen to 7 lectures on the FOR loop. (At least, I really hope not!) We want to make amazing things happen.
So let me show you two other environments that may help students get there faster. One is an entire programming system based on the iPad, called Codea – your entire development environment sits on the iPad and you make programs, run programs and enjoy. Lots of good game widgets, premade content and you’re programming in Lua which is a pretty interesting language. (Full confession, Codea has been developed by some people I’ve known for a while but it’s interesting enough just to look at and, no, they don’t pay me. 🙂 ) It used to be called Codify (which explains the name in the video) but it’s now called Codea.
There are so many ways of approaching this problem – what’s great is that so many people are approaching it! They understand that everyone wants to be able to turn their dreams into reality and good support and development environments can help this.
[Edit: I’ve just realised that one of Mark’s posts that I had on my screen to read when I got back from SIGCSE provided another , and more detailed, look at Bret Victor. Seriously, if you’re not reading Mark’s Computer Science Education blog yet, you should. Save me the embarrassment of accidentally double posting. 🙂 ]