Teaching R at UBC
This post originally appeared on the Software Carpentry website.
This January we ran a second R-based bootcamp at the University of British Columbia over three days. It was taught by myself, Rick White, Bernhard Konrad, Davor Cubric and Jenny Bryan. The first day was a week before the last two days, and covered a basic introduction to R. The last two days was an advanced R workshop / Software Carpentry. We covered the following topics:
- Version control with git
- Regular expressions
- Advanced graphics with ggplot2
- Writing functions
- Reproducible research using knitr
- S3 Objects and classes
- R package creation
This probably represents a strong divergence from a normal software carpentry workshop in that we were very heavily focused on the giving people the advanced skills they were interested in learning in a particular computing environment, in this case R. So here are some thoughts on what worked and what didn't work.
What Worked
A common programming environment: By far the most striking difference between this workshop and the one we ran in the past was that everything just worked. In fact we did away with helpers all together because we didn't need them. As opposed to past workshops where we tried to teach everyone in the environment they liked to work in with R (console, emacs, Tinn-R, Eclipse etc..) we insisted everyone install RStudio. The beauty is that RStudio just works no matter what the platform. Because everything we taught was within R everyone could just do everything. Frankly it was glorious.
Catering to people's needs: Before we began this workshop we sent out a comprehensive survey to all the people on the waiting list for the previous workshop. We asked them to rank the topics they were interested in and this allowed us to teach effectively to our audience. While graphics might seem way off the map for us as an organization it's what people wanted and we were able to provide them with that.
The language people use ties it together: We all walked away from the workshop feeling that showing people how to do things like version control and regular expressions in the enviroment they use day to day really helped solidify it for them. We didn't use regular expressions or Git abstractly from R, but showed them: "Here's how you can do these things in R, which is great because you use R every day."
What didn't work
People don't always know what they want: While we had great luck catering to some needs (think ggplot2), people don't always know what they want. Despite high interest on our survey about packages and objects, most people left the last afternoon, leaving only 5 for the last 2 sessions. Most people said: "I'll never make a package, so I don't care." Also it might be just too much. We're considering cutting some material down, cutting some sections and combining our R workshop into 3 days, 9-3 each day on a MWF.
If it seems like enough material make it shorter: Every section we taught ran over in time. Those that came in close always worked through one of two methods. We either skipped student exercises and just lectured and had the students type along with us or had an erratic pace. This lead to people commenting that things went from easy to hard too fast. This was because we'd linger too long in the beginning on the basics and then realize time was short and jump to the advanced material with no bridge between. The lesson for us was less material with more student exercises is always better.