Teaching Middle School to Program*
This past year, I started an experiment and took a different approach to teaching middle school students how to program: Nothing.
And you can do nothing too!
After teaching Scratch to elementary school kids, I decided to “up my game” and teach programming to students at the local middle school. While deciding what to teach seemed like my initial challenge, I quickly realized that I should take a more taoist approach and guide rather than teach.
With so many tutorials, courses and references available online, I asked each student individually what he or she wanted to learn, and then pointed them to an online learning resource.
I began each after school session with a demonstration of various computer-related topics to pique their curiosity and as a way to lead each student to be more self-sufficient in teaching themselves.
This session reviews my curriculum and my class demonstrations which began with showing the students how I programmed computers when I was their age. Other demos included:
- Alternative base systems and Binary
- How computers really work
- Building worlds with Minecraft in Python
- Our challenge with rendering Chinese
- Generating random artwork
The advantage of this approach is that it required little of my time, as I could answer email and other work tasks in between questions from the students. I figure my approach may be useful to other software professionals who would like to help their neighborhood school, but do not have much time…you know, all of us.
Howard has spoken at "many conferences":2 and previously spoke to other engineers about teaching Scratch to kids at OSCON:4 and "Open Source Bridge":3. Last year, he taught a kids-only session at OSCON's "Kid Day":5.
With over thirty years of programming experience from C to Clojure, he enjoys mentoring younger colleagues as well as teaching the next generation. He hosts a local computer programming club at his local middle and high schools as well as mentoring the local robotics team. Oh, and he does have a day job, working on the software defined networking team at Workday.