One of our goals for the next three months is to create an instructor's guide for Software Carpentry to help people teach this material more effectively: something akin to the SSI's "How to run a Software Carpentry bootcamp", but larger, and focused on the content. For example, when we teach the Unix shell (which is normally the morning of the first day), we actually don't introduce many commands—last time I actually checked, I only showed learners pwd, mkdir, cd, ls, rm, mv, cat, head, tail, wc, cut, and history. Instead, our real aims are to give them what they need to get through subsequent programming exercises in Python (i.e., creating data files, moving program files around, etc.), and to:
- familiarize them with the hierarchical folders-of-folders-of-files nature of the file system
- show them how tab completion and history let them do more with less typing (and fewer mistakes)
- show them how they can take what they've done interactively and turn it into a reusable script
- introduce the notion of combining pieces you have in a uniform way (the pipe and filter model) to create new tools as a way of reducing cognitive load
That last point is the big one, but it doesn't appear explicitly anywhere in our online video tutorials (largely because I didn't realize that was the big lesson until earlier this year—it's a classic case of expert blind spot).
So my question is, what would you like in an instructor's guide? If you took part in one of our workshops, what would you pass on to someone else who was about to teach the material to help them do a better job? Please send us comments (either on this post, or by email), and thank you in advance.