What is PRIMM?

The PRIMM method is an approach to planning programming lessons and activities and includes the following stages:

  • Predict
  • Run
  • Investigate
  • Modify
  • Make

These stages are used in planning lessons and activities and are designed to support learners at all stages of learning programming in school, not just complete beginners.

For more up-to-date information on PRIMM, go to

There are two blog posts on this site about PRIMM that describe the thinking behind this approach:

1st September 2017 – PRIMM: A structured approach to teaching programming

20th February 2017 – Exploring pedagogies for teaching programming in school

Why might this be useful?

Many teachers are able to recognise that students can find programming difficult and they can identify the stages that novice school-aged programmers go through in developing skills. However, it is not as easy to specify a particular teaching strategy that will support learners in gaining confidence and a deep understanding of programming concepts. A substantial body of research has identified that reading and tracing code is useful in understanding how program code actually works (and before writing), and other research has focused on adapting existing code to support developing problem-solving skills prepare students for ownership of (and resultant responsibility for) code. Another strand of research is around moving between different levels of abstraction when programming. By recommending a PRIMM approach, we are combining these three research contributions to develop guidelines for teachers that support student learning.

Where does this fit in to computer science pedagogy research?

My slides on strategies for teaching programming (updated for 6th July CAS SE Conference) are here.


One thought on “PRIMM

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s