Last year was the 2nd iteration of my python for kids summer camp and it was a huge success. In addition to the revised curriculum, I was able to raise enough money to buy each student a new chromebook. This allowed the kids to continue growing after I was long gone.
The trick this year was to not only continue my success but iterate again to improve the experience for each student. One of the challenges last year was that I taught the class by myself. This meant that if a student fell behind or was tripped up by something I had to stop everything and troubleshoot the issue to ensure everyone could stay on the same page. Not terrible honestly, but I realized the majority of the class would get bored during this brief period and we would lose a little time trying to get everyone back on track.
In order to keep everyone moving at the speed of light, I asked a friend if he would play the role of TA to help any student(s) that got stuck. What looked like a small improvement over last year ended up as the biggest win for both teacher and student. I was able to keep everyone focused without fear of losing the audience when a random issue with a chromebook cropped up.
Aside from this great teaching moment I had a few other tips/battle scars from the week of python that I wanted to share for anyone trying to emulate this great effort.
- Raising money isn't easy
- IDLE is still broken
- Trackpads aren't great so bring a mouse
- Dual booting isn't a requirement
- The students make all the difference
Raising money isn't easy
Last year I was fortunate enough to have my employer(s) back the project. That money along with a generous donation from the PSF helped me land the total amount required for the chromebook purchase. This was a pleasure because I literally asked my boss at each company if they could donate to the cause and without question they delivered on the promise.
Contrast that with my fund raising experience this year. In preparation for the June 2015 week of python I contacted a big company in town and it seemed like I might not need to approach anyone else as they wanted sponsor the event entirely. But a month into that email driven discussion it was clear they would only help if I was teaching underprivileged kids. What they didn't know is that I don't contribute to picking the students in any way. This is done by the school and teachers because they know the students best and have a much better idea of who will be successful.
Once they backed out it was unclear if I'd be able to generate enough buzz again this year to fund the project without paying for it out of pocket. After a little soul searching I decided to go for it anyway and if I couldn't get a few friends/local companies to help out I'd fund it myself.
Lucky for me the entire team I was working with at the time got behind the movement and almost everyone wrote me a check for $200 making the project goal within a few short weeks. I wanted to mention everyone by name as this would not have been possible (easily) without their help.
IDLE is still broken
Last year I mentioned using IDLE was great with one exception ... when a student tried to open an existing python file. Thankfully, that didn't end up causing much pain this year. Instead IDLE decided to stop running the program in the "built in REPL" at random times. This forced the students to close IDLE down and reopen it a few times each day (the class was 2 hours in length and it would happen 2 or 3 times per student).
I never found a predictable way to reproduce this problem but I did discover it would happen to me just like it would the students so it wasn't (likely) user error. My hope is that next year I'll make the switch to python 3 and the students won't experience any pain with tooling. I'm planning to do a bit more preparation to verify this before I hand off the chromebooks next time around. At this time I just hate to give up IDLE for sublime + the terminal because it's so darn beginner friendly.
Trackpads aren't great so bring a mouse
Last year I remember the trackpad on each Acer chromebook caused some trouble for the students so I got in front of it this year by having the school loan out a mouse for those who found it less than ideal. Giving the students the "option" was fun because most kids don't feel like they have a lot of control / decision making power anyway so this was a quick win that helped me build favor/trust with the students. By the 3rd day most of the students had decided to use a mouse because like last year ...the trackpad still isn't macbook pro quality :)
Dual booting isn't a requirement
Last year I dual booted the chromebook so students could still boot chromeOS along side ubuntu. The ubuntu install is what we used and students had a good time with it. This year I didn't do enough research and purchased the Toshiba CB35-B3330 13.3 Inch Chromebook and it turns out you cannot dual boot with it (yet). I spent a solid 2 weeks hacking away at it but finally decided to try Crouton instead. The tradeoff is that I had to give each of the students a shared gmail account/password so they could login to the chromebook. After they logged in I'd have them open a terminal and launch xubuntu.
At first I was afraid to have the students crack open a terminal right away but by the second day they had it down. On the plus side this allowed the students to boot up a working chromebook and "optionally" boot xubuntu when they wanted to do development work. My only fear was that someone might decide to revert the chromebook (turning off developer mode) but in all honestly if some of the kids just want to use the chromebook for basic web browsing who am I to stop them.
The students make all the difference
Each year I think to myself "how did I get such a great group of students" but it has never been more true than this year. Even in the slower moving sections not a single student acted up or got bored/disinterested. I couldn't believe how eager they were to learn programming (well after the hype had faded from my voice on day 2 or 3). It gave me hope to see kids in the next generation value learning for learning sake.