This week I was lucky enough to introduce 12 kids to the python programming language. I've been teaching 5th grade students python the last 3 years and previously, the class size was limited to 8 students. The decision to increase the class size was difficult but I was willing to take on a new challenge in hopes of reaching more students who might one day share my love for software development.
I wanted to write a quick recap of the week for anyone who might be interested in teaching kids programming for the first time. A big part of the process is simply documenting what I've learned and how others can benefit from it.
The Hardware
Like last year I felt it was important to provide a chromebook for each student so they could continue writing code long after the class was over. This year I selected the dell chromebook 11 because it allowed me to install ubuntu 15.10 and boot it directly (with minimal hacking). This chromebook also came highly recommended for anything education-related because of its rugged exterior.
One thing to note was that ubuntu 15.10 didn't support the sound card so students did not have audio. I'm hopeful that an upgrade to ubuntu 16/17 will solve this but it's something to be aware of. **update** I was able to get this working with a few steps
Because I wanted to expand the group from 8 to 12 students, I reached out to the Python Software Foundation for additional funding. They agreed to help as they've done previously, so I felt it was only appropriate to take a moment and thank everyone for the time and money they've invested. Without this support year after year it would have been much more costly to gift each student a computer. Thank you to everyone at the PSF (or who donated to the PSF) for making this possible!
Timing is everything
In the past, I've run out of material quickly the first day, but this year I decided to slow things down to help build a more trusting relationship betwen myself and the students. We spent time doing a more traditional "ice breaker" in order to build trust and help me gain some understanding of their background.
One side effect of taking it slower was that we ended our first day with maximum excitement. I was able to introduce just enough about variables, the REPL and types, so everyone was more than excited for Tuesday. One adjustment to note from the previous curriculum is that we also briefly introduced IDLE to avoid the multi-line pain I've seen in years past.
IDLE so random
This year we didn't run into any of the issues with IDLE that I've seen in the past. One thing I did want to mention is that one of my students decided to name his program "random.py" and as a result we had a very tricky issue trying to save and run his code. If you ever get an error that looks something like this...
IDLE's subprocess didn't make connection. Either IDLE can't start a subprocess or personal firewall software is blocking the connection.
... be sure to remove both random.py and the pyc that it generated. This should clear up any issues. Here is the stackoverflow post that helped me figure this out :)
Copy/Paste considered harmful
Each year, trackpads on the chromebook hardware improve tenfold. As much as I thought the dell trackpad was decent, I decided to purchase an optical usb mouse for each student to avoid the problematic click and drag errors I've seen in years past.
I assumed that having a mouse would eliminate any basic word processing problems, but one challenge I found this year was that asking each student to copy and paste code from the internet was difficult. Next year, I plan to have each of the exercises available in the home folder to avoid the time my assistant and I spent helping the students copy from github.
Stay with it
One thing I told the students on Tue and Wed morning is that the middle part of the week would be tough because we would be covering a great deal of new concepts. My hope was that by Thursday, all of the variable, conditional and loop ideas would start to sink in, but honestly that hadn't occurred like I'd seen in the past likely due to the larger class size and age range (as this year we didn't have exclusively 5th grade students). Truth be told, on Thursday I felt as if I'd failed the kids because we just didn't have enough familarity with the core concepts required to build a text-based game.
Thankfully, Friday morning I saw a completely refreshed group of kids who deeply understood variables, IDLE and everything in-between. The best part was watching the students both find and fix bugs in our battleship game long before I had time to even call them out. Next year I hope to remain more optimistic as the students have inspired me to stay the course.
To all the families and students -thank you for sticking with me throughout this challenging and rewarding week!