Coding for Kids
Recently I’ve been thinking about the increasing push for children to learn to code.
One thing I’ve been particularly interested in is the reason we’ve suddenly become so interested in coding. The benefits outlined in CAS’ ‘Computer Science: A curriculum for schools’ (.pdf) relate to:
- Economic benefits, which obviously feature large – coding is a skill in strong demand, with potentially high rewards, and some jobs may increasingly benefit from at least a limited grasp of code.
- Problem solving and creativity are also being touted as important reasons though – the argument is that by understanding how to create code to solve some problem, the logical creativity of coding can be instilled in young people.
- Interestingly, digital citizenship is another area where it is suggested that, in a world so governed by computers, computing is increasingly important in order to understand the world around us (e.g. here) - how can we understand privacy, workplaces, our social world and indeed our legal world without such understanding..
Concepts and content - do we need to code to learn the concepts of coding?
But particularly in the case of problem solving, there might be some argument that just like we might not need to use search engines to improve children’s information literacy, we don’t need to use code (or even computers) to teach some of the skills of coding. Certainly some of the ‘coding’ techniques build on this idea – teaching ‘concepts’ indirectly, for example App Inventor (no coding required) or Logo (visual).
In fact, I see some relationship between the Philosophy for Schools movement, and that of coding for kids in their shared desire to instill creative, logical thinking. For this reason I think it’d be interesting to explore the skills that are used in coding, and how we can support these.. In any case, when we’re thinking about the ways these tools are used, I think we can probably think of a hierarchy:
- Instrumental – use of tools to ends (use of ‘clickers’ for in-class voting, VLEs as a virtual file store, etc..)
- Familiarity – with the array of tech, and what it can do. Tech is used to enrich the teaching of content but not in any conceptually interesting ways – the tech is the driver. E.g. use of technologies to display novel multimedia illustrating some subject content.
- Concept + content – Teaching computing ‘concepts’ is used to enrich the teaching of content. For example, learning about scrapers (automated collection of data from webpages/apis, etc. see e.g. https://scraperwiki.com/about/) as a way to think about how our access to data might be different to historic access and the implications of that for history. The tech is a novel tool and some deeper understanding of how it could be used is required, and it enriches thinking about some content area.
- Concepts – the concepts of tech are taught for their own sake in fairly abstract ways.
So there are a few things of importance here –
We need to make sure ‘computing’ doesn’t just become about creating pre-defined products, being able to follow a manual, or use some tool. Too much of the curriculum is already like that, I don’t think coding is the only way to overcome this, but it should be one of them.
We can use the subject content of lots of different domains to teach tech stuff, from showing what the tools can do, to thinking about new uses for tools (and hopefully designing some of these) - it draws in new people, demystifies the area, and can provide an interactive and problem solving basis for learning across the curriculum.
We can also probably teach some tech concepts via non-tech based material (or enrich the teaching of the concepts by doing so), real life examples - from computing situations and not - are important, but so too are learning problem solving skills, philosophy for children, and so on.
So the issue isn’t so much thinking about coding, as in routines, but people being familiar enough with code that it doesn’t scare them, and understanding it enough that they understand how it can solve problems, and hopefully so that most people can do some sort of hack (quick and dirty as it may be) to get some data or solve some glitch or whatever. I do think that aspects of computer science have potential to help children think in creative and logical ways. However, what we don’t want to do is just introduce a new subject - into an already packed curriculum - which just looks like all the other subjects. Instead, we ought to be thinking about how to re-conceptualise the ways we’re building our curricula, and how we can ensure the highest levels of learning are consistent across those. Lots of schools are trying to do this (I spent this morning observing a group of teachers working on creating a STEM curriculum for Y3-5), and the work they’re doing should be explored with an aim to share best practice.
In any case, I’ve taken up a temporary role as a Teaching Associate on a project working on Open Educational Resources (ORBIT), as a result of which I’ve started trying to compile a list of initiatives to teach children to code (specifically ones with lesson plans/resources, rather than just tutorials). That list is here:
My thanks for most of the resources listed there go to a great group of people working in this area - particularly those working on Raspberry Pi who I’ve spoken to, and the people who replied to my thread on the ALT discussion list.