Montreal in January

This post originally appeared on the Software Carpentry website.

This weekend was the first time I had instructed at a SWC bootcamp, and I'd only observed one other (Greg Wilson in Halifax in July 2012). By the new standards for instructors Greg's trying to put in place I would probably not even qualify, but hey, we're in a growth phase right now; we take a few chances, eh? I felt my inexperience acutely, but despite that I think I can say that the bootcamp went well, thanks to a great group of attendees and helpers and my co-instructor, Jessica McKellar. The site organizers were Alex Demarsh and Rolina van Gaalen, and the other helpers were Greg Ward, Julia Evans and Jonathan Villemaire-Krajden.

Nominal registration charge

For this event we charged $20.00 for registration (which Eventbrite transmogrified into $22.19), with the question in mind "What does this do to the no-show rate?" We exactly sold out: Forty tickets were bought, the last one going less than a day before the event. We didn't get a precise head count early on Day 1, but we estimated later that we had 35 to 37 out of 40 there. One person explicitly wrote in sick on Day 1, but made it out on Day 2.

We also had some drop-off. By the time we wrapped up on Sunday afternoon we had 26 attendees in the room. We missed an opportunity there: Had I thought of it in time, we could've gotten the die-hards to give us their names in Etherpad, then we could've diffed that against the original sign-up list and sent mail to the no-shows and the leavers asking what we could've done to retain them.

By way of compensation for the registration charge, we arranged pizza and pop gratis for lunch both days. Alex and his colleagues produced coffee on demand, and also clementine oranges and cookies on Day 2. All very good!

Setup issues

One reason we didn't get a better head count up front was that the instructors were still wrestling with network and video setup issues as the clock struck 9:00 on Day 1. We should've scheduled more than 30 minutes of set-up time before the students were to arrive. And unfortunately Jessica, who came with a Mac, was unable to get the Windows-centric university-owned video system to play nice, and she was condemned to delivering all her content from Ross's Windows laptop. With a maddeningly small keyboard.

Syllabus and students

From the standard syllabus we did the shell, Python, revision control with Git, SQL and testing units. Once again we had a lot of people in the room who already knew some R --- epidemiologists and linguists, in this instance. My opinion was reinforced that, had we the right materials and experience, we could get them a more-solid intro to good coding practices and testing if we were able to skip the "teach a language" step and give it to 'em straight in R. You can say "this is language-independent" all you like, but there's nothing like seeing it done with the tools you already use.

Bioinformaticians comprised the second-largest bloc of attendees, and there was a smattering of singletons from other disciplines too, I think. That's another thing we didn't capture explicitly. I'm looking forward to having an entry survey worked out to alleviate this in the future.

Here's the Good & Bad list that we asked them for in the afternoon of Day 2:

Negative Positive
  • How do I apply database stuff?
  • How do I import database data from Excel files?
  • Would like more about the shell
  • Need more basic shell commands, refresher, exercises?
  • Want more about testing, please,
  • More about data extraction/conversion
  • Could go deeper on Python
  • No entry into scientific /mathematical computing
    (Numpy was not on syllabus for this course)
  • Hard to see how to transfer the knowledge to my tools
  • Would be nice to combine the tools to produce one "big" project
  • Cheat sheets not comprehensive enough
  • Could use more on troubleshooting
  • Want more examples from my field
  • Attendees from one field might improve many things
  • Maybe split the class on day 2 into basic (more Python) and advanced (testing)?
  • More sharing of tool knowledge? Crowdsource?
  • Good breadth, lots of topics
  • Liked the intro to general programming
  • Version control detail welcome!
  • Not too scary for newbies
  • Hands-on component
  • Helpful helpers
  • Good coding style appreciated
  • Liked the cheat sheets (We had paper cheat sheets for shell, Python, SQL)
  • Different levels of Python exercises for different levels of student.

Regarding that last comment, at one point Jessica recommended to students:

depending on whether the student was feeling too-challenged or bored.

Despite the negative list being longer than the positive, almost all the (remaining) attendees seemed to me to be genuinely pleased with what they'd learned.


The tools we had them install were Python 2.7 (no iPython); GitBash if on Windows, Git otherwise; the Firefox SQLite Manager; and we recommended Notepad++ for Windows and Smultron for Mac by way of text editors.

We used Etherpad for out-of-channel communications and "group memory", which was voted a big win at the end of the event. I also handed out red and green stickies as status flags. They were used haphazardly. I think these semaphores might be Just One More Bleepin' Thing To Remember for the student, or else I didn't reinforce their use enough in the first hour. I'll probably try them again.

The biggest tool problems we had were with GitBash. I decided about two weeks before the event to call for GitBash instead of Cygwin for the Windows users, to teach the shell, since Jessica was planning to use it for teaching Git. This was a mixed success. The installation is simpler than Cygwin and it uses the native Windows directory structure, but there are surprises in GitBash that we banged our shins on: 'more' is missing, but 'less' is there. 'man' is missing, but 'cmd --help' usually works. (One helper thought that the absence of 'man' was actually a win. He has a point.) 'seq' is missing. 'file' is missing. The cut-n-paste facilities are inconvenient. And you don't need to set an executable bit on a script in order to execute it:

$ cat junk
echo "Hello bash"
$ ls -l junk
-rw-r--r--    1 ross     Administ       19 Jan 14 11:53 junk
$ junk
Hello bash

This last no doubt has something to do with the underlying Windows, but I feel like bash is now popular enough that it's spawning incompatible variants. *Sigh*. My advice to future bootcamp instructors is, try GitBash in the safety of your own home for a good long time before calling for it as an instructional tool. I'm still of two minds about it, myself.

Dialogue & Discussion

Comments must follow our Code of Conduct.

Edit this page on Github