Premature Optimization

Do you abandon science to preserve your heart, or abandon your heart and sacrifice yourself to science

Reflections on SWC @ Janelia

09 May 2013

Reflections on SWC @ Janelia

The Bootcamp

About a month ago a friend of mine approached me about helping teach a Software Carpentry bootcamp being hosted at Janelia Farms. I’d heard of SWC; there have been a few hosted at MSU but I hadn’t attended any (With my experience in Computer Science I’m not quite the target audience!). I’ve been teaching Bioinformatics tools, *nix command line, python and bash scripting informally to RDP collaborators and for some reason I still enjoy teaching, one on one at least. So this SWC bootcamp seemed a great opportunity for dipping my toe in to a more structure teaching experience. I’d like to thank (or perhaps blame?) Adina Howe for inviting me to participate and Titus for support. Also a big thanks to Janelia Farms for hosting the bootcamp!

All materials prepared for SWC@Janelia are available on this github repository.

Pre-bootcamp organization

Preparing for the bootcamp was in interesting experience to say the least. There is a lot of teaching content available from the SWC website and swcarpentry git repository and while every bootcamp is different, they served as a good starting point.

It would be nice if the previous bootcamp repositories had the outline of the schedule to gauge the coverage of material presented.

It also would be very helpful for organizing new bootcamps if previous bootcamp repositories included some of the feedback from the students and reflections from the instructors. Particularly a little about the technical expertise of the group and what lessons/parts of lessons worked well and which didn’t.

One thing that Adina did that I think worked out really well was to have the participants fill out a little technical level survey. I think the survey could use a little tweaking, but having done that we were able to see that many of the people that had signed up were at more of an intermediate programming level. This allowed us to adapt the bootcamp and focus less on very basic programming material and spend more time on other sections.

I get the impression that some instructors write blog posts about each bootcamp experience, but it can be hard to track down that information. In general I felt there are a lot of good resources available to instructors, just could use some more centralization and documentation. Especially helpful would be a repository of relevant (and interesting?) sample datasets for the different disciplines that have hosted SWC bootcamps in the past.

At Janelia

The students

The people enrolled in the bootcamp from Janelia were in many ways an exceptional, and large (40 people) group to teach. They were unsurprisingly a very intelligent group (this IS Janelia Farms after all), but they were also very engaged and interested in learning about the *nix shell and python scripting.

One complication about the group of students (and probably a complication with large groups for bootcamps in general) was the very broad background of the participants. Some had no programming experience what so ever while at least one participant (according to a pre-bootcamp survey) was working with large software systems on a daily basis. It seemed the majority of the people had various levels of experience with Matlab which seemed to contribute to their fast uptake on many programming topics (especially when we could relate concepts to Matlab).

One on one

Circulating around the room while one of the other two instructors were teaching was a very rewarding experience. Interacting one on one with the students was great (can you tell I think they were a really good group of people?). I saw a few novel solutions to exercises that I hadn’t even considered and that were very neat.

Teaching

I was responsible for teaching some beyond-basic-python (mostly functions and file IO) in the afternoon on the first day, and testing + automation in the afternoon on the second day.

Teaching beyond-basic-but-not-quite-advanced python was a difficult line to walk with the wide range of programming experience in the group which I feel I could have done better with a more fleshed out set of goals for the segment; I’d tried to make sure there was something for everyone and ended up with awkward pacing. Still I think (I hope?) people got the gist of why functions are important, what makes a good function, and how to write their own in python.

I was much happier with the testing and automation presentation. I believe that went very well, the presentation took smaller steps between exercises and I think the exercises were a bit more engaging. Trying to find sets of inputs that break a black-box program seemed more engaging. I did however have trouble getting across the importance of testing in my little pre-lecture according to a few of the minute cards.

Concluding Remarks

Teaching SWC at Janelia farms was a very good experience. The people and students there were very motivated and nice to work with. The SWC experience seemed a little seat-of-the-pants-ish but dealing with very diverse disciplines and groups of people does require a lot of flexibility. All in all I felt, and after being an instructor at this bootcamp, still feel SWC is providing a very important set of resources to get scientists used to using and understanding what computational tools and resources are available and how to get started effectively and efficiently using them.