In response to my weekend post about what we teach in two days, Steve Haddock sent me this link to a four-day course based on the excellent book Practical Computing for Biologists that he co-wrote with Casey Dunn. It's worth reading and pondering in full, but in brief, their curriculum (in half-day chunks) is:

  1. Installing software and working with text editors.
  2. Using a command-line shell to create pipelines.
  3. Python.
  4. More Python.
  5. Scientific Python (and a bit on graphics).
  6. More on Python graphics, bioinformatics, and generating web pages with Sphinx.
  7. Relational databases.
  8. Images.

The delight is in the details, of course, but the three things that jump out are (a) having half a day at the start to get things set up, (b) the domain-specific material (scientific Python, bioinformatics, making graphs, etc.), and (c) the absence of version control. What doesn't show up here, but was clear from Steve's email, is that they also spend much more time doing hands-on exercises than we do in a two-day course. If we cut out databases, so that we were only covering the shell, (very) basic Python, and version control, we could do more hands-on work, but I don't know if narrower-but-deeper is a good trade-off or not. As I said two years ago in a slightly different context, the problem is never figuring out what should be in a course; the problem is always to figure out what should be left out.

This post originally appeared in the Software Carpentry blog.