Young Coders at PyCon 2015

May 01, 2015 CS Education PyCon PyKids Python

2015 was my third year teaching this class at PyCon, alongside Katie Cunningham. It feels like we've been doing it so much longer, doesn't it?

This year, as last, Young Coders ran for two days - on the Saturday of the conference, we offered the class in French (thanks to two talented Montreal Pythonistas, Davin Baragiotta and David Cormier). And on Sunday, we presented the class in English, with some teaching help from Naomi Ceder and Richard Jones.

Thanks so much to Mathieu Leduc-Hamel and the rest of the Montreal staff and organizers, without whom our last two years in Montreal would not have run so smoothly!

To recap, the classroom workstations consist of Raspberry Pis and the usual peripherals (keyboard, mouse, monitor). We don't use the ethernet connection - none of our beginner material requires internet connectivity, and we'd risk losing the students to Facebook and email anyway. The image we use includes Python 2/3 and comes with Idle installed - that's really all we need, since just about everything we cover is at the interpreter level.

For this year's workstations, we used the Raspberry Pi Basic Starter Kit from ABRA Electronics in Montreal. Each kits contains all you need to get started, minus the peripherals, so all of this year's students got to take home a Raspberry Pi with a sturdy case, an 8Gb SD Card with the image pre-loaded, a power supply, and some documentation.

The curriculum hasn't changed much over the years. We start with a quick chat about what computers do and what programming means, then spend the morning covering the most basic of Python basics: strings, math, Booleans, variables, lists, some functions and logic, even a discussion of basic error interpretation.

After a lunch break, the rest of the class time is devoted to editing and playing games (using Al Sweigart's pygame library, which also comes installed on the Raspian/NOOB image).

This year we had a great last-minute addition to the program. On Friday morning, I saw Kurt Grandis' terrific talk - Exploring Minecraft and Python: Learning to Code Through Play. I was sitting with Richard Jones, musing about how cool it would be to integrate Minecraft into the Young Coders curriculum for 2016. I hadn't given it much thought before, so I didn't realize how close we were. And then Kurt started talking about this mcpi library that already exists for interacting with Minecraft on the Raspberry Pi.

That afternoon we went to the classroom to start working on the RPi setup for the Saturday class and discovered that we were working with a more recent version of the Raspian image. As of September 2014, Raspian has the mcpi library installed. We spent a good few hours that evening playing around with Minecraft on the Rpis, then were able to make it a part of both classes that weekend. Needless to say, it was a big hit.

But for all the fun we created in the classroom that weekend (it's so great seeing kids excited about learning!), I was reminded of limitations. This year, we capped enrollment at 40 per class, and 40 was just too many. With that many students, it becomes hard to keep everyone moving at the same pace. Adding more TAs or teachers to the mix doesn't really help, it just causes the levels of noise and chaos in the room to go up and makes it very hard to focus on the material.

This year, we also had a fair number of students who were too experienced for the beginner material. I always hate seeing that - I know those kids are going to be bored through about 80% of what we talk about. Unfortunately, up to now a beginner class is all we've been offering. I should have singled those kids out early on and asked them to transition to being TAs for the duration, helping their fellow students, but there was just too much going on with the class that large. Remember this when you plan your own Young Coders event. (You are planning one, right?)

So with all that in mind, I'm working on developing an intermediate curriculum for PyCon 2016.

Aside from writing the curriculum itself, there are going to be some challenges involved. I would like to continue to use the Rapberry Pis, so that setup is familiar and our budget doesn't change, and so that students are working on a common operating system and can take their workstations with them at the end of the day.

So far I've got the frameworks laid out for a couple of game and web projects. I'm currently reviewing learning tools that will make it easy to build these projects in a classroom setting, while still giving students a taste of what it's like to write and publish your own Python code in a real production environment.

PyCon 2016 is still over a year away, so there's a good chance the time will get away from me and I'll finish up the intermediate program a few weeks before heading to Portland. (I finished up materials for the first Young Coders class the week before, and reviewed it with Katie over dinner the night before we went into the classroom for the first time.)

But I'll do my best to get ahead of the planning and share what I'm working on over the next few months.

See you in Portland in 2016!