Software Carpentry in Hawaii

I got to go to Hawaii to teach a Software Carpentry class!  Hawaii.  How cool is that?!  Apparently, three other people declined to go to Hawaii, and I got asked a week or two before if I could go (I had previously stated my interest).

The class was June 22-23 at the University of Hawaii at Manoa.  It’s on the island of Oah’u, home of the famous Wakiki Beach.  I had never been to Honolulu before, much less Hawaii, so I was ridiculously excited.  My coworkers joked that it must be the Hawaiian version of a Nigerian scam because how could I be lucky enough to get sent to Hawaii to teach a class?  I’m still a little in shock.  🙂

Before I left to go to Hawaii, I worked on the class website a little to add in some references and a schedule of events.  Other than that, I knew most of the material back and forth from my job and the last time I taught the course.  The Python material changed from what I was used to but I’ll talk a little more in depth about my changes to that later.

I left to go to Hawaii bright and early on a Saturday morning, and I got there in the afternoon with a crazy weird time difference of 5 hours.  The plane ride to Hawaii is long.  I was starting to understand why people with busy schedules would not like to make that trip.  I was picked up at the airport by the organized of the course Mahdi Belcaid and his wife — they were awesome!  They showed me around the island a lot the entire weekend.  I was also able to see my best friend from kindergarten who I hadn’t seen in around 20 years.  On Sunday, I went on a phenomenal 8-hour photography tour of the island.  In the evening, I got to meet another instructor at dinner, and we planned out a course of action for the class the next day.

When I initially talked to Mahdi, he told me that they had planned on 20-something people going to the class, but that they had 30-something people sign up.  On Monday morning, about 40 people came to the class.  The room set up was a little weird — it was two rooms combined into one.  There were screens on opposite sides of the room, meaning that half of the class would be looking at a screen and not me or the other instructor.  I talk with my hands a lot, so I found it to be a bit of a challenge to make sure that everyone could get the same information from my voice and my screen as opposed to all of that as well as visually seeing me.  Overall, the half of the class that couldn’t see me had a lot more trouble keeping up than the other half.

Other than the weird screen issues, the space was great in that students had enough room and had plenty of outlets.  I’ve been in classes where the students were cramped, and that led to a lot of people being frustrated in the heat.  While being close to each other leads to people overhearing each other and helping each other out, it also leads to people not being able to hear themselves think.  I think this classroom was perfect in the amount of space between people.  They didn’t have the budget for snacks and coffee — I personally like those things, but people didn’t seem phased at all at the lack thereof.

I started off the day with giving a short introduction to what was going to be taught (intro to command line, git, and python), why the material was important, and a little bit of background on how Software Carpentry changed my life.  I very clearly remember the first time I took the class.  I hadn’t really signed up until very, very last minute, and the class was already full, and there was a wait list a mile long.  My undergrad advisor Titus was teaching part of the class, and I somehow got roped into help TA the class.  I think he said that I just had to learn the material a couple seconds before everyone else.  It was awesome!  I attribute a lot of that experience to helping me get on the path towards becoming a professional software developer.

We passed out two different color sticky notes so all of the students could give us visual indications if they were good with the material or if they needed more time/help.  Madhi taught the command line section, and another instructor Sean Cleveland taught the git section.  They did an excellent job of keeping the students engaged as well as having them go through exercises on their own machines.  People got very frustrated in handling merge conflicts — it was funny to see people react so strongly towards their partners “uninformative” commit messages.  I had to remind people that you would get a lot more merge conflicts if two or three people were editing a three line file, but I think they got the hang of dealing with merge conflicts in the end.  It taught people an important lesson in committing small chunks often.

Based on the feedback from the day, I made a last minute decision to change the material that I was going to present for the Python section.  The traditional Software Carpentry material is to start students off importing the numpy library, importing some data, and making graphs from the start.  Again, based on my interpretation of the average knowledge of Python and programming in general, I decided to go back to a heavily modified version of the old Software Carpentry introduction of Python.  I had taught this version a couple of times, and I felt like it was a nicer introduction to Python.  Most of the students had said that they had programmed before, and I said I would speed things up and get back to the normal material if my material was too slow or too low level, but it ended up being just perfect for the most part.  You can see the material here.

As with all Software Carpentry classes, people always have issues with installation of things.  They have a script on the website to run to see if you have all of the proper things installed.  I ran the script on my own laptop, and it told me that I didn’t have a lot of things installed, but I knew that I wasn’t using mercurial, etc., in our workshop so I didn’t worry about it.  We had to start off the day with a good 30 minutes trying to get everyone’s installations up to date for iPython notebook as well as switch from Python 3.0 to Python 2.7.  They had some loaner laptops that people used, and I thought that was an awesome addition because it made the class accessible to everyone.  I understand the thought that you want people to be doing the class on their own machines, but I appreciate the forethought that we shouldn’t prohibit people from joining the class if they didn’t have a machine to bring themselves.

I was oddly not nervous when I started teaching the Python section on Tuesday, despite having just switched up all the content the night before.  I had a really fun time!  It was one of the first times where I felt oddly calm and collected and very confident in my ability to teach.  I had a couple of missteps — a couple of the iPython notebook shortcuts changed, I think. I had a team of awesome helpers the entire day.  The previous day, I had written notes in the Etherpad (an online workspace with a chat), and when I was teaching, students easily filled my absence and wrote in a ton of notes themselves.  I finished teaching my introduction to Python around lunch time.  We switched instructors, and Mahdi started teaching from the original lesson plan from the Software Carpentry website.  There was a little bit of overlap in content, but it reinforced some of the concepts that students had learned earlier.  We actually didn’t get through all of the Python material that was planned, but I felt like it was better not to rush through a lot of the foundations of programming.

Most of the midday feedback said that the pace and depth was pretty good. There was some feedback that there wasn’t enough hands-on exercises but they understood that it was hard to balance giving more time for exercises with getting further in the material.  At the end, a couple students were hoping that the class was longer so they could have gotten into more advanced material, but overall, most people seemed happy with the amount that they learned.  At University of Hawaii, they planned on having a help session a month later to give people enough time to go home and try to program.

I had an extra day after the class, so I got to take a food tour of the island!  The trip was the perfect mix of work and vacation for me.  Other than the one guy who asked me if I was qualified to teach the workshop because I looked too young, everyone else was super polite and went out of their way to introduce me to Hawaiian traditions.  The guys all wore their “Aloha shirts”, which I think we mainlanders call just “Hawaiian shirts.”  They introduced me to all of the Hawaiian lingo as well as all of the non-touristy Hawaiian cuisine.  They were all awesome.

Overall, it was an awesome workshop.  I was thrilled to be a part of it.  I love the high that I get when teaching others to program.  The limiting factor for me is that I have to take vacation days to teach Software Carpentry workshops, so it’s a little hard to do more than one or two a year.  I can’t wait to teach my next class!

One thought on “Software Carpentry in Hawaii

Leave a Reply