I'm currently involved in a number of initiatives relating to our computational future, and am passionate about teaching coding and data skills to children (see below for some links).
I have a great relationship with colleges in Manchester and next month, with my STEMnet Ambassador hat on, I'll be spending a morning with a group of 24 ICT/Computing teachers from high schools and colleges in the area, to teach them about the Raspberry Pi.
But, what exactly should we be teaching the teachers, to help them educate our kids for our computational future?
The Raspberry Pi
A Raspberry Pi is a small, cheap, fully functional computer, slightly bigger than a credit card. It has, in some ways, revolutionised, or perhaps re-invigorated the grass roots computer club style enthusiasm that we experienced decades ago, when the first 8-bit microcomputers such as the Acorn Atom, Sinclair ZX81 and Commodore VIC 20 appeared on the scene. It is to many the perfect platform for a new generation of software and hardware hackers alike (there are many ways you can easily interface the Pi with external devices such as sensors and switches) for a number of reasons:
- Low price: it's not unreasonable to consider, say, installing a Pi as part of a bird monitoring system in a bird box outside
- Hardware availability: the PiFace digital interface makes it very easy to connect the computer up to the real world
- Excellent software: the operating system of choice for the Pi is GNU/Linux; an open, free, fully functional operating system (OS) and development environment that has none of the disadvantages of that 'other' OS from Redmond
There are various distributions of GNU/Linux available for the Pi, and they're super-easy to install onto the SD card which functions as the Pi's hard disk equivalent. With these distributions come many software packages over and above the operating system itself. These packages include programming environments such as Scratch, technical computing software systems such as the Wolfram language & Mathematica, and various languages.
There are almost too many languages to mention, and those are just the ones that come out of the box! In a session with a class of students at Xaverian 6th Form College that I ran late last year a group were interested in using Pascal on the Pi, as they were studying that language. Pascal wasn't immediately available, but with a single line we retrieved and installed a free Pascal compiler and they were up and running less than a minute later. But for teaching, I reach for Python more often than not. It's a wonderful language: calm, precise, flexible, and one with which you can learn and write code in different styles (such as procedural, object-oriented, and functional).
So the session next month is to teach the teachers about the Pi – what it can do, and how can it be used in lessons and for coursework.
The key thing to remember that the Pi is a means to an end, not necessarily an end in itself. On a few occasions I've picked up the sentiment "OK, we now have some Raspberry Pis – education job done!" Unfortunately that's not entirely the case. At one level, giving the kids confidence to pick up a circuit board, connect it up and boot an operating system is a great thing to do. But what to do once that achievement has been unlocked? My aim is to help teach children computational thinking, to be able to survive and flourish in our data-driven future, and that means learning analytical, data and programming skills. That doesn't necessarily mean dry science - in fact, far from it. Computational thinking involves rigor, but it also involves creative thinking and problem solving. Computing is to be found all along a wide spectrum, with science at one end and art at the other.
And this is exactly where the teachers need our help. They need to understand what the Pi is capable of, what Linux makes available to them, what they can use it for, how to involve it in lessons. They're hungry to learn, with a view to passing that knowledge on to our kids. Sometimes, starting with a blank piece of paper is the hardest thing – some direction is needed. That's where we come in. Here are my thoughts and plans of what I'm going to share with them on that day next month. The challenge is always the same: so much to show, so little time. So the focus has to be the best it can be:
- General hardware and OS setup
- Hardware interfacing aspects (e.g. with the PiFace)
- Linux features such as background jobs, multi-user capabilities, etc
- An overview of programs available out of the box
- Teaching problem solving with environments such as Scratch and Python.
Scratch and Python are examples of languages where computing can be made an integral part of the problem solving process. In the past, with Scratch, I've taken primary school kids through the process of prime number determination with Scratch (they'd just learned about the concept of primes in class), and given secondary school kids a taste of games programming and 2D mechanics. I've used Python with kids as a language to solve math’s puzzles such as those presented on Project Euler.
What do you think?
But as perhaps a person in business, what do YOU think? What skills do you think we should be teaching our kids so that they have the best chance of survival in the future? If computational thinking is "the fourth R" (after reading, writing and arithmetic), what do you think they would benefit from in relation to the world of business? For me, teaching kids how to use MS-Word and MS-Excel as the pinnacle of the computing curriculum is just not good enough. I'd love to know your thoughts.