Home> Blog> New Year's Schedule for Software Carpentry

New Year's Schedule for Software Carpentry

This post originally appeared on the Software Carpentry website.

I'm teaching a cut-down version of Software Carpentry at the IASSE in two and a half weeks. I'll have students half days for the weeks of January 16 and 23, and full days for the week of February 6. That's only 20 lectures (rather than 26), so the question is, what to cut? The answer has wider implications, since this will be the version of the course I take to the AAAS workshop.

My plan is:

Jan16IntroductionRevised to be a forward summary of the whole course.
17Shell 1
18Shell 2
19Version Control
20MakeRevised so that it doesn't depend on Python.
Jan23Python 1Basic features.
24Python 2Strings and lists.
25Python 3Functions and Libraries.
26TestingBasic concepts.
27Mini-Project 1Build something useful with Python.
Feb06Python 4Dictionaries and exceptions.
DebuggingDeepened to include material from Zeller.
07Python 5Object-oriented programming.
Unit TestingUse the unit test framework to show what good OO design looks like.
08Coding StyleUpdate to include an actual Python style guide.
ReflectionComplete rewrite: exec, eval, sub-processes, etc.
09Regular Expressions
XML and DOM
10Development ProcessDescribe how a good shop actually works (with nods to XP and RUP).
TeamwareBased on Trac.

Client-side and CGI web programming, security, and databases have disappeared completely; the three lectures on process have been folded into one; and there's no end-of-course summary. I'm comfortable with those changes; what I don't like is the amount of time spent teaching Python-the-language. I'd rather spend those hours showing them how to use Python to automate development activities, but you can't cut trees 'til you have an ax.

Second, there's no place in this new scheme for a lecture based on Paul Dubois's CiSE article on maintaining correctness. There really ought to be: it shows the jigsaw puzzle of which many good practices are pieces.

Third, I'd like a second project lecture, showing students part of the build system for the course notes. This would let them see regular expressions and DOM in action, and would tie together many of the earlier ideas on automation. It's this or teamware, though, and I think the latter is more important. Having made that decision, I'm wavering on whether to pull out the material on regular expressions and DOM.

Finally, everything I have to say about the development process is now squeezed into a single hour. It makes sense in this case, since IASSE students will get several more courses on the subject, but it's definitely under weight for the AAAS workshop.

So: in order to pull this off, I'm going to have to revise one lecture per day from January 2 onward (including diagrams). I'll post the new materials here until they're polished, at which point I'll swap them into the standard location. I'll blog each time a lecture goes up: timely feedback would be greatly appreciated.