For the last few years, Pete Dring, head of computing at a secondary academy in York, UK, has been developing self-marking Python challenges, funded by Google’s Educator PD grant (helloworld.cc/googlegrant). The project aims to help boost students’ confidence, resilience, and independence when understanding, writing, and debugging code. It’s also designed to reduce teacher workload — an automated tool generating individual feedback allows students to make informed actions to address gaps in their knowledge more effectively than they would if they had to wait for their teacher to mark their work. Teacher time can then shift from marking to helping students understand and act on the feedback effectively.
After working with his students to design and test early integrated development environment (IDE) prototypes (for example, helloworld.cc/peteprototype), he developed create.withcode.uk. This free site allows beginners to work through different Python concepts and skills and gives students instant feedback as they adapt code that works, debug code injected with common mistakes, and apply their knowledge to create their own solutions.
These self-marking challenges aim to stretch lower-secondary students or support upper-secondary students as they get started with text-based programming (helloworld.cc/selfmarking). They were originally designed as independent learning activities to complement explicit instruction in lessons, but lockdowns emphasised the need for resources that pupils could work through at home, while still demonstrating progress to their teacher.
The online Python environment used by create.withcode.uk offers a subset of the full features available from an offline IDE, but it’s designed to be simple enough for beginners to use, and has the advantage of allowing students to access code they wrote in a previous lesson, even if they didn’t save it.
Pedagogy in practice
Learning to program can present a number of barriers. Some students struggle to type, and problem-solving with algorithms and code is hard when you’re still prodding the keyboard with individual fingers. Some students struggle to understand code, and all the error messages and online tutorials require you to learn a whole new lexicon that is beyond the vocabulary of most beginner programmers. Other students lack the confidence to make mistakes; debugging is hard if you’re terrified that you’re going to break something. Finally, some students lack motivation. Copying out code that someone else has written, to solve a problem that someone else has defined, isn’t a particularly creative process.
It’s good to see more and more pedagogical research into strategies that empower teachers to tackle each of these programming comprehension blockages. The approach taken by Pete Dring for the self-marking challenges builds on Sue Sentance’s PRIMM model (helloworld.cc/primm) but adds in some additional support with the structure of Keywords–Predict–Run–Investigate–Debug–Extend, or KPRIDE (helloworld.cc/kpride).
Each resource is split into four sections: Theory, Try It, Debug It, and Extend It (see Figure 1). The Theory section aims to introduce one new concept at a time in a logical, sequential way. Try It activities give students some working code that they can use as a simple reference, and include some self-marking challenges to encourage tinkering and experimentation. Debug It activities give students code that contains common mistakes so that they can build up confidence and resilience when faced with error messages. Extend It activities encourage creativity with open-ended challenges to apply the skills that students have learnt.
Motivation and quick wins
At the start of the first lockdown, Pete collaborated with local schools to set up a free weekly coding challenge that allowed students to access short live-coding support videos and interactive online resources that they could complete at home. Live.withcode.uk also tackled the typing skills deficit identified earlier by challenging students to type out the code shown in the live-coding videos as accurately and as quickly as they could.
Although these weekly challenges aren’t running at the moment, you can still give the existing challenges to your classes as starter activities or optional extra homework activities. Differentiation is a huge challenge when teaching programming, but any student can engage with a type race, most can learn to master the keyword identification activities, and the self-marking challenges can keep students busy in those precious moments at the start of a lesson.
There is a wide variety of free and paid platforms that offer auto-grading for quizzes or code. Anything that reduces marking workload while increasing the quality and quantity of student feedback is a win. The challenge can be using all the assessment data to enable students to celebrate their successes and know where (and how) to concentrate their efforts to improve. Pete reflects, “I’m privileged to have worked on these resources with brilliant colleagues and excellent students. I hope that these resources save other teachers some time and support students to break through that frustration barrier to enjoy creative problem-solving with code.”
A top tip for students getting started is to run their code regularly by pressing Ctrl + Enter to run the whole program, or Ctrl + Full Stop to run a line at a time and see what each variable stores.