Tomorrow, my classes and club will begin participating in the NCSS python programming Challenge 2014. It’s our second year and I’m quite excited as it’s a really fun challenge.
Like last year, I introduced the software programming and design topic using dance; except this time, I actually linked it to computational thinking straight away – decomposition, pattern recognition, pattern generalisation and abstraction, and algorithm design. Timing was on my side as the year 9s have been learning new dance steps in preparation for the Year 9 dance. Plenty of inspiration in terms of computational thinking processes, value of coding, control structures and even functions…with parameters!
There is so much hype on teaching kids to code – nearly 12 million views of code.org’s What most schools don’t teach and the rise and rise of many learn to code sites. There’s also the impending implementation of the Digital Technologies curriculum, etc. etc. etc. But for me, it’s far more than the hype – I actually love teaching students to code.
Learning to code is more than just about writing code; it’s the least of it, in my opinion. It’s all the other stuff about computational thinking and systems thinking and critical thinking and creative thinking. That’s a whole lot of thinking – and doing – right there!
With computation thinking, I think it’s important to point out that we all do most of this already.. in real life! Think of all the procedural and component-based stuff like recipes and routines we have, for example. What is less common is algorithm design, especially in school where we teach ‘tried-and-tested’ algorithms. This is true not just in mathematics where we teach (and test) mastery of algorithms but also in humanities subjects like English as we teach the “right way” to write essays, for instance. In schools, it’s rare for students to design their own algorithms, their own way of doing things. Learning to code provides opportunities for algorithm design, encourages it even. And I love it.
Systems thinking is taught in many subjects. We are surrounded by systems. We’re made of systems. But, it’s rare for students to make their own systems. Learning to code provides opportunities for designing systems.
Teaching kids to code can be daunting and having set “courses” do help. Learn.code.org is a good entry point for beginners (students and teachers alike). I also recommend NCSS python programming Challenge . Both are challenge-based and fun.
I also think it’s a good idea to expose students to the experience of learning another language, mapping similarities and differences – the meta stuff. This includes reflecting on problem-solving methods and attitude when faced with difficulty.
I enjoy doing the challenges with the students. Sharing the joy of wrestling with knotty problems and working out solutions. I love that I have a window to how they think. I love it when they come up with creative ways of thinking and solving problems. I love that they don’t ask “when I’m I ever going to use this?” because it’s fun just getting through it. I love it when they teach each other and work together and share frustrations and wins together. This, for me, is the fun stuff…and I’m lucky I get a chance to be part of it because I teach coding.
The best part is that I get to play along.
print (“NCSS 2014, here we come!”);