I came across the PRIMM model in a Twitter chat and what I really like about it is that it gives a framework to practices that many teachers might instinctively have been doing.
Sue Sentence argues that there are several reasons why some students find programming difficult to grasp such as the difficulty of combining understanding the syntax of a programming language with the need to work out logical solutions, the amount of errors and copying code without understanding its meaning.
To counter some of these she developed the PRIMM approach to teaching programming. Following the approach, teachers can structure programming lessons with five elements: Predict, Run, Investigate, Modify, and Make.
- Predict Students discuss a program and predict what it might do, drawing or writing out what they think will be the output. At this level, the focus is on the function of the code.
- Run Students run the program so that they can test their prediction and discuss in class.
- Investigate The teacher provides a range of activities to explore the structure of the code; this involves activities such as tracing, explaining, annotating, and debugging. (See the article in Hello World.)
- Modify Students edit the program to change its functionality via a sequence of increasingly challenging exercises; the transfer of ownership moves from the code being ‘not mine’ to ‘partly mine’ as students gain confidence by extending the function of the code.
- Make Students design a new program that uses the same structures but solves a new problem (e.g. has a new function).
The Raspberry Pi Organisation recently did an online seminar on the topic.
If you would like to read more, then she has also written two papers on the subject and continues to research the area:
- Teaching computer programming with PRIMM: a sociocultural perspective
- Teachers’ Experiences of using PRIMM to Teach Programming in School
Please share your thoughts on her model in the comments.