So you are teaching coding… how and what next?

Jon Roberts is a Digital Technology and Innovation teacher at Helena College, Glen Forrest Campus in Western Australia. He is interested in teaching students (and teachers) to code, and develop a passion for life long learning.

This is a story of how I teach coding in Middle School. It can be tricky. Everyone* wants coding taught, and it seems that every Primary School is teaching Scratch or a variant of drag-and-drop programming.

So you can code, what next?

Some challenges faced come from the nature of these drag and drop interfaces, the immediate feedback and the culture of reuse/remix and share. (There are also much deeper issues around teacher training, copyright and creativity). My end goal is to have students capable of designing and solving technology problems for other people in Years 9–10, and wanting to take Computer Science / Engineering in their senior years, with a future in Science, Technology or Engineering.

Introducing Python

We have started to leverage Python as the go to beginning language in Year 6 and Year 7. Almost all students come into our Year 6 being able to follow Scratch recipes / remixes online, and extend them. For the majority, there are shortages of creativity, problem solving and risk taking. Scratch is good at teaching coding (drag and drop not typing). However, Scratch is not so good at teaching planning, as complexity and design are not inherent in the design of a Scratch game or in Scratch tutorials freely available online. Python is clean, easy to learn and introduces most concepts that students need early on. Our students are using this to springboard to Java (using greenfoot) Unity using C#, iOS in Swift and web scripting in JavaScript.

We use Grok Learning, specifically the WiseTech Code Launch to teach Python from Years 6–10, all year levels are using it in our CoderDojo. We are using this to get students to a standard level of coding and a standard language — this simplifies teacher content knowledge as well as allowing progression. The self paced nature of Grok enables students to work at their own pace and be supervised as they progress. I have also created a YouTube playlist to assist students who need a little extra (And non-expert teachers) support.

A typical lesson structure for my classes is:

  • recap;
  • remind of skills and key words from previous sessions;
  • introduce topic — what will be covered (where they should be up to)
  • monitor students to keep pace with a reasonable level of achievement.

Our assessment is through an IB Design Cycle task for each year group, where students apply the skills that they are learning. I also reinforce the leaning with Kahoot (for fun) and Google Forms (self marking quizzes are awesome!) to track the overall learning in the classroom. Student’s progress is monitored using the inbuild tools in the teacher dashboard in Grok.

Project ideas

Practically, we are using Python as our initial language for Digital Technology. In Years 6–8 the aim is to build a basis so that by Year 9/10 electives, students can design and build solutions for a client — projects like:

  • IoT Devices
  • recording weather with temperature/humidity sensors;
  • a touch screen photo booth;
  • infra-red camera to track animals;
  • to program more real world applications like looking at how ATM software might work; and
  • looking at how data is moved between systems (sending data to satellites and receiving data back?)

In Years 6–8 we have Edison robots in Digital Technologies where students use Python (or EDpy) to program the motors and sensors or use a simple drag and drop interface (similar to Lego Mindstorms) for those who are still transitioning to Python. On the extra-curricular side of things, some robocup teams are learning Python so they can use a BrickPi instead of Lego EV3.

Driving a robot looks almost like the turtle we practiced in Grok Learning!

Grok Learning, as an online, self paced learning platform, has seen us able to embed more code into more lessons in a shorter period of time. It enables teachers to get up to speed and covers the basics well. It leaves students quickly asking for more (how to do GUIs, how to build games etc.).

If I had one criticism of online coding tutorials and platforms it is that they teach syntax but not complexity or the more “boring?” theory. The “Doing” is great, the pace is good, but some more fundamentals or theory in the later more advanced courses would not go astray.

What is missing?

The biggest gap in our overall program and in what we are doing is around Ethics (read Rethink Retool Reboot) / Cybersafety / Digital Citizenship and that big can of worms. These are huge areas that need continual embedding into this sort of curriculum, not taught as one-offs.

It is harder and harder to manage this in a crowded curriculum where you are teaching basic computer skills (sorry digital natives — not everyone knows how to use Word well!) as well as Digital Technology content. It is also hard to manage age appropriate approaches across Years 6–12 when the students’ home technology environments range from ultra permissive to ultra restrictive and the maturity levels are just as broad.

Future plans…

Platforms like Scratch and Grok Learning are great first steps along the “lets learn to code” path, stepping stones even. A solid base from which to teach more Computational Thinking and Problem Solving by example are needed to keep the current generation of “coders” moving from trivial to meaningful (from want-to-be-game developers to makers and engineers.)

* Everyone seems to be Government, Industry and even parents!

How do you teach coding in your classroom? Add your thoughts in the comments.