During one of the intervals at the recent TEDx Oxford conference, after Peter Millican’s session in which he used simple computer programs to gain insights of the world around him, I was approached by a very good friend of mine. She was keen, as are a number of my friends, male and female alike, to learn how to code, but she was struggling with how to get started.

The issue she was having with the currently available classes were too formal, often very demanding on time, and she often found them to be very competitive. This didn’t produce a very supportive or effective learning environment. Online courses on the other hand were often were very simplistic, and were hard to stick to, possibly because they were often worked at in isolation.

As a teacher, she is keen to try and get something short, with a large practical element, which would fit in the few weeks every year that all teachers have free at the same time – the summer break.

How did you learn?

The conversation turned to how I learned to code…

While I had some formal education it is true, which was good to address gaps in my theoretical knowledge, I had learnt the bulk of my coding skills long before I sat in my first Computer Science class at 15. Despite having not been formally “taught” how to code, I had managed to absorb a comprehensive understanding of the subject, so how did this come about?

Through our conversation, I realised that it seemed I had largely learnt through self directed play (aka, pissing about trying to do cool shit), combined by having a couple of more experienced friends, who helped guide me when I got completely stuck. Another aspect that helped was the weekly computer club I attended, together with Ben Werdmuller and a few other friends, where (as well as playing Monkey Island for hours) we demoed our latest code, and exchanged tips hand tricks we had learnt.

This provided a supportive environment in which to sharpen my tools, and the aura of good natured competition the weekly informal show and tell generated didn’t hurt.

What could this look like as a course?

So, could this experience be replicated? Could we put together a course, which would be fun, nurturing, fit in with people’s limited time and allow people to drop in and out without falling behind? I’m assuming this is going to be for adults here, but I can’t imagine it being a significantly different problem for children.

I imagine this working more like a club or craft group, rather than a course, where students play with various bits of kit and work on their own projects. Where they’re encouraged to learn off other students, and where more experienced people are largely there as mentors rather than to set agendas. For complete beginners, perhaps an orientation session covering some of the basic basics would be useful to bring people up to speed, but I think lectures and theory should be minimised – this should be hands on!

What are your thoughts?

So, a few weeks ago I got a PiFace for my Raspberry Pi.

The PiFace is a clip on extension board for the Raspberry Pi which, together with the free library software, makes it super easy to control various real-world inputs and outputs – turning things on and off, and sensing whether switches have been pressed.

Pretty cool, but unfortunately due to my work load, and an ever growing to-do list, I had so far not had the time to play with it at all. However, a recent sports injury forced me to stay at home for a few days, and since I couldn’t really move (or indeed, put on my own socks), I decided to use this as an opportunity to play.

My first bit of tinkering was to see if I could wire up and take advantage of the 8 software controllable outputs exposed by the PiFace. These outputs consist of 9 connectors, the first of which is a 5 volt power line, and the other 8 being the ends of an open collector.

The Circuit

I am not an electrical engineer, so this is all brand new ground for me, and that is enough of a reason for me to find it all terribly exciting. These first bits of hardware hacking giving me the same thrill of figuring something out and getting something to work as when I wrote my first software programs all those years ago!

Anyway, the circuit is a simple one, and consisted of a breadboard with 8 leds connected in parallel with the 5 volt power rail on one side and the open collector terminal on the other. The back of the packet my LEDs in also noted that a resistor of 330 ohm should be used in series with the led when connected to a 5 volt power supply in order to avoid burning them out.


The Software

As a proof of concept, I wrote a bit of software to cycle through and turn each light on for a second, before turning it off and turning the next one on. Nothing too fancy right now!

The Finished Article

So, here’s my first experiment in action…

Like I said, I’m not an electrical engineer so this is hardly the Starship Enterprise, but I learnt a lot!