Sunday 15 September 2013

2 minutes - Reminder on what my PhD is and some thoughts on programming tools for beginners

I'm looking at understanding better how we can prepare newbie coders for a potential education/career in programming.  I am awkwardly using the term newbie rather than really young kid at this stage as you could be learning this at 50 and still want an entry point into it. iPads work as well for mature digital immigrants as they do for babies as a way into new tech, just ask my mate Leonie Ramondt who does iPad workshops for all ages.  So this preparing yourself for learning to code when you don't know much about computers could work for all ages potentially.

I've been working with children from the ages of around 3 up to 13, and their teachers on learning programming using hardware and software such as BeeBots, BigTrak, Scratch, Python and more.  I've always found the progression from one to another tricky though.  You start with a physical robot which you program in a very linear space, and it's quite limited in it's capabilities.  That's fine, it must start simple, and being playful and physical helps too I'm sure.  You then dump out of there into Scratch quite often, or perhaps Daisy the Dino on an iPad.  Scratch is a great piece of software, and anyone new to coding finds themselves at home really quickly and can program Scratch (rather than the computer per se) to do stuff.  You get involved in a software development cycle where you have an idea, you then plan and build and debug it iteratively and rapidly and end up with something close to what you originally imagined, or perhaps quite different, and have a lot of fun doing so.  Your finished product might end up different to what you started with due to you not completely understanding what is available in Scratch, or maybe just your idea changed, or perhaps the software isn't capable of what you wanted to achieve.  More on that later...  At this stage in your programming journey, it's all still quite fun and the assessment isn't terribly rigid in a lot of cases, so the limitations of Scratch are outweighed by its accessibility and relative power to create.  As I said, more on this in another post where I'll evaluate some of these common tools in more detail.

Assuming you graduate from Scratch with flying colours, a lot of schools and coding academies/clubs move you onto Python - a traditional, text-based, powerful programming language. Python is great, and as programming languages go, very accessible.  The problem is that Python is a massive jump in complexity from Scratch.  It wouldn't be such a jump from Logo or Basic, but from Scratch it is.  Children feel often like they are disempowered in Python compared to Scratch - where they were wizards and could create sophisticated games with powerful logic based behaviours using loops and variables, and they could do it in minutes, in PyGame (A game development library for Python), they get caught out by syntax, lose that instant feedback they were used to and produce games that just will not run rather than not working quite right.  In a lot of cases they get over the hump and really learn to fly with Python, but I see many more that just end up copying what they need to out of the book to do enough to pass their class.  I'm not knocking Python though, and if you want to go into industry as a coder, being a Python wizard will mean you are a C wizard and a Java wizard too.

Where I'm going is that I think the progression needs to be looked at, and the programming environment you use needs to increase in complexity in a linear, staged fashion, getting progressively more complex yet powerful, whilst still remaining constant and familiar.  After all, aren't most things you learn (at school) structured like that?  Certainly the new National Curriculum for Computing resembles this kind of model, yet Beebot/Roamer -> Scratch -> Python doesn't in my opinion or that of many children and teachers I've worked with.




1 comment:

  1. Leonie couldn't comment on this post for some reason, but emailled me her comment which is reproduced below:

    hi Tom, thanks for the mention. Coding ain't what it was when I learned and taught Pascal ;o) I haven't had the time to play with the new tools, but every now and then I think about the task of making coding fun and accessible have been impressed by the Freeformers/ Mozilla Tech Jam initiative (we're hoping to host some in Chelmsford soon). However, Codeclub also deserves a mention. Check out this vid. ;o) http://railsforzombies.org/

    ReplyDelete