With research from Sue Sentance’s blog and primmportal.com.
The stages of PRIMM make out its acronym:
In the Predict stage, students are given code, and asked to predict its output. This can be done in pairs, and can also be a whole day’s lesson. The code is written by the teacher, and has to be tested ahead of time to eliminate student doubts about syntax or runtime errors. The goal here is to get students to determine the function of a piece of code by looking for clues.
Run is the stage where students test their prediction by running the code. This might involve downloading it to their programming environment. It is meant as a confidence booster, and to take away ownership of errors away from the teacher. While it is possible to copy the code, it is not adviseable, due to typos and time spent typing, especially if the code goes on for dozens of lines.
Investigate could mean code tracing, commenting, flowcharting, labelling concepts or special algorithms, or just answering questions. Working in pairs can help students to work out the details of the code.
The first 3 stages, predict, run, and investigate, could be done many times before students understand the underlying concepts in a secure way. It is not necessarily true that students understand if-else statements or loops after only being shown it once.
In the modify stage, students take a working piece of code and are asked to modify it to do something different. At the start of a course or unit, you should start simply, and progress so that students modify ever larger chunks of code. Transfer of ownership of the code now moves from “not mine” to “partly mine”.
In the make stage, students write the program from scratch. The new program can bear similarites to previous programs. The new program can have similarities to previous programs, but should differ in function, context or problem to solve.
What this allows is scaffolding of learning. Mutual support is had through students working in pairs. This also helps students to articulate particular problems that are going on in the code.