A couple months ago, one of my coworkers approached another coworker Helena and me about starting up a chapter of Girl Develop It in St. Louis. We got together and decided to put together the first session of Girl Develop It for the Strangeloop conference (Our company, Asynchrony, was gracious enough to sponsor the event and put together swag for the students). We decided to do it as an introduction to programming in Python. I was fortunate enough to have helped out with Software Carpentry and a couple other outreach efforts, so I had some templates for how to structure a 3 hour intro to programming. I can’t tell you how many intro to Python tutorials I went through just so I could get a good feel for how other people approach the issue (particularly, Codecademy, learnPython.org, and Software Carpentry’s tutorials). I took notes on each of them and compiled them together. I tried my best not to reinvent the wheel since there are so many great sources out there to teach people how to program.
Similar to Software Carpentry, I used iPython notebook as the basis for my workshop. This allowed for me to write code on the fly, and get each of the students to write/run the code in real time. If you haven’t already used iPython notebook, I highly recommend it. Specifically, for teaching, it is amazingly useful to have students run each line of code as I’m doing it on screen. It’s so nice to be able to get them to insert a code cell, write a couple lines of code, and then easily run it. I firmly believe that this kind of interaction is the best way to teach someone how to program.
I split my workshop up into four parts/four notebooks: introduction to programming, functions, loops, and conditionals (available on github). I only had three hours, so I tried to keep everything simple so that the students could try to do some programming on their own after each section. I used iPythonBlocks by Matt Davis to add a visual element to the programming. I think that went over very well, particularly for teaching the flow of ‘for loops’.
I honestly don’t remember how many people came, but I think it was around 15-20 people. We advertised through word of mouth, and a wide variety of people showed up. Some of them were scientists in grad school looking to learn some programming techniques, some were the girlfriends/wives of other Strangeloop attendees or Asynchrony employees, and some people were nontechnical staff at technical companies looking to get a better understanding of what programming is. We even had one girl show up partly due to my bio saying that I played the RPG Pathfinder. All in all, it was a great group.
We started off with some install issues (*groan* I’ve never taught a class where there wasn’t some sort of install issue), but after that, things went a lot more smoothly. I had two main TAs – Helena and another coworker, Adam (who went above and beyond to figure out the install issues). My favorite part of the class was that it was such a safe environment that people did not think twice before interrupting me and asking all sorts of questions. At the end, many of the students noted that they were nervous coming in, but that dissipated very quickly because it was such a safe environment. Every time the students had to program something on their own, they collaborated and helped each other out. All of them completed the sample problems that I put up, but many of them went above and beyond trying to refactor their code to be more useful or write more complicated functions (one of my favorites being a function on dating pools ala XKCD). We ended on a fun “choose your own adventure” example.
I would definitely teach a class like this again. It was very nice for me to do some Python again (I mostly do objective C at work) and get in some teaching, which is something I sorely miss from acadamia. Hopefully, we can gain some traction into having a St. Louis chapter where people volunteer their time to have safe environments for people to learn how to program. I’ll end with one of my favorite photos from the class by the official StrangeLoop photographer Mike Bridge:
— Mike Bridge (@michaelbridge) September 19, 2013