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 code written (except the last one, probably) can be written using different styles of coding. And the internet is full of different coding styles.
In some instances, the difference is just that—a question of preference of the coder. But more often than not, some styles are better than others and are considered best practices. Since kids will use the internet to find information, it is the role of the teacher to guide students on what's good, what's bad and what's ugly.
What has the solution to this problem been in the past?
There are two ways that have been used to deal with the inexperienced-programmer-teaching-coding problem. One is to use platforms designed specifically for kids in which some of the more basic aspects of coding are mimicked within the platform. These platforms, often referred to as block programming platforms but can also be embedded within games that children play, hide key parts of coding away from the student and the teacher, which means that things cannot go wrong! These platforms are heavily overused and they give students the wrong impression of what coding really is. Coding in the real world most definitely does not look like block programming platforms.
But these platforms allow non-programmers to teach coding which is why they have proliferated. They are primarily aimed to make life easier for the teacher, not so much for the student.
The other solution is to use proper coding languages but keep the projects very simple and discourage students from veering away from the teacher's version in case "things go wrong". This way, as long as the teacher's version is fine, everyone else's will be fine. Unfortunately, this route makes coding very boring and children will not really learn much either.
The Development of Coding for Children into A Mature Subject
The development of coding from a lightweight subject with the aim of keeping the kids entertained to a mature, academically thorough subject is happening. But it's not happening quite at a quick enough pace. The fundamental problem of schools not being able to teach the subject in a thorough way as well as some commercial providers who choose to pursue the entertainment-first side of "coding" through various children's platforms and toys are slowing down the shift.
However, the biggest allies coding has in this drive towards maturity are parents themselves. More and more parents realise now that coding is an important subject, but that because it is important for their children's future, it needs to be treated with the same seriousness we treat Maths, English, Science and other subjects.
As parents become more discerning when choosing their children's coding education, the shift from a lightweight activity to a mature, serious subject will accelerate.
At codetoday, we'll carry on leading the way.