We started Week 2 with a morning of theory: Francois Pitt, a senior lecturer in U of T's Computer Science department, gave students a crash course in algorithmic complexity. It's not something they'll use every day (or even every week), but if they ever have a conversation with a computer scientist about making something go faster, the odds are good it'll come up.
The afternoon's material—the basics of classes and objects and Python—was more immediately practical. As always, I struggled with the fact that you have to know several things before any of them are useful: constructors don't make sense until you know what objects are, but you can't build objects without constructors (at least, not cleanly). The students spent the afternoon building simple classes to represent molecules; we'll spend tomorrow building more classes, then move on to testing and QA on Wednesday.
Originally posted at Software Carpentry.