Trying to justify that every student in the country should learn computing is quite a tricky endevour, and it shouldn't be. We're all users of technology after all, and benefit from the advantages and disadvantages of being so. We should all have a basic understanding of computers, networks, encryption and software. Knowledge of technology can help keep us safe, make us money and help our productivity. Why should every student in the country not be given access to such knowledge? After all, we don't balk at the fact that every student in the country should study Shakespeare, trigonometry, the causes of The Second World War or how to throw a rugby ball. I probably use trigonometry about once a month, I haven't thrown a rugby ball in decades but I use a computer every day.
I studied French for five years at secondary school. I hated it. There's nothing worse than sitting at a parents' evening and listening to your mother speak fluent French with your teacher, and knowing, despite not understanding a word they are saying, that he's detailing your every shortfall in the subject. Do I resent the fact that I was made to study French? No. Of course not. I have the utmost admiration for multi-linguists. I marvel at their ability and I know they perform an essential role in our society. Every student should study a foreign language, because a few of them will find they have a talent for it and go onto greater things. Did attempting to learn French benefit me? No. Not one bit, and that doesn't matter
Other subjects have no need to justify their existence in schools. English, Foreign Languages, Maths and Science have the weight of centuries of educational history behind them. As does History. Computing is new. The bastard child of Maths and Electrical Engineering. It's a subject that's only been in existence for a few decades. Because of this it has struggled to gain a firm foothold in our schools, yet I would argue that it is a subject that has a far greater impact on our lives and the lives of our children than any of the others.
There are quite enough reasons to make Computing a compulsory subject in schools. We don't need spurious excuses that confise the issue. What annoys me about many of the "Computing Apologists" is their overwhelming desire to insist that Computing has benefits outside of the sphere of technology. I'm all for Computing in primary and secondary schools, because I think the ability to code is important and I feel that every student should have the opportunity to learn to program. If we teach a thousand students to code, then maybe we'll find a hundred that enjoy it, ten that excel at it and one that goes on to revolutionise our society.
When many advocates of compulsory Computing education are asked why it is so important, they often hail "Computational Thinking" to be the panacea to all our woes. They state that even outside the field of programming, Computational Thinking is an important life skill. They argue that Computational Thinking can be applied to many problems in the real world and that every student should learn to tackle problems in a "Computational way". I teach Computing, and to be honest I only have a vague idea of what Computational thinking is.
The idea that Computational thinking is an essential life skill is nonsense.
If I was to shuffle a pack of fifty-two playing cards and hand them to you, then asked you to sort them, you'd do what any sensible person on the planet would do. You'd sort them into suit order first, then into value order. Is this decomposition or just common sense? Did you require lessons in Computational thinking in order to achieve this task?
My degree is in Biochemistry. I would never argue that Scientific thinking is crucial for everyone. It's useful, in certain situations, but not essential. When some Daily Mail reader argues that the presence of a minority group in our country is resulting in a broken society, I might apply the Scientific Method to analyse their evidence, find its flaws and then disprove their hypothesis. If they told me they'd eaten a bacon sandwich, I'd probably just believe them. My wife is an English teacher. When she reads a novel she drills down into the layers of meaning and the subtext of the book, to elucidate a truer understanding of the authors message. When she reads the menu in a local cafe, detailing the contents of their bacon sandwiches, she just takes it at face value.
You can live a successful life without knowledge of the Scientific Method. You can live a successful life without knowledge of Literary Deconstruction. You can live a successful life without knowledge of Computational Thinking.
If I ask you to build me a shed, do you pick up an armful of planks and repeatedly throw them into the air until a shed has been built? Of course not. Maybe you'll start by building a floor, then some walls and finally a roof. Is this decomposition? Are you "Thinking Computationally"? Maybe you're actually engaging in abstraction. After all, there's no such thing as a roof. A roof is just a series of planks of wood, joined together at an angle that is optimal for self-support and the shedding of rain water. Of course, there's no such thing as a plank of wood. That's just really bundles of xylem vessels, cut into regular geometric patterns. Of course, there's no such thing as a xylem vessel. They're really just arrangements of cells composed of cellulose and... well I'm sure you get my point. We're all fairly familiar with abstraction. We just might not recognise it for what it is, and we certainly don't have to be taught Computational Thinking in order to build a shed.
I think one of the major problems is our labelling of the subject.
Computer Science is no more about computers than astronomy is about telescopes
Unfortunately, Computer Science has little to do with Science either. Let's get straight what we are actually teaching here. We're teaching programming, network infrastructure, databases, communication protocols, markup. We're teaching these things because these technologies are so ubiquitous and important, that it will benefit everyone to have a little understanding of them. We are not teaching a revolutionary new way of thinking that will have wider benefits to society.
Why should we give every student an opportunity to learn Computing? Some of the students we teach might one day become the next Linus Torvalds or Steve Wozniak. Some of our students might become senior developers, collaborating on amazing new technologies and changing the world for the better. Some of our students might develop the algorithms for more realistic flag fluttering in Call of Duty XIII. Some of our students might become Gregs executives and not give the developers such a hard time when they can't sort six million customer records according to when they last ordered a bacon sandwich, in real time, in a browser... that's IE6.
Lets stop trying to make Computing something it isn't, and instead be clear as to what we're teaching and why we're teaching it. Let's stop being afraid of the words programming and coding, as if it'll scare students away. Let's be honest about Computing, and we'll see it's popularity soar.