Code teaching framework
[Starting from Scratch up to GCSE]
Peter Novig gives a good account of how long it takes to really understand how to code in his blog post “Teach yourself to code in 10 years”. I agree with his ideas, but how do you start this learning journey?
Learning to code is like learning a foreign language.
I’m going to Italy in 8 weeks time, I don’t speak a word of Italian so I’m not going to be fluent but what do I need to know to get by?
Probably “Yes / No / 1,2,3,4,5,6,7,8,9,10 / Please / Thank you / Beer”.
Where do you start when teaching students to code so that they can get by, then build upon, especially if you only have 8 weeks to teach it? What areas are best to focus on at the beginning?
Assuming that students understand how to put instructions in order – or sequence – then I base my code teaching on developing:
- The beginning: The core, basic skills to structure all subsequent teaching on
- The next step: teaching how to write readable, maintainable code. This is the goal of code teaching; the end game. It is required of students at GCSE+
In order to nurture these skills I give my students lots of challenges to overcome, encouraging them to break down the problem into x3 discrete parts before starting any coding:
- What is the system expecting to be inputted?
- What do you need to do with the inputs to create the desired output?
- Is there any data to be stored or retrieved?
- What is the system expected to output?
These challenges are levelled and increase in sophistication to enable all students to work to their individual abilities.
Challenges are fairly small but given out often, throughout the year. In order to manage this regularity I encourage a culture of peer consultancy – students barter help with a made up currency that I call a ‘Hoken’.
I explain the process further in the following sections:
- Putting the theory into practice and how to actually start teaching students to code
- Providing scope, challenge and help whilst ensuring motivation. Cultivating a culture of consultancy/peer assistance to build independence and learning
- How to reward student achievement taking into account the sophistication of the student solution versus the assistance given
- Providing a framework for students to begin to tackle what seems like an impossible problem
- Creative computing is hands-on and in my experience is very engaging – but can be expensive
- How to enable each student to develop physical computing projects for less than £300 for an entire class
One thing is true though, just like a foreign language learning to code takes regular practice.
Challenge beyond the school gates
A free online challenge delivery system including the virtual currency “Hokens” is in Beta: