… programming is not really the practice of writing lines of code. It is the art of taking big, intractable problems and breaking them down into ever smaller ones which can be understood, explained and then carefully assembled into a living, breathing work of art.
Software is poetry. It’s the expression of ideas in the most elegant form a programmer can devise.
This is a quote from a piece entitled, Coding. Way funner than you think by @gilfer. It’s a wonderful piece that really gets inside a programmer’s head – the feeling, the buzz, the excitement, the creative process that is software programming. There’s many more I can quote here but hey, go over and read it because @gilfer’s prose is beautifully written.
My chosen quote, however, does capture the essence of my NCSS Challenge experience. @grubbypandas pinged me about this challenge knowing that I wanted to learn Python as a potential language to teach for Computing Studies (IST and SDD). Aside, @grubbypandas also told me about pastebin, really useful site, imho (THANK YOU). In other words, I joined the NCSS Challenge to learn Python AND get ideas on how to teach Python, or other programming language – all for $20….bargain!. I haven’t written programs for ages (and I mean ages) so I had my reservations but going into the challenge with @grubbypandas and @akwc helped.
I’m proud to say that I finished the challenge – Intermediate level – and before I forget everything, thought it wise to jot down these thoughts.
Learn in manageable chunks. Each week, a set of notes were provided that provided enough information to complete the week’s 6 questions. I skimmed through these and then referred back as needed. Over the weeks, I referred back to more and more – a good indication that I was building on previous knowledge and skills. All these resources are now available to me. yay!
Tackle interesting problems. Just like the quote says above, programming is at its core a problem-solving exercise. It involves looking for patterns (algorithms) and exceptions and then writing/tweaking. Still with the initial nod to the traditional “Hello world” , the challenge then took advantage of opportunities for tangential learning with questions involving Kaprekar’s constant, Aboriginal languages, QWERTZ keyboard (Y and Z swapped in German keyboards), iambic pentameter en route to writing Twitter poetry. I was learning more than Python.
Provide instant feedback and hidden cases. The interactive checker is rigorous and unforgiving chucking out an error for that printed extra space, for example – which is a good lesson in terms of real-world programming; pay attention to the requirements and realise that the computer will only do what you tell it to do. But wait, there’s more. The checker also includes hidden test cases which is a good way to ‘catch’ hard-coding of solutions (I’m not quite sure how else to explain that) as well as promoting extrapolation (higher-order thinking). And those green checks look better than the red crosses.
Have multiple-entry levels and promote community. It was very humbling to note that the challenge was meant for students, some as young as in year 5 (10 or 11 years old?) and that they were tackling the same problems as I was. Truth be told, I struggled more with unpacking the problems (finding algorithms) than in actual coding. The challenge provided a forum for students to help/engage with each other as well as contact tutors for more support. The forums also showed that there are very capable students out there, already thinking about elegance and efficiency in writing and executing code; these skills rarely have outlets in traditional schooling.
There is more than one solution. As @gilfer noted in his piece, there is no single solution and that every programmer will express his/her style. The checker accepted working code but the challenge also published solutions which provided more opportunities to learn such as new commands/syntax not yet covered. I liked that I could play with different algorithms.
Dislikes (no more, see update)
There was no forum for teachers. Okay, so there are benefits for going in there as a level-playing field (think massivelyminecraft approach). Still, it would be nice to discuss how this challenge can be incorporated into the curriculum or as an enrichment/extension activity. This is partially why I’m writing this post, in the hope that other teachers could extend my thinking here!
…not much else to dislike…seriously. (Update a few minutes later: @grubbypandas has kindly pointed out what I missed… THERE IS A FORUM FOR TEACHERS…and I missed it….gah!)
All up, it was a fantastic 5-week challenge. Sure it got frustrating in parts but ultimately rewarding. I highly recommend doing the challenge with students, not just for Computing Studies, in fact. It’s for anyone who wants to encourage computational or algorithmic thinking. As this challenge has shown, this type of thinking can be promoted as cross-curricular; there are patterns everywhere (I’ve said that in my Algebra classes as well); Python is a tool to help code those patterns.
Besides, as @gilfer said…