A continuum of scaffolding: from copying code to tinkering

Jane Waite, of King’s College London & Queen Mary University of London, is researching ways of teaching programming, with the ultimate goal of supporting primary teachers teaching programming. In this post Jane describes a continuum of programming that she uses in training with primary teachers (CAS London run a number of Diving Deep courses in primary pedagogy). Jane says:

Whilst undertaking literature reviews over the last couple of years I have started to formulate a model. This is a model of how programming activities in primary classes might be scaffolded. By scaffolding I mean how teachers (or an automated learning system) might guide and control learners’ tasks and activities. It is a very simple model, just a linear continuum of different instructional approaches. Some research has mentioned blended approaches already and this model builds upon this work, providing some examples to flesh out the idea.

Approaches for teaching programmingI have been sharing the continuum of scaffolding in teacher training events since mid-2017. I usually introduce the model by giving delegates, in pairs, a set of programming activity descriptions on small cards. I ask them to order the cards from most scaffolded to least scaffolded. Example tasks are ‘copy some pre-created code’, ‘explore 3 scratch commands’, ‘fix some buggy code’, ‘do an unplugged activity explaining repetition’. This really gets the educators talking about what the different tasks are and how much support is provided to pupils. I then reveal the continuum of scaffolding and we discuss.

All the continuum provides is vocabulary. I don’t think the continuum is perfect in its linear representation of scaffolding. There is usually hot debate on whether guided exploration should be a targeted task and within Projects there is a further set of ‘stages’. In some training events teachers use the continuum to review their lesson planning. In other sessions, I use the continuum to situate training activities.

The main aim is to exemplify a whole range of instructional techniques, pedagogies, for teaching programming, to reveal there is not just copy code tutorials or unguided tinkering. My objective is to provide teachers with a shared understanding of different approaches available to them.  This then means they can compare lesson and unit plans and start to become more discerning consumers of CPD and lesson resources and perhaps more confident and effective producers of such material.

I have not yet completed studies to investigate the completeness or effectiveness of the continuum model, but I have started the process. In my running of primary teacher training I have been including the continuum and I will be investigating teacher perceptions through surveys and interviews. As part of my PhD, I will be writing up the underlying sources of each of the instructional approaches included in the model and outlining evidence from literature of these approaches.

Below is a little more detail about each of the techniques and approaches within continuum. Please remember this is not an exhaustive list of techniques and that the model is not perfect. The model is a starting point to promote discussion within teacher training events and give teachers terminology to review their teaching.

 

  1. Copy code. This technique is where pupils are given a set of instructions to follow to create a program. The program was thought of, designed and coded by someone else, pupils are now re-creating it. Learners are required to follow a set of instructions, line by line. This might be through an online teaching product or might be a printed set of instructions. Sometimes this approach is called a tutorial approach.
  2. Targeted tasks. There are many targeted tasks that teach specific concepts or address particular misconceptions. Often such tasks are aimed at getting children to read and understand code. If learners are online there is the temptation to run code before you have read it, so these activities may use printed code snippets. An example activity might be to give learners a program and asks them to summarize what the code will do, or to trace the code line by line. Simply put, tracing is where you say exactly what each command will make happen when it runs. In both of these scenarios, learners are predicting what the code will do. Other targeted tasks might be to spot the difference between code snippets, remix code to achieve a particular outcome and fixing buggy code. Targeted tasks also include unplugged activities, such as playing a game with a score to learn about variables, or calling out lines in a poem to find out about the broadcast command for Scratch.
  3. Shared programming. This method is very similar to shared writing, where the teacher knows what they want to teach and is showing pupils not only what the finished product looks like but is also explaining the making process and their thought process.  It could be that teachers or pupils deliver the demonstration. It could be that the teacher takes ideas from pupils as they are demonstrating to create a ‘class’ version of the program. This form of apprenticeship might also be used in small groups or on a 1:1 basis.
  4. Guided exploration. Here learners are provided with just 2 or 3 commands that they must explore. The teacher has an idea in mind of what they want children to learn. But rather than telling them what the commands do, they ask children to find out. Teachers might include some questions to nudge children along to get to the objective of the task.
  5. Projects (use/imitate/remix/new/share). Here pupils are required to create a project of some kind. There are lots of different ways to run projects as well as different ways to scaffold learning in projects. In literacy, some teachers follow a progression that scaffolds learning to write texts. At first pupils read lots of examples of the genre of text they are going to create. Then they create an imitation of an example text. Next, they create a variation of the text. Finally, they get to inventing a brand-new version.  In programming projects, we could do the same, start with children using example projects. Next, they could create a project that imitates a high-quality exemplar. Then have projects where we are remixing ideas, algorithms and code examples. With an end goal of learners independently creating a brand-new program. This development of independence might span years of different projects across different programming genres.
  6. Tinkering. This technique requires pupils to play. They are given access to a programming environment and perhaps some hardware too and asked to explore and play.

This list of approaches is by no means exhaustive and the techniques are not distinct. When running a project, you might include a little copy code to get children to accomplish one tricky thing that you plan to later teach through guided exploration or targeted tasks. Or you might develop children’s curiosity and emerging understanding of a new programming language with some tinkering before demonstrating certain features and moving on to a ‘remix’ project.

Here I have not commented on the impact nor effectiveness of the approaches outlined. There is limited research to tell us which techniques are best for primary pupils for particular concepts, tasks or phases of learning.  My intention is to create a simple starting point, engage with teachers in exploring this, refine and make recommendations for other to build upon.