Coding for children is still a relatively new subject and one that not all parents are comfortable with. With all other subjects that our children learn, parents understand what these subjects are even if they're not experts in each subject.
However many parents still put a big question mark next to coding, and there are also many misconceptions about the subject and how it's taught to children. We want to dispel these rumours and help you learn about kids' coding.
In this week's blog, we will explain everything there is to know about coding for kids, or almost, through an A-Z of kids' coding.
Let's get started…
A for Academic
Coding should be treated like other academic subjects and not as a gimmicky topic just to keep the kids entertained. Too often, coding is treated as a lightweight subject, both within schools and in out-of-school camps. This is wrong. Coding should be treated and taught in a rigorous and academic manner in the same way maths, science and English, say, are taught.
This does not mean coding can't be fun. On the contrary, coding becomes a lot more fun as you learn more, so learning coding properly is more fun and engaging than when using children-specific platforms that cannot get into the creative and exciting parts of the subject.
B for Bugs
There is a great story about the first 'bug' in a computer program from the times when computers where as big as rooms and a moth had made its way into the pipes making up the computer, causing it to fail. Although this story may or may not be true, it is almost certainly not where the name bug came from, but it's still a great story to tell!
A bug is when a computer program doesn't quite do what the programmer wants it to do. Sometimes it's obvious when there is a bug in the code, but at other times bugs are not that easy to spot and find.
Finding and fixing bugs is an important part of learning how to code. In fact, there is also a term for it: debugging.
C for Creativity and Critical Thinking
Many will not think of coding when they hear the word creativity. But coding is possibly one of the most creative subjects around. Coding is the ability to change an idea that someone has in their head into a program that a computer can execute. There are (almost) no limits on what those ideas can be.
In order to convert those human ideas into logical steps that the computer can understand and execute, a programmer needs to be able to think critically—programming is the ultimate problem-solving exercise. Not many other subjects combine creativity with critical thinking and problem-solving as effectively as coding does.
D for Data
We live in a world in which more and more data are being collected every second from every corner of our societies. When the amount of data available was very limited, as it was for most of our history up until relatively recently, it was possible to understand and analyse these date manually, or using simple methods.
But the only way to understand and make the most of the vasts amount of data available now is to analyze them computationally. And for this we need computer programs. This is why traditionally, fields like science and finance have been heavy users of coding.
We even have a new subject these days, data science, which looks at understanding and extracting useful information from data, and this subject relies heavily on both maths and coding.
E for Engaging
Coding is a subject that can engage many children and teenagers. I say it "can" engage many students because it all depends on how it is approached as a subject. Historically, only a certain type of child engaged with coding. These were times when coding was taught in a rather dry fashion, focusing just on teaching how to use the various tools and then letting the budding coders come up with exciting projects once they are proficient enough. But not many got that far.
The modern approach is to use engaging and exciting projects from the word go and this approach, although not easy to teach, makes coding more inclusive and we now see more and more children who would traditionally not been the coding type who now enjoy coding and flourish.
F for Future
As Niels Bohr once said, 'prediction is very difficult, especially about the future. Will coding be a must-have skill in the future in the same way that literacy and numeracy are today? Who knows. Although there is a good probability that this may be the case in one form or another.
What is clear is that already now, more and more jobs that did not required coding in the past do need it today. We mentioned science and finance earlier, but many other areas of business analytics, marketing, medicine, law, and the list goes on have members of the profession who are using coding to be more effective in their work. In the medium-term, there is no doubt that more and more professions will have coding as a desireable or required skill.
G for Games
We carry on with our A-Z of kids' coding with the letter G. When we ask kids what coding is used for on the first lesson of the first course, we often get this answer: games.
This is correct, of course, as every game you have ever played on a computer or a smart phone has been created through computer code. In fact, writing games is a great coding exercise.
However I must also put in a word of caution. Too often these days we see games that children can play that are labelled as a tool 'to learn to code'. In most, if not all, cases this is primarily an entertainment activity that has a small educational aspect to it. This is not too different from games that have an educational slant in Maths, say.
But in the same way you wouldn't want your child to learn maths just by playing online maths games, you can't learn coding just by playing games. There's nothing wrong with playing games, of course, but there's an important distinction between playing games for entertainment, and writing games to learn to code.
H for Hex(adecimal)
A small diversion into the geeky-side of coding. In computing the numbers we usually use in our daily lives, decimal numbers, are not always the most commonly used. Binary numbers are the most well known—a system made up of only 0's and 1's.
But another common system used in computers is the hexadecimal system. Whereas in decimal, each digit can range from 0 to 9 and in binary each digit can only be 0 or 1, in hexadecimal, each digit can be anything from 0-15. Weird? So much so that to represent the digits 10-15 we use letters A-F.
One area this is often used in is when dealing with colours. Often colours are represented by three numbers representing the red, green and blue component of the colour.
For example the teal colour in our logo is (0, 160, 193). In hexadecimal, 0 is 0 (duh!), 160 is A0 (since A is 10 so it's 10 x 16 + 0) and 193 is C1 (since C is 12 so it's 12 x 16 + 1). So the same colour is often represented in hexadecimal as 00A0C1.
Now you know…
I for Independence
When it comes to coding, learning from books and online tutorials can lead to some problems. We often have students who show us some complex code that they have written. They would have followed a tutorial from a book or from YouTube. The code was therefore one written by the author of the tutorial rather than by the child.
Of course there is nothing wrong with that, however children are often content with copying the code, perhaps understanding parts of it at a general level, and then just running the code.
The question is: would they be able to write the code themselves, starting from a blank screen? Often, the answer is no.
An important aspect when learning how to code is independence. For those of you who have learned a foreign language recently, you may remember the stage where you can understand text that is written down, but you cannot write or speak in that language fluently. The same can be true for coding.
Learning the theory is not enough when learning to code. Being able to code independently is just as important, if not more important. This is why our advice to anyone learning how to code is: practise, practise, practise.
J for Jobs and Jobs
I'll cheat a bit with J and talk about two things. The first Jobs is a topic I mentioned slightly earlier with F: the jobs of the present and future are changing and coding is becoming a more important part of many professions. Also, as technology becomes even more important in our lives, the need for coders to write software for all the new technology of the future will also increase.
The second Jobs refers to Steve Jobs, the iconic co-founder of Apple and one of his often quoted phrases: "Everybody should learn to program a computer, because it teaches you how to think".
K for Kids' Coding
This post is about an A-Z of kids' coding, after all! Why should kids learn to code? Can't they wait until they're older to learn coding, as many in the previous generations of programmers have done?
We don't want kids to learn to code just because it will be a useful skill in the future job market. As Steve Jobs said in the phrase quoted above in the entry for J, we want kids to code because it teaches them how to think. The creative thinking and problem-solving aspect of coding is probably the main benefit for most children, whether they will go on to use coding in their future lives or not. The ability to think in a logical and systemetic manner and to break down complex ideas into small, structured steps is a life skill that goes well beyond coding.
L for Learning
Many kids enjoy coding and they treat it as a fun activity. That's good. But we shouldn't forget that the primary aim is for them to learn a new subject, a new way of thinking. Because coding is best taught through project-based learning and the projects can be very fun and engaging, very few subjects give the same impression of being so fun throughout. This can sometimes mask the academic progression through a well-structured curriculum that students are going through.
M for Misconceptions
At some point we will write an entire blog post about the various misconceptions around coding. Unlike most other subjects, many parents have very little or no knowledge of coding and may not understand what the subject is really about.
Coding is not the same as IT. Being able to use an iPad well or to know how to use Word or Excel has exactly zero overlap with being able to code. Coding is not the same as knowing how to use a computer. Coding is about using a computer as a tool to solve other problems. The key about coding is that it's very flexible. It is a method that allows you to make a computer do whatever you want it to do.
If using a computer is about using software, coding is about writing your own software.
Apps for smart phones are software you can write using code. But this is only a very small part of coding. Writing apps in itself may be interesting and fun, but it doesn't teach much coding as to make an app you need to rely on plenty of pre-existing frameworks which do a lot of the work for you. This is great if your aim is to make an app, but less great if your aim is to learn how to code.
Because many parents are unaware of what coding actually is, childern can often pass on the wrong impression to parents. Playing Minecraft is not coding. And high-level platforms designed to create games may include some elements of coding but are not the same as learning to code in the same way that playing Monopoly is not the same as learning arithmetic.
N for New
Coding is not a new subject. It has existed since the very early days of computing, and in some ways it precedes computers too. Although personal computers were first available widely in the 1980s, coding predates the PC by decades.
However, coding did increase in its usefulness and popularity when personal computers become more common and eventually computers of all shapes and forms became essential in our societies.
What is new is coding as a subject within the educational curriculum of most countries in the world. There were times when coding was taught a bit in the past, but in the last 5-10 years, most countries have made a conscious effort to rewrite their computing curriculum and include coding within it.
This also coincides with a greater awareness of coding in society, in part because it has shifted from being a subject useful in a few, narrow fields to one that is used more widely by a broader range of people.
In some ways, because coding is still a relatively new subject in the kids' education sector, it is still maturing and its teaching is not consistent. Schools in particular have found it hard to adapt and many simply don't have the in-house expertise needed to be able to teach coding effecively and in an engaging way. But the shift in recent years is clear—more and more parents want coding to be taken seriously and to be treated like a proper subject.
O for Object-Oriented Programming
Our next stop in our A-Z of kids' coding is the letter O and we visit an exciting area in modern programming, object-oriented programming, often abbreviated to OOP. This is a relatively more modern introduction to coding that has become more prominent in the last few decades, and it is one of the first topics that can be considered as more advanced than the fundamentals.
Programming is often characterised as having to convert from a human way of thinking to a one that is more suited to how computers think. A big part of coding is being able to translate from human ideas to logical steps that a 'stupid' computer can understand and execute.
OOP takes a step away from this and is a way of framing a problem in a more human-centred way. A programmer is being asked to try and solve the problem by thinking what are the most relevant objects and ideas from the point of view of the human user of a program, and OOP allows us to write code using that framework.
Introducing OOP to students is often the stage when they have already realised how flexible and powerful coding is, but all of sudden they realise that it has become a lot more flexible and powerful. It is often one of those light-bulb moments, even though it's not the easiest topic to learn for beginners.
P for Python
There are hundreds if not thousands of programming languages available. Some are now obsolete, others are old but still around; some languages are very narrow in their use, others are very broad; some languages are nice, others are ugly; some are weird and exotic. In the real world, there isn't one language to rule them all. There are many different languages because they all have their strengths and weaknesses. Python is one of the main languages used in many applications and has been growing in popularity very rapidly over the last decade.
When it comes to learning how to code, however, there is one language to rule them all, and that is undoubtedly Python. There are several reasons for this:
It is a real-world language, and not a manufactured language just aimed at teaching kids
It is a very popular language in the real world
It is a very broad language, which means that it has a wide range of applications. Some other languages are more restricted and can only be used for certain applications but not others. Python also has over a hundred thousand libraries to extend it to every field you can think of, from science to writing games to extracting data from web pages and indeed to hosting web pages.
It is an easier language to read and write than many others, and it requires fewer obscure constructs that are difficult to understand for beginners. This is a really important point as it allows a beginner to focus on the fundamental concepts in coding without being distracted from the quirks and obscure features of the language itself.
Q for Quantitative programming
Coding has many applications and one of the most exciting ones is dealing with quantitative applications. This is a broad term that covers any subject that relies on numerical data that needs to be analysed. Finance and science are two fields in which quantitative programming is very important. Python is very well suited to deal with this type of programming, and in many fields is the de facto standard when it comes to quantitative programming.
There are some very useful modules in Python than help with this type of coding. NumPy—which stands for Numerical Python— is the standard module for dealing with arrays of data, especially numbers. Matplotlib is one of the most common modules for plotting and visualising data and datetime is one of the modules that allows Python to deal with dates effectively for data that includes time series. Pandas is another very powerful and very popular module in Python that enables the manipulation of complex data sets.
R for Robotics
Another coding application that is very useful in the real world is robotics. The robots we see most often on the media are the fancy ones that look a bit like human or animal figures and that move around performing tasks. However there are many other less fancy robots around.
Robots need code to drive them and to get them to perform their actions. In the real world, robotics is a very serious branch of engineering, but there is also the fun and entertainment side of robotics, especially when it comes for robotics for kids.
Often, kids' robots have some basic coding that children need to do to get them to work, so they have an small educational component to what is essentially a toy. But as we discussed earlier in relation to games that have a small educational coding element to them, robotics is not meant to teach coding but only as a tool to engage students in technology through a fun application. So robots are great fun, but they're not a replacement for learning how to code properly.
S for Scratch
For young children, the most common first experience of the very basics of 'coding' comes through block-based children platforms such as Scratch. Such platforms were designed to introduce some of the most basic coding concepts to children in a very simplified way. As with many such initiatives, the intention is a good one, and children do have fun and learn some basics with platforms such as Scratch. However there are also unintended consequences.
Block coding is very removed from real coding. Children often think that Scratch is coding and get the wrong impression of what coding really is. This can at times prove to be a disadvantage when children move to real coding using languages such as Python.
Another unintended consequence of platforms such as Scratch is that they are often overused. No coding knowledge is needed to teach Scratch which makes them very popular with schools. But even if such platforms have their uses for the very young who are not ready to code using a coding language, they shouldn't be used over several years for older children. Children get bored very quickly with Scratch as what you can do with such platforms is rather limited. And the danger is that children may wrongly think that coding is boring, when in reality it's Scratch they are getting bored of.
Good idea in theory. But in practice it is debatable whether platforms such as Scratch may do more harm than good in the long term.
T for Technology
Technology and coding are not the same thing, but there is an important relationship between them. Technology needs coding to work, but coding has other applications other than technology. But as technology is becoming ever more important in our daily lives, then so is the coding that drives it.
U for Understanding
The following statement is true for every subject: it's not learning the facts and methods that's important, but understanding the fundamental concepts. It is very true for coding too. Coding is a rather abstract subject. Its concepts are not intuitively obvious to us humans. The way computers function, and therefore the way computer programs operate, is very different to how humans think.
This makes a thorough understanding of the fundamentals of coding very important. It's the difference between being able to code and being able to code well.
Analogies come in very useful when trying to understand coding concepts. And this is particularly true when teaching kids.
V for Visualisation
A computer program is centred around data. And often we want to be able to visualise these data in a way that makes it easy for humans to understand. This could be in the form of the graphics of a game—imagine how boring it would be playing a football game just by looking at a long string of numbers representing coordinates and angles and ball speeds or whatever.
The visual side also comes in when creating a front end to a computer program for the user to be able to use the program and input information. This is the graphical user interface, or GUI, of a program. You use these all the time when you're using your computer.
Another area where visualising data is essential is in quantitive applications when graphs and other visual methods of showing relationships between different variables is important. In recent years, the quality of data visualisation has improved a lot, and languages such as Python have several modules that allow programmers to easily create visual representation of data.
W for While Loop
There are four fundamental concepts that form the basis of all of coding. Here we will discuss one of them: loops. And since we're on W, I'll talk about one specific type of loop, the while loop.
A loop in coding is a way of telling the computer to repeat a set of lines of code a number of times. This is something that is extremely useful in coding. A while loop will repeat a block of code until some condition is met. For example, if you have a long list of names and you want to go through the list, one name at a time, and find the first 5 names that start with the letter P, a while loop can be set up that will collect the names that start with P and that will stop once the fifth name has been found.
X for eXciting
We're getting to the tricky part of the alphabet now, so I will cheat. Coding is exciting because there are almost no limits to what you can do when writing a computer program and the sense of achievement a coder gets when the code they wrote does exactly what they want it to do is exhilarating.
Y for Yes
The answer to the question: "Should kids learn how to code?". I'll keep this entry short…
Z for Zoom
The past year has seen a lot of learning move to Zoom or other remote delivery services. With many subjects this has proved a challenge and teaching hasn't been as effective as when done in a classroom. The teaching of coding however has been an exception to this as remote teaching suits the teaching of coding really well.
For a start, coding already requires children to be on a computer so the computer in this case is not an added distraction but an essential tool. The majority of the work is done and displayed either on the teacher's computer screen or on the students' computer screens. In physical rooms, teachers had to walk around the room looking at children's laptop screens to help them out, but the ability to screen share using platforms such as Zoom has made this process a lot more efficient, especially if dual screens are used by an instructor.
In a physical room, the presence of lots of computers with everyone focussed on their own screen hinders communication, but on Zoom communication can indeed be more effective in the context of teaching coding.
Although this is not the case for most other subjects, when it comes to teaching coding, Zoom has been an unexpected ally.
And we've now run out of letters! I could write more, but I'll stop here.