Coding for kids is a relatively new subject within the education system. Over the past decade, almost every country has introduced coding as a part of the national curriculum. This seems like good news, right? But when you look a bit deeper, things haven't always been as rosy as they seem.
In this blog post we'll look at the development of kids' coding over the past few years as it matures into a more rogorous, academic subject.
Read our A-Z of kids' coding for more information.
Coding in the Curriculum
Coding is not like other subjects. It is very difficult to teach it properly as it requires a high level of techincal expertise to teach it effectively and in an engaging manner. Schools very rarely have this technical expertise in-house, and bringing in external specialists is not always possible for budgetary or other reasons. It doesn't help that coding is a poorly understood subject, including with school leaders. Heads of school and heads of IT often don't realise what is really needed to teach the subject.
The Computing national curriculum is 4 ½ pages long—and coding is only a small part of this.
In comparison, Maths, English and Science are 69, 152 and 65 pages long respectively
Putting coding into the national curriculum alone is not sufficient—indeed the national curriculum "acknowledges" this by not saying much and leaving it broadly up to each school to decide how much coding to do, and how to do it. The Computing national curriculum across all Key Stages is 4 ½ pages long—and coding is only a small part of this. In comparison, Maths, English and Science are 69, 152 and 65 pages long respectively.
This challenge was "resolved" by relying on a combination of children-specific platforms such as Scratch that replace a real coding language—these are easier to teach but are far from being real coding—or by relying on teaching simple and fool-proof programs that are neither engaging nor do they allow students to learn the skills needed to code interesting and useful programs independently.
This problem has not gone away. But in recent years there has been a growing focus on treating coding as a serious, academic subject instead of a lightweight one primarily aimed at entertaining kids. This does not mean making coding boring. On the contrary, teaching coding more thoroughly means that students can progress to working on more complex projects which are a lot more fun to code, and a lot more engaging too. Children tend to get bored using children-specific "coding" platforms after a while, but real coding using a real coding language never gets boring as it's infinitely expandable and children can always move on to the next step.
At codetoday we are proud to have led here in the UK, and within the international education community, in developing coding education in the more rigourous direction. It is still a challenge to bring this approach to every school in the country because it relies on teachers who are excellent programmers and excellent communicators—a combination that may not be as abundant as required.
We strongly believe that coding should only be taught in this rigorous fashion. At codetoday we practice what we preach and we don't run any courses that use children-specific platforms or other hardware or fancy software, whether it's robots or Minecraft or other distractions that children are happy with but that do not enable the fundamentals of coding to be learnt and mastered.
We take the view that the only way to teach coding is the hard way, using a proper programming language such as Python and learning it in a structured way, progressing through a curriculum in the same way that one would for subjects such as Maths, English or Science, say. We say this is the hard way to teach coding—which is very true—but it doesn't mean it's harder for students to learn. Coding is not an easy subject, but teaching it thoroughly doesn't make it harder, it just makes it better.
The biggest allies coding has in this drive towards maturity are parents themselves
In the next section of this blog post, I will dive a bit deeper into the reasons why coding is different from other subjects in the way we need to teach it and the resources needed to do so well.
Why is coding different to other subjects?
Let me explain this with an example. Here is a very simple program in Python:
import turtle fred = turtle.Turtle() for side in range(4): fred.forward(100) fred.left(90) turtle.done()
This program opens up a window and draws the outline of a black square. There are 6 lines of code, none of them too long, but this program has hundreds of ways in which it can go wrong. And with coding, the tiniest error will simply make the program not run at all. This is unlike other subjects. Let's take English as an example where a student is writing a story. If they make a spelling mistake, they can still carry on writing the story and a reader will still be able to understand the story, despite the odd spelling or grammar mistake.
The equivalent in coding is that someone reading the story written by the student would simply not be able to carry on reading beyond the error, as if there's a magical barrier stopping the reader from going on. Worse still, the student themselves won't be able to see the result of their work, as a computer program will simply not run if there's even a single error.
If the code above has hundreds of ways in which a student can make a mistake, imagine how much worse it can get with longer programs? An experienced programmer will be able to spot errors instantly in a program like the one above, and more complex ones too, and focus their time in guiding the student to find and fix the error. A less experienced programmer will have to sit at the computer and look for the error, and there's nothing they can do in the meantime as the code will simply not run otherwise.
And so far we're only talking about errors. If we also include bugs into the mix then it gets a lot worse. A bug is not a "spelling" or "grammar" mistake that will stop the program from running. The program with a bug will run until the end but the outcome will not be the desired one. Bugs are harder to find and harder to fix and the experience in programming that a teacher has will make a huge difference in the flow of a class, and in the amount of time that may be wasted for the instructor to find the bug in the first place and then fixing it.
There is yet another hurdle that is easier to deal with with experience (experience in coding rather than experience in teaching). Let's look at the short program shown above. Every one of the lines of co