Scratch Progression

KS2 Skills Progression in Scratch (Pupil progression is at the bottom)

There are lots of good ICT skills that you can teach using scratch. You can use the sprite and background creation tool to teach about graphics including both creation and manipulation. However this progression is primarily concerned with programming skills progression. Every programming language enables you to accomplish some things easier than others, which means this progression is limited to Scratch. For example when I teach programming using Python I introduce a simple variable much sooner.

Programming Skill

Scratch Examples

Creating a sequence of instructions that follow each other contained in one block that pupils can easily describe just by reading the blocks or telling you what they do.

A simple set of LOGO instructions contained on one sprite

A conversation between two sprites that uses say or think for x seconds that makes the characters look like they are interacting

(I would add that having taught LOGO using Scratch I think it is easier using more traditional LOGO programs.)

Creating simple blocks of code that pupils can explain in a single sentence that could use repeat loops

When pupils first encounter iteration (repeat loops) it is worth anchoring their understanding in real life examples. You can access some examples here
Forever Loops
Repeat x times loops
Forever if loops

This sprite will move forward forever

This sprite will turn right 15° if the right arrow key is pressed

This sprite will glide/move from one place on screen to another place pointing in the right direction three times.

(Children can use these coordinates and directions in degrees without fully understanding how they work but using them in scratch builds a layer of understanding and possibly more importantly provide a concrete example of why these are important)

There are lots of examples that use this type of level of complexity

Spider Maze is one of these

Create code that uses simple selection

This sprite will ask what 3×3 equals through an input box that the user can type into. If their answer is the same as 9 it will run the code in the if path and say correct. If their answer is not equal to 9 it will run the code in the else path and say incorrect

(This is good for enforcing that equals means the same as not here is the answer)

Create code that uses a simple variable

I always describe variables as being like boxes that the computer stores data in. This data, numbers or text, can be changed by the program which is why it is variable/changeable.

I have used the same quiz example as before but included a variable to record and report the score at the end. If the user gets the answer right their score will be increased by one. Else the score inside the variable will remain zero. The quiz creator doesn’t have to manually calculate what the score is they can just refer back to what is inside the variable to report to the user what the score is so far.

The planning for this quiz is here

Create code that uses multiple variables that interact with each other

This is where the real beauty and elegance of computing comes in. A few blocks of code inside a repeat 10 loop can create a quiz with ten questions that are randomly created and likely to be all different.

This automatic quiz uses two variables called num1 and num2 in which random numbers are placed. A third variable called total has the result of multiplying the randomly generated numbers inside num1 and num2 inside it. The user is then asked the question by being referred to what is inside the variable. Their answer is then compared to what is inside the total variable which contains the result of multiplying num1 and num2.

The planning for this quiz is here


There are lots of other things that Scratch does such as broadcasting code to trigger other code blocks which I would place on a par with if or else selection but before variables in Scratch. However if I was teaching another non block language I would place as more complex than any of the concepts mentioned here.

Pupil Progression in Scratch Coding

Pupils copy simple blocks from code provided

Pupils copy simple blocks from code provided and can explain in their own words what it does.

Pupils are given the blocks they need and use trial and error to combine them to achieve a specific purpose

Pupils add simple extra blocks to existing code to modify the blocks effect. (eg Looks & Sound Blocks)

Pupils reuse blocks of code that they learnt in class within their own similar program.

Pupils combine reused blocks with blocks of their own devising (Most programming is like this)


I was tempted for completeness to include writing all the code of their own devising but almost no programming is like this. We all reuse and adapt existing ideas building on the work of others. Scratch is like this and had a wonderful online community where pupils can adapt other people’s code to make their own creations. At some point pupils should be introduced to the community and shown where they can download Scratch at home. I normally do this in Year 5.

Some pupils in Year 5 & 6 will surpass the level of coding covered here. If the teacher sees themselves as a facilitator and not the source of all knowledge then pupils can be encouraged to continue their learning journey beyond the teachers’ level of skill. These teachers can still facilitate learning with these pupils through good questioning about what they are trying to achieve.

Pupil Progression in Debugging

Debugging is the skill of identifying and fixing errors in your code. It is immensely liberating as it assumes that we will all make mistakes in our programming and that this is normal.

Pupils can independently spot that there is something wrong with their code but couldn’t tell you where in the code the problem is.

Pupils can independently spot that there is something wrong with their code and can identify the block or place where it is wrong but cannot fix it without help.

Pupils can independently spot that there is something wrong with their code and can fix it.


Don’t be too quick to fix pupils coding. Provide a paper copy of code that does work and let them compare the two to spot where their code is different. Praise those who find and fix errors. Debugging stickers, which record their debugging success, are a great idea which encourages independence.