Applying evidence-based practices to secondary programming resources

25 February 2020

This week saw the launch of two Year 7 programming units for the NCCE Resource Repository. We’re very excited that they will be the first of many programming units to appear on the Resource Repository, and want to explain the thinking behind these units.

Our aim has been to make these units an essential resource, built upon a mix of classroom experience and research evidence.


Our starting point for discussion was to think about what programming skills learners may have before they start secondary school. This was discussed with experts from computing education at a programming workshop in August 2019, and there was a fairly unanimous answer. We all agreed that at this stage in the development of the subject in England, we can’t make assumptions about Year 7 pupils’ pre-existing programming knowledge. However, it is also important for lessons to challenge learners who already have programming experience, which makes creating resources a complicated task.

The springboard

We want to make Year 7 an opportunity for all learners to develop a core level of programming skills, which will act as a springboard for them to develop their understanding in Year 8 and beyond. If we are successful, both Year 8 teachers and the resources we are developing can start to make assumptions about the skills that learners already have, prior to starting a new unit.

What do we want learners to know by Year 8?

We developed a list of what we believe to be a core set of programming skills that should belong to all learners by the end of Year 7. Without listing them all, it included: sequencing, selection, iteration, lists, and more. Our next challenge was to arrange these in a meaningful way over two units of work (twelve lessons).

If you have looked at any of the live units on the NCCE website, you will see that each unit has a learning graph; this tool enables us to map out a pathway of progression that learners could take throughout the twelve lessons.

Creating the learning graph helped us work out and prioritise the objectives. For example, there is often a debate about whether selection should be taught before or after iteration. When planning the learning graph, it became clear that an understanding of operators, expressions, and conditions, was a prerequisite for both topics, but that there was no particular 'right' order to teach the two.

Why Scratch?

The twelve lessons across the two units are all written to be delivered using Scratch. We believe that Scratch is the perfect environment for transition units, as it allows learners with some previous programming experience to feel a sense of familiarity, but it also removes a lot of the known barriers to successful coding that can be encountered if thrown into high level text-based languages such as Python. We know that the Scratch environment is more appealing visually, but we also know that the instructions are provided for them and therefore the cognitive load to the learners is reduced as they don’t need to memorise or copy commands from the board or a worksheet. There is no chance of syntax errors that come with off-putting error messages. Despite the fact that the commands are provided for them, Scratch is a low-barrier, high-ceiling programming environment that has very few limitations for a Year 7 learner. Even learners that believe they have ‘done’ Scratch will benefit from our materials which aim to develop a deeper and more secure understanding of the concepts.


While writing these lessons, we used current research to ensure the unit followed the best pedagogical practices for teaching programming. We used a mix of pedagogical approaches, including: use, modify, create; pair programming; Parson’s Problems; PRIMM; worked examples; Unplugged; tracing; and live coding.

No single approach was favoured above another. As with all subjects and all lessons, it’s a case of selecting the approach that best fits the content and the learner. If some of the approaches are new to you, the lesson plans will guide you through delivering each activity. We also have a free online course on secondary programming pedagogy that includes many of the approaches taken throughout the lessons and may help increase your confidence in using them throughout your teaching practice.


We made a conscious decision for these twelve lessons to use subroutines right from the start. Lesson one focuses on sequencing where the programming activity requires the learners to use prebuilt code to correctly sequence the children’s nursery rhyme Frère Jacques.

Learners are not expected to be able to create their own subroutines from lesson one; the decomposition and structure is modelled. As the unit progresses, learners will gradually make their own subroutines and start solving problems and building solutions in this way.

Managing misconceptions

As it is often said, computing is a young subject in relation to other subjects such as mathematics, in which there are many known misconceptions and strategies in place to address them. Our units are informed by misconceptions identified by research. As well as highlighting them in the lesson plans, the activities have been designed to show known misconceptions. By highlighting them, we aim to help you avoid examples or explanations that could lead to misconceptions and also help you spot them, should they emerge with your learners.

In relation to misconceptions, with both units we have provided a list of multiple choice questions that you can use with your classes. Some of which are used as homework activities as well as end-of-unit assessments, but we have also provided a bank of questions for you to use whenever you feel appropriate. The questions have been designed specifically to address known misconceptions and therefore each incorrect answer will help you gain a better understanding of a specific misconception that has been picked up by the learner. The answers are provided, as well as a description next to each incorrect answer to help you understand the misconception that may have arisen.

Question: What would the output of "say weather" be at the end of this program?

Using these resources

As with all the NCCE units, these resources are free and published under the Open Government Licence. Therefore, once you have downloaded them, they are yours to use and edit however you see fit. You may want to spend more time on certain lessons and add more activities if you feel your class would benefit from this, or after a diagnostic question you may identify a topic that needs further work.

We hope that you enjoy delivering the lessons and that your learners progress and get excited about developing their programming skills in Year 8 and beyond.

We’re also very keen to hear about your experiences using these units. If you would be interested in piloting them for us or any other unit of work produced by the National Centre, we’d love to hear from you:

Further reading

  • Misconceptions from: Sorva, J. (2018) Misconceptions and the beginner programmer. In: Sentance, S., Barendsen, E., Schulte, S. (eds.) Computer science education: perspectives on teaching and learning in school. London, Bloosmbury, pp. 171-188.

About the author

Ben Garside, Learning Manager (Secondary), Raspberry Pi Foundation