I’m personally very lucky that we are severely behind in this country when it comes to spitting out Computing graduates. Software developers are in demand and, with an increasing digital presence in every part of our lives, that demand will only grow. It’s a very secure industry.
As somebody who takes quite an interest in education, however, the level at which we teach Computing in this country is abysmal. Note that I say Computing – not ICT. Although this has been (quite rightly) jumped on by Michael Gove lately, it speaks volumes that the so-called specialist IT qualifications taught at schools tend to cover software packages such as Excel, Access, Powerpoint and Word. These are largely ubiquitous and, nowadays anyway, are expected basic skills rather than something that puts you a cut above the rest. ICT rightly deserves its reputation as a wishy-washy subject area that has lacked focus for a long time.
So now that we and, it seems the government, have accepted that we must stop teaching kids how to use spreadsheets and instead start teaching them how to write spreadsheet software, the debate seems to have stalled. Namely on what we teach them and when we do it. Developers get incredibly precious about architectures and the jury is out on what is most appropriate to place in front of a student to set them on the path of learning programming. I learnt by teaching myself Visual Basic, then C, then Java, then .NET, and so on. There is an argument to say that Visual Basic “eases” them into programming through an interface that allows them to visualise objects, their interactions, their variables, methods and events. But as with any visual language, particularly .NET, too much is done for you. Appreciation of computational effort is ignored and, whilst Visual Basic (or .NET) will undoubtedly allow programmers to learn whilst being creative, the fundamentals will be missing. There’s a very good reason they recommend against learning to drive in an automatic.
I haven’t coded in C for at least six years. I have no need or use for it in my current job, nor do I expect I ever will. Almost everything, however, has its foundations written in it. It doesn’t do everything for you; unless you find libraries online you will have to understand and appreciate things like string handling, memory allocation (and of course deallocation), reference vs value, etc. It is a fantastic language to learn programming with because you have to start from scratch – you’re not overwhelmed by toolboxes, libraries, visual IDEs that complete your code for you.
The next question is, when do we teach it? Well, let’s not be frightened of making children get their hands dirty, let’s not allow the current drought of code in schools to define where we go with this. The moment they start tackling algebra in maths is the moment they should start understanding variables and assignments in programming. We should start teaching kids C in Year 7.
There’s a fairly prominent saying that if you understand a problem and how to solve it, you should be able to code a program that solves that problem for you. Imagine the possibilities of intertwining Computing with Maths – when they tackle coursework on Pascale’s Triangle in Year 8, they could write a simple console application that takes in small user variables, calls a function that performs the algorithms they currently follow on paper and spits out an answer. When they start tackling the meatier maths stuff at GCSE, they’ll be in an excellent position to learn the intricacies of pointers and addressing in C. By the time they finally open an IDE, C will have given them the appreciation of the very foundations of programming.
I expect to find opposition to this – some will say it’s too radical, others will have the quite legitimate concern that the biggest roadblock is not the idea, it’s having sufficiently trained teachers to do it. I disagree. I’ve heard so many anecdotes of teachers showing ICT teachers how to do something in the classroom – with well-defined lesson plan guidelines (perhaps even produced by the IEE or the British Computing Society), any teacher should be able to learn and understand the basic elements of C.
So here’s my vision. To have 11 year olds across the country printf-ing “Hello world!” on their first day at secondary school. If we can do that, we’ll revolutionise the future of technology in our country.