Approximately seven months after our initial meeting, the SWC R community has developed the first set of R lessons for use both in workshops and for self-directed learning from the SWC website. These novice R lessons are a translation of the current novice Python lessons.
Translating these lessons was a big effort. Many thanks are due to both the major contributions made by Sarah Supp, Diego Barneche, and Gavin Simpson, as well as the contributions made by Carl Boettiger, Josh Ainsley, Daniel Chen, Bernhard Konrad, and Jeff Hollister (please let me know if I missed your contribution/review).
On language-agnostic lesson sets
The current set of novice R lessons fulfill the vision described in a summary of a meeting back in October 2012:
Dan Braithwaite and I recently taught these lessons at a workshop for novice biologists, and it went very well. Even though we weren't able to get through the entire lesson on command-line programs, it was very satisfying to see all the lightbulbs go off as they made the connection between the commands they were running in the shell the day before and the R code they wrote the second day (if you're interested, see this thread for more details on how the workshop went).
There is a general belief that SWC should be "language agnostic" and primarily teach the computing skills that transcend individual programming languages.
In general, the R-based workshops should reuse as much material as possible from the existing curriculum and contribute language-agnostic improvements and new lessons back to the "main" Python-based lesson set.
While focusing on language-agnostic principles enables us to cover lots of big ideas that are the core of Software Carpentry's mission like modular programming and automation, this means sacrificing the discussion of many important R-specific features. This has disappointed some R instructors. The dissenting view can be summarized by some recent posts to the r-discuss mailing list:
Should we not play to R's strength, rather than to another languages's weaknesses?And Gavin Simpson added (post):
We seem to be compromising R and an R-like approach just to maintain compatibility with the python lessons.
Thus we have two opposing philosophies. One wants to focus solely on the principles that transcend programming languages; while the other wants to teach the best practices through a more idiomatic approach.
A call for proposals
We set out about seven months ago to create a set of lessons that would be developed, maintained, and used by everyone in the Software Carpentry community who is teaching R. Having built these lessons, I now question whether that was the right goal.
First, while it was an accomplishment to finally have novice R lessons on the SWC website, the work of translating the materials ended up being done by only a few people, and only a few instructors have actually taught these materials in their workshops. Second, there is now another option for running R-based workshops, Data Carpentry. Thus, the common debate on how much we should focus on programming best practices versus data analysis skills has been somewhat solved: a Software Carpentry workshop should focus on programming best practices and a Data Carpentry workshop should focus on data anaylsis skills.
Third, in the wider SWC community, we are currently in the process of overhauling just about everything. The plan is to split up the bc repo, which will result in a new template for workshop websites and a new template for lesson material. One of the motivations for this effort is that instructors want the flexibility to add domain-specific data and introduce topics in an order that makes the most sense to them.
So instead of upfront trying to democratically choose a compromised solution for R-based workshops, let's try a more distributed approach. Any SWC R instructor can propose a new set of lessons and recruit other interested instructors to help create them. Once the lessons are finished, they can be submitted for official approval to be taught in Software Carpentry and/or Data Carpentry workshops (this approval process is also under development). With this approach, each set of R lessons will be maintained in proportion to the number of instructors interested in teaching them.
If you have an idea for a new set of R lessons, please send your proposal to the r-discuss mailing list. You should include a basic outline of your approach and what you intend to cover. For an example, please check out Scott Ritchie's blog post where he outlines his idea for a set of R lessons. In addition to describing your approach, it would be useful to include the answers to the following questions:
- How much time will it take to teach the lessons?
- Are the lessons intended for Software Carpentry, Data Carpentry, or both?
- How can other instructors help? Do you need others to help create and/or review the lessons?
- What learners are you targeting? Novice, intermediate, advanced? A specific discipline?
Hopefully this approach will lead to multiple sets of R lessons available for use in our workshops. I look forward to seeing the new proposals!