What is Computing?
On Twitter recently I had seen a post where a teacher was dispairing at teaching computing. I shared my view that it is my favourite subject to teach, explaining in much of the same terms I am now. But it got me thinking about how computing is taught in schools up and down the country and it’s largely the same everywhere, with some very obvious exceptions.
I have been a computing lead for the last 3 years and it is no secret that I am very passionate about computing and its ability to transform lessons, education, and outcomes.
Let me be clear though, computing as a subject is not about computers. Suddenly, I can hear the cries, the confusion, and the anger. Popular or unpopular as this opinion might be, it is mine and mine alone (unless you count the research backing it up). Computing is about thinking. It is about teaching children how to become effective problem solvers and strategists. These are incredibly key skills that are needed for every single aspect of life. Allow me to demonstrate:
The timetable below is a timetable from a high school (random google search).
You are getting ready and need to pack your bag. It's Tuesday, how do you determine what you need to bring?
The first thing you begin to do is abstract the irrelevant information, I only need to look at Tuesday so I ignore everything else.
Then you begin to decompose the day into its smaller parts to help you identify what you need a lesson at a time.
Diary/Planner Textbook/Folder Protractor/Calculator Snack
Then you begin to reason about what you would need and why thinking logically about each subject.
Finally, you begin to sequence your day, by placing your equipment in lessons at a time… at least in an ideal world, that's what you would be thinking and doing. This is of course a simplified analogy of the process that might be going on in a student's head. We all though think differently, however, if we could somehow teach these computational thinking skills, perhaps this thinking would become easier for some.
Now, this is a very singular example of a specific instance. However, this is everyday life and I think this is far more important to teach children rather than showing them a set of Scratch blocks and asking them to put them in order (which don’t get me wrong there is merit in also).
For me the place I will always start is to think of a problem, age-appropriate, that needs solving. It could be a simple question that we’re all very familiar with… How do I make a jam sandwich? Or How do we brush our teeth?
But this is where the learning has to be very clear. I have seen several examples over the years of teachers trying to recreate the ‘jam sandwich’ lesson and falling flat. Often children will think “we are learning how to make a jam sandwich.” When really the children should be learning how to create clear unambiguous instructions, and yes one hundred per cent would share that work UNAMBIGUOUS with year 1.
So if we are starting with a problem to introduce a concept what is the actual concept?
Algorithms
So what is an algorithm and why do children need to know it? Algorithms have a few different definitions but the most simplistic I think is this:
‘a simple and unambiguous sequence of instructions to solve a problem or make rules.’
Algorithms weave in and out of the primary curriculum in different disguises and it’s a sign that the word isn’t used in other subjects like maths, English, science, or humanities. Now children will have been dealing with algorithms since they are toddlers, being shown how to brush their teeth, and use a cup or cutlery. This is why it’s a key ‘computational thinking’ skill.
In primary school, however, children really need to make the connection that it is the art of creating simple instructions that are clear and concise. Ideally, you would be sharing recipes, instructional videos, or Lego building cards. Showing and immersing children in various forms of instructions as you would in English. You would also be continually making the link that instructional writing in English is no different, particularly at KS1 (Key Stage 1).
I personally think computing is usually taught better in KS1 or Early Years. I think this because learning is almost always taught using the concept first (more on that later).
But why do children need to know what an algorithm is, you ask? Well, it’s simple, the world is complicated. With a myriad of problems that need solving in a multitude of different ways, so we teach our children how to. Using the tools most effective for the job. Just like the timetable analogy above, there are so many ways this skill is applied in reality: getting up and organising oneself in the morning; tidying and organising toys; travelling from one place to another, or making lunch or dinner.
Without helping children make the connection between good instructions or rules and how they can create them, how can we expect them to do it successfully themselves? I always tell my classes that great instruction writing is an art. They need to be so clear, so unambiguous that anyone can pick them up and follow them without any help or further clarification.
Sequence
This next section may upset some - Ofsted, computing leads, etc. But stay with me.
Firstly, the connection to algorithms is simple, instructions need to follow a sequence from beginning to end. You can start baking a cake by pouring the batter into the tin. The process of sequencing is incredibly important again for everything. However, some children find it incredibly difficult to sequence events or tasks. Visual timetables are great to enhance the importance of sequence, the children will likely have seen it regularly and if you mixed up a typical day using the visual timetable and got children to resequence it, it would be a clear activity to show the importance of sequencing.
Secondly, subject leads, Ofsted, and headteachers love progression. I am guilty of this too and I think it’s the nature of our education system, but progression in computing might not always be so linear or sequential. Children don’t learn in straight lines. Children learn in spirals, circles, and broken laps.
I am a huge fan of research and have continually advocated in favour of using a PRIMM approach which you can find out a little more about it here this was a session I delivered as part of the CAS virtual conference that focussed on using the strategy to teach computing at primary. I find this a great tool to help scaffold and support the teaching of programs. It is progressive in terms of the skills that you would be covering and helps to support when unpacking key concepts.
The main thing to consider in terms of sequencing lessons and your curriculum across the school is this: do the children revisit a skill or concept? Can the children use a skill they have previously learned? Are the children building on and progressing in their understanding of a skill or concept?
If you can answer yes to these questions then your curriculum and lessons are considering the children's computational thinking skills rather than just throwing together a few lessons. The key is thinking before you start your planning;
Where will I start?
What is happening in my learning episodes to get the children to the end outcome?
Where will the children end up?
How will I know?
Obviously, for experienced teachers, these are questions we constantly ask ourselves, all the time.
Repetition
Repetition or loops is a key concept for computing, but again this fits very clearly with a child's ability to think computationally. The key question is simple, why do we use repetition? Whether in life or in programming. In computer science the simplified explanation is that we want to improve or refine our programs or code, so employ repetition to do this.
To develop this concept first with the children we would look at examples in everyday life. Looking at instructions to draw shapes or water plants etc. If I wanted to tell someone to water my plants each day I wouldn’t tell them to water them on Monday, Tuesday, etc. I can just say repeat daily. It's a shorthand to make our instructions or algorithms more precise and specific.
Children will have already developed an understanding of repetition in their daily lives and routines from as young as nursery, yet it's not specifically mentioned in the Primary Curriculum until KS2. However, as I have mentioned time and time again, computing is about thinking. We want the children to leave primary school being successful problem solvers. Can they think logically about a problem and employ repetition to solve it quicker or easier etc.
Computational Thinking
I touched briefly on the importance of computational thinking earlier, however, I want to go into a little more detail below. As I have said before computational thinking is teaching children how to think. There are a few different opinions on what these look like, however, the general consensus is that there are four key concepts when considering computational thinking.
Decomposition
Decomposition is where children demonstrate the ability to take problems apart and break them into smaller pieces. This makes the information more manageable to solve problems. When we consider decomposition in more depth we soon realise it's interwoven between the entire curriculum, not just the computing curriculum.
The main thing we want to focus on here is helping children to unpack this concept. Giving children a complex problem, whether that be a recipe for a cake or instructions to build a lego kit. We use decomposition in recipes by breaking them down into simple steps to follow or in Lego kits decomposition would be the example of turning page after to build the construction. Not all children can see a problem in its steps and that's why it's important to teach this skill. I would teach your standard concept first computing but using this skill at each point. Making it obvious to children that you need this all of the time.
Pattern Recognition
Pattern recognition is incredibly important, it allows children to see repeating sequences Which they can then use to solve problems quicker or in a more precise and elegant way. The most obvious curriculum connection (outside of computing) to pattern recognition is in maths. However, we use pattern recognition in almost every curriculum subject. In English, we use grammar patterns to work out the phrases or clauses used with certain adjectives. In Science, we teach children to spot patterns in life and data, particularly when conducting experiments.
Again, dependent on the concept in computing you’re teaching children will need to be shown that they have to constantly look for patterns. How else can they see ways to refine their programs or thinking to become more elegant if they can spot any pattern to be repeated.
Abstraction
If we think about the etymology and the definition of the word abstraction, we will quickly figure out how we can use the skill. To abstract means to ‘pull away from’. We are pulling meaning from a complex problem essentially. When we look at bus timetables or word problems we normally just look for our time or the keywords. This is an abstraction in action. It is happening constantly. We need to be able to look past the complexity of things to find the problem to then solve it.
If I had written a sequence of code and there was an error. I need to be able to quickly distinguish what the error is. Children in KS1 are encouraged to debug their programs in the computing curriculum. This could be taught by teaching children how to read simple maps and looking for just key cities or locations. This isn’t ‘programming or coding’ but it is teaching children to think and helping them develop their thinking further.
Algorithmic Design
Here we are talking clearly about the design of a sequence of instructions. Children are constantly following instructions and we expect them to just understand how to do it. The best teachers I see teach children how to follow instructions. They keep them simple, which is an excellent algorithmic design; they break them down; decompose them into more manageable chunks and then ask children to recall them back and refer to the similarities between other tasks, pattern recognition. So personally I believe that algorithmic design encompasses the other three computational thinking skills.
We want children to understand that not all instructions are created equally. Some are clunky and aren't great while others, the target, are elegant and simple. Simple instructions are not easy. They are hard, one thing ‘Home Learning’ has taught us is that instructions are a fluid concept. Some children get what you meant, others have missed the point entirely and despite what you might think they are not the problem. The problem is you and the lack of elegance in your instructions.
I appreciate that I have been using the word elegance a lot to describe instructions. I want to be clear that I mean the elegance of simplicity - the quality of being pleasingly ingenious and simple; neatness. If your instructions are simple and neat, they are elegant.
Semantic Waves
I love a bit of research. I think if there is a body of work or research that backs up the way in which we should be doing something with solid hard evidence then it can't be sniffed at. I recently had a great and long discussion with Jane Waite, this was about 'semantic waves'. Essentially in a very oversimplified nutshell, semantic waves are a mapping of the journey from novice to expert.
I am no expert in semantic waves, however, I am intrigued by their application and how they can be used to help educators map out the learning journey. I also like the idea of children being involved in this, I can see the potential for children being able to plot on the wave where they are on their journey, etc. However, I am not going to try and regurgitate information inaccurately. The document below offers a great summary.
For me and this may have already been said by someone wiser, It reminds me of the Concrete, Pictorial, and Abstract (CPA) model that most teachers, I assume will be used in maths teaching. I had adapted the CPA model for computing a few years ago, this is by no means an original thought by the way, and this is laid out a bit more on this section of my website. But from me, concrete is your unplugged lessons. Pictorial is using printed blocks or using pseudocode and abstract is using scratch or text-based languages.
PRIMM
I am a huge fan of PRIMM and you can see a little about how I apply it to our computing lessons in school as well as our progression. This along with code reading are essential bits of research for a teacher who is looking to develop their programming or computer science understanding. I also believe it is a perfect model to support children in unpacking and understanding complex concepts in programming.
It was when I had heard Sue Sentence discuss the importance of comprehension in reading and understanding 'code' that it struck me. She made the very obvious point that programming and coding use a variety of languages. We wouldn't just tell children to write a story without teaching them the grammar or syntax involved. So why as teachers do we often dive straight in and expect the kids to understand the language of code.
I used it both in my lessons, how I as a subject lead structure progression, and when I teach a variety of other subjects. I think it lends itself quite nicely to English, Science or even maths. Below is another amazing 'Pedagogy Quick Read' that will offer a more educated definition than I.
Coding or Programming
I despise the word coding. Purely for its misuse in the primary curriculum. Not once is coding mentioned in the primary curriculum yet people ask me all the time "what we should be using in coding?" or 'today children we will be coding'. I found this model a few years ago and it accurately sums up the process involved in computing lessons.
Coding is involved but it is a very, very small part of the process. For some reason, though it has become a strange entity that most schools focus on. So to dispel this I want to be clear before I start. When children use Scratch or any other program they are programming or developing a program. The code is within the program.
In the above picture, what I really like is that it follows a clear cycle, the problem isn't just solved. There is no such thing as a perfect program, hence why we have iOS 14.2, 14.3, or 14.4, etc.
There are some key questions I get asked all the time and a few have been asked on Twitter or on CPD I have run, so I thought I would try to answer them here.. Below are my most used programming tools or sites.
In KS1 my two must-have programs are Scratch Jr and Code Spark Academy. Both allow for simple directional-based programs in a creative way. My only word of caution is that in CodeSpark the functionality has a gamified option. I think working through these levels is fine for practice and embedding skills, however, I would definitely choose the more creative story programming feature.
How would I use Scratch Jr?
Scratch Jr. is an incredible little piece of software that can be used right from Year 1 and I would still argue all the way to Year 6. I have used it in years 3, 4, 5, and 6! I love the simplicity of the software and I love that it can be complex if you choose for it to be. I have added a few little videos of how we have used it below but definitely recommend getting to grips with it and carving out a bit of time for yourself to have a play and look through it. Plus you can access printable Scratch blocks which are great for unplugged pictorial programming, you can see an image of mine below. It's a bit of a task to print and laminate them all at the beginning, but once it's done, it's done. Click on the image below to access the link to download printable blocks.
This is an example of what you can do if you use Scratch Jr in Y3. Now, this was a very simple series of lessons that focussed on using Scratch Jr as a way of displaying knowledge of a science unit.
Why fill out a worksheet when you can get problem-solving and design a program that displays your knowledge.
There is also a fantastic emulator that you can download for windows and macs and it allows you to run the Scratch Jr interface on a PC or Mac. I love this because it means you can demonstrate on the big screen even if you don't have airplay and if you aren't an iPad school it means you have the option to include it into your progression too. Click on the picture below to take you to the emulator site.
The Drawbacks
Thankfully, there aren't many. I honestly love it and think that once it's done right it is a great stepping stone to programming with more complex blocks. The only thing that I have experienced is that the up arrow confuses some of the younger children as they think it means jump as opposed to upon the Y-axis.
codespark.com
How would I use CodeSpark?
There Are a few things to consider as I said. One of the reasons I love this site/app is that it is free for educators. One of the other reasons is that it has a selection of unplugged activities lessons and worksheets, that if you're clever, can be adapted and extended to increase the level at which children are learning unplugged concepts.
The other reason is that it offers a friendly and fun environment for the children to practice programming concepts. It's great as a teacher because again you can track the children's levels and how they are doing.
The Drawbacks
There is always the danger that children will either move ahead too quickly and unaided by you and therefore embed misconceptions or not understand entirely. In my NQT year, a teacher once told me I MUST do the maths before teaching a lesson. This is very obvious advice I know, but I like to use this nugget of wisdom when talking about computing and programming. Children can of course and some will most likely be experts beyond your understanding. However, you need to do the programming, you need to design the algorithm and complete the steps so you can account for bugs or pitfalls that arise prior to the lesson.
I would also ensure that you are making the children go back and complete each level by getting 3 stars (you will see when you play). The year 2 team at my school was very successful at doing this. The children would get 3 stars on each level when they complete it in the most elegant or refined way.
In KS2 there are a huge number of digital programming platforms. There are some that charge and some that in reality in primary aren't fit and have a steep learning curve... you know who you are text-based platform. So I picked my two favourites, they're both block-based but one has the option to switch to a text-based interface.
How would I use Makecode?
I first discovered Makecode after we had taken the plunge and bought MicroBits for school, which if you haven't already got, I suggest you do. We use the Microbit app which is simple and elegant. The makeCode blocks are perfect because they are similar in design and colour to the Scratch blocks but for Y6 and transitioning into a text-based language you can simply toggle or select Python or Javascript. This is great to help the children explore other programming languages and build an understanding of the complexities of different programming languages.
One of the other major reasons I love this app/site is the Minecraft and Arcade features. The kids love the Minecraft lessons and it really engages them. I love the arcade section and all other retro enthusiasts will love it too.
The Drawbacks
They are very few in my opinion. It works on iPads and tablets, albeit there isn't a dedicated app (other than the Microbit app). I love that there is a curriculum packed full of incredible resources and unplugged ideas. In the 2 years have been using it, so much has been added and updated so I definitely recommend getting started with Maekcode.
scratch.mit.edu
How would I use Scratch?
I am not going to spend a huge amount of time on this section. It is by far the 'go-to' site for programming in primary school. I think the resources available for Scratch are alone worthy of a page in itself which I will most certainly try to compile. Leading a code club for years I had already realised how incredible Scratch could be. Then along came Scratch 3.0 which totally revolutionised everything. It has a Google translate function, you can use phones, tablets, and the works.
I have used it to create cross-curricular projects like this one here. This is very similar to the earlier video of the life cycle of a flowering plant but this is Y5 and it is using Scratch 3.0. For such a long time I had hated the lack of support from Scratch on iOS devices. Then this marvel drops from the sky.
The Drawbacks
There are a few. although Scratch is definitely an incredibly powerful and versatile website, its downfall, in my opinion, is the sheer volume of the resources out there that it can be tricky to know where to start. There are so many options and so many things you can achieve it can be hard to know where to start or end.
I think the key for me and the advice I always give is to keep it simple. If your class needs to design and complete an algorithm that incorporates sequence in its simplest form... then build from there. DO NOT try to reinvent the wheel.
So thinking ahead, this was intended to be a blog post. It suddenly developed into the ramblings of a man passionate about computing. I have much, much more to add but felt it necessary to get this off my chest and go. Next, I will look at the sequence of lessons and assessments. How are we going to continually assess these children?
The answer...? Computational Thinking, justifying their reason and why they want to come out.
I hope this has been useful for some, feel free to @ me on Twitter or send me an email if you'd like to discuss it further.
Karl (MRMICT)