Software Carpentry

AAAS Workshop

Greg Wilson will be running a workshop titled Essential Software Skills for Research Scientists on February 17, 2006, at the Annual Meeting of the American Association for the Advancement of Science in St Louis. The aim of the workshop is to persuade scientists (particularly senior scientists and administrators) that basic software engineering skills are essential to doing computational science well. If there are any topics you would particularly like covered, if you have experiences you'd like to share, or if you know people who particularly ought to be invited, please contact Greg.

The Problem

Many scientists and engineers spend much of their lives writing, debugging, and maintaining software, but only a handful have ever been taught how to do this effectively: after a couple of introductory courses, they are left to rediscover (or reinvent) the rest of programming on their own. The result? Most spend far too much time wrestling with software when they'd rather be doing research, but still have no idea how reliable or efficient that software is.

The Solution

This site presents an intensive course on basic software development practices for scientists and engineers. Its aim is not to turn biochemists and mechanical engineers into computer scientists; instead, it introduces them to the 10% of modern software engineering that will satisfy 90% of their needs. The course has been taught at laboratories and universities in Canada and the United States since 1998. It is now being upgraded, and will be made freely available under an open license in the fall of 2005.

Course Materials

Single Lectures Combined Gzip'd Tar Zip
Source Code X X

Last updated Thu Nov 10 20:03:30 2005.

This Nature article describes the course's background and goals in more detail; this short quiz will help you decide if this course is for you.


This work has been made possible by a grant from the Python Software Foundation, and by support from the University of Toronto.

Fall 2005 Offerings

CSC2125: Topics in Software Engineering
Department of Computer Science,
University of Toronto
Instructor: Greg Wilson
Open to graduate students in science and engineering at the University of Toronto. See this page for details.
Department of Computer Science,
Indiana University
Instructors: Andrew Lumsdaine and Peter Gottschling
For students in informatics and science at Indiana University. See here for details.

Python University of Toronto Prince Subversion Trac