Using the PRIMM approach at primary level

By Phil Bagge. Posted

In the Toy Giveaway project, pupils are supported to move from Modify to Make by adding to an existing project template

Phil Bagge shares how he implemented the PRIMM approach with his primary school pupils and the impact this had on their knowledge, creativity, and code comprehension

PRIMM stands for Predict-Run-Investigate-Modify-Make. It is an approach that helps teachers to structure lessons in programming, with each step representing different stages of a lesson or series of lessons. Much as young children learn to read before they write, PRIMM calls for students to read, explore, and understand code before taking ownership of programs and writing their own. It also fosters dialogue in the computing classroom, with students encouraged to discuss programmes and work on them collaboratively.

The clear steps involved in PRIMM make it particularly useful for teachers who are new to teaching programming. It can also be very helpful for teachers whose students are struggling to understand a particular concept. The approach has already been used by many primary and secondary educators around the world. A study in 2018 with 500 learners aged 11–14 showed improved learning outcomes after 8–12 weeks of programming lessons using PRIMM.

In this article, I will share how I implemented the PRIMM approach with my primary school pupils, and some of the key things I have learnt from the experience. I will go through how I applied each step of the process in my teaching, and how the pupils responded to the different activities involved in each step. I have also created some of my own resources, inspired by the PRIMM approach, which I hope will be useful for primary teachers.


In my experience, when teachers are introducing a new programming concept, for example indefinite loops or conditional selection, the first step will be for them to spend time with their pupils ensuring that they understand these concepts away from the computer. This may involve making links with any existing knowledge, or role playing. 

The next step will be for the pupils to look at some carefully selected code on paper which uses the new concept, and predict what they think it will do. With my own learners, this prediction has taken the form of a drawing, a summary of what the code does, or an exercise to match the code to a well-prepared teacher summary of what it does. I make this activity low-stakes: it is OK for pupils to get their prediction wrong or partially wrong — especially if they can see why it went wrong in the next stage.

Predicting is a great activity for pupils to do individually, or to work through with a partner of a similar skill level. What I especially like about this step is that it encourages pupils to focus on the wider purpose of the code before going deeper.

A Year 4 pupil's predictions


Running block-based code examples gives pupils a chance to see whether their predictions were correct. It also gives them time to explore aspects that might not have been included in the paper prediction because of a lack of space. I encourage my pupils to click on individual scripts and run them on their own — this allows them to look for examples of the concept we introduced in the beginning. I find that this step is a great opportunity for pupils to enjoy the program and appreciate its cleverness, which they are probably now beginning to comprehend.


This is the stage at which pupils get to think really deeply about the code. PRIMM builds and draws on other approaches in computing education, including the Use-Modify-Create progression. When first experimenting with Use-Modify-Create, I took the Use step quite literally and asked pupils to use the code without any stipulation, question, or instruction. The most skilled programmers and those who were good at asking questions got something out of the exercise, but the vast majority of pupils made no attempt to read the code carefully or define their own questions. It was not until I considered Use-Modify-Create with PRIMM in mind that I realised that using code needs to involve more than just running it, with the Investigate stage guided by the teacher. I have found that most pupils will not investigate the code carefully without some input and guidance.

In her recent Hello World article, The I in PRIMM, the developer of PRIMM, Sue Sentance, explored the Investigate phase of the approach in depth. In the article, she outlines how the Block Model framework can help pupils to get the most from the Investigate phase by supporting them to thoroughly understand a program. 

When asking my pupils to investigate their code, I regularly include the following questions:

  • How is the newly introduced programming concept being used?

  • Can they spot where initialisation has been used, in order to ensure code always operates in the same way, however many times it is run?

  • Are they revising concepts covered in previous modules?

  • Can they explore the flow of control?

I have found that pupils now work much harder in the lessons than I do. This frees me up to work with pairs who are struggling. 

I regularly provide reading support if we are using a paper copy of the questions provided in my Investigate and Modify resources, but now that we are using Google Classroom, there are Chrome extensions that will read highlighted text. This allows me even more time for formative assessment.

Drawing the flow of control


In my experience, many pupils are risk-averse and do not like to attempt things if they are not sure what the outcome will be. Code modification helps pupils to experiment in a safe and structured way. It is a step towards building code creatively, using what is already to hand. Teachers can support pupils to become more creative by asking careful questions which gradually increase in complexity. This aligns with the concept of the zone of proximal development, whereby a teacher can progress a pupil’s knowledge by supporting them through a task that is slightly above their current skill level.

I have found that self-marking the Investigate and Modify phases is an important part of the learning experience for pupils. For both steps, I ask pupils to show me their work if they have got over half of the questions wrong. I always start by asking pupils to tell me about a question they got wrong, to see if they now understand it after they have seen the answer. The vast majority of pupils can describe exactly why their answer is wrong, which leads me to conclude that self-marking is a really important part of the process. 

Asking questions in the Modify phase encourages pupils to understand and learn from their mistakes


Sue Sentance identified in her Key Stage 3 (ages 11–14) research that moving from Modify to Make can potentially be difficult. I have found the same for Key Stage 2 (ages 7–11) pupils. In my experience, two successful ways to get around this have been to expand the scope and complexity of the Modify challenges, and to give easier initial Make challenges that involve adding things to the existing project studied. In the Toy Giveaway project (article image), which introduces count-controlled loops, pupils study animated toys that move, change costumes, and so on. For my pupils, a very successful initial Make project is to add another toy to the table and program it using a count-controlled loop. Adding to the template project means that all the code examples that pupils worked with, and thought deeply about, are only a click away.

When I asked them about it, my pupils identified that one of the reasons that they enjoyed using code comprehension methods was that they always felt that they got to make something themselves. Protecting this has been important. If pupils are working slowly and it becomes obvious that they might not get time to make something creative, I typically reduce the number of questions to ensure that everyone gets to the Make stage.

Final thoughts

Among my pupils, code comprehension methods such as PRIMM have not always been successful in their first few weeks of learning Scratch. I think this is because at that stage, they do not have enough knowledge of the programming environment to investigate or modify code independently. However, once pupils have good knowledge of the programming environment, PRIMM is a fantastic strategy for developing pupil knowledge and agency in the primary classroom, and one that reduces teacher workload for non-specialist teachers.

Code-it Resources

The original research for PRIMM is based on text-based programming at Key Stage 3, but I was so impressed by the initial trials of this methodology in Key Stage 2 that I created a detailed free curriculum for primary schools, which draws from the PRIMM approach.

Many educators from around the world try out my resources and record short sound files saying what worked, what pupils struggled with, and how they have adapted the planning. I really value these. If you use these resources, please get in touch.

Further reading

  1. Sentance, S., Waite, J., & Kallia, M. (2019) Teaching computer programming with PRIMM: a sociocultural perspective. Computer Science Education 29 (2–3), pp.136–176

  2. Teach Computing Quick Read on PRIMM

  3. PRIMM: Something for your programming pedagogy toolkit? Sue Sentance, Hello World issue 4, pp.62-63

  4. Reusing familiar techniques. Jane Waite, Hello World issue 6, pp.74-75

  5. An overview of PRIMM


Free - UK only

If you’re a UK-based teacher, volunteer, librarian or something in between, we'll send each issue free to your door.



Just want to read the free PDF? Get each new issue delivered straight to your inbox. No fuss and no spam.


From £6

If you are UK-based but not involved in education, you can get hard copies by buying back issues.