Titus Brown, one of my advisors, invited me to attend a Software Carpentry workshop with him as a TA. Titus, Tracy (a research associate from MSU) , QP (one of Titus’s grad students), and I all traveled out to San Diego, CA this past week to teach SWC at Scripps Research Institute. This post and a couple of others following it will address my experience with SWC, what I learned from the experience, what I thought worked well in the workshop, and my recommendations for others who are teaching workshops in the future.
What is Software Carpentry?
SWC is a nonprofit organization begun by Greg Wilson that is supported by the Sloan Foundation and Mozilla which seeks to train scientists in computing so that they can be more effective and productive with their research. The workshops provided by SWC are short and intensive. SWC also provides a large variety of online lessons and resources for students and teachers alike to continue their education at their own pace. All SWC content and materials are available under a Creative Commons license – meaning that you can re-use and re-mix it freely. Here is a page describing people who have taught or still teach SWC workshops.
What does SWC cover?
SWC workshops cover the core skills that scientists require to be productive in a collaborative research environment: introductory programming, version control, testing, using the shell, relational databases, and matrix programming. Below is their 90-second pitch:
Originally, Titus and Tracy were going to co-teach with a professor from another university. The three of them, plus Andrew, the professor hosting the workshop at Scripps, communicated back and forth via email for about three weeks leading up to the workshop.
The first step to determining the curriculum was creating a google doc publicly visible to all educators for the workshop and making a list there of all the topics that people wanted to cover. Then they split up the topics, and started drafting websites and IPython Notebooks for teaching purposes. They simultaneously continued communicating via email about different ways to assess student understanding during the crash-course in computing.
At the last minute, the third instructor came down with a bad cold and ended up having to cancel his attendance to the workshop. This hitch resulted in Titus modifying the lesson plans to suit only having two professors while we were on a plane from Denver to San Diego. It was fascinating for me to watch him work. In a text document, he made a long list of topics that he thought were necessary to cover, added interesting comments and jokes throughout, and re-planned who would cover each subject.
Finally, as a last preparation technique for instructors, students were asked to complete a pre-survey about their experience with computing and their reasons for taking the class. Below I am summarizing some of the results of the survey.
|Write a short program to read a file containing columns of numbers separated by commas, average the non-negative values in the second and fifth columns, and print the results.||36/69 said “I wouldn’t know where to start.”24/69 said “I could probably struggle through it.”|
|In a directory with 1000 text files, create a list of all files that contain the word Drosophila, and redirect the output to a file called results.txt||38/69 said “I wouldn’t know where to start.”22/69 said “I could probably struggle through it.”|
|Check out a working copy of a project from version control, add a file called paper.txt, and commit the change.||56/69 said “I wouldn’t know where to start.”|
An open-ended query was: Please write a couple of sentences describing the most annoying/difficult thing about computers in your research. Some answers trends are listed below:
- Processing large data text or excel files
- Running unix programs that were downloaded off the internet
- Doing repetitive tasks
- Streamlining repetitive data processing tasks
Successes: As I imagine most SWC educators do, we all communicated via technology for a few weeks before the workshop in order to be as prepared as possible. It was a good way to (somewhat) get to know the other people we would be teaching with, before we arrived in San Diego. Also, the pre-survey was very helpful to gauge the knowledge, motivation, and expectation level of our students.
Recommendations: Use a “google group” for email communications. During the few weeks of email correspondence, I would always have a large number of emails (and multiple different conversation threads) filling up my inbox. With a google group, you can alter your settings so that you are only notified of the group’s correspondence once (or several times) per day. Further, all messages which are in the same thread are grouped together chronologically for readability. I would highly recommend transitioning to some structure like a google group. I also think that a more pointed and detailed survey of students’ background with computing, reasons for taking the course, and their own learning objectives they have for the course would be helpful.