Thanks to grants from Cybera and MITACS, the University of Alberta and the University of Toronto will offer the Software Carpentry course (for a subsidized fee) as a condensed three-week boot camp this summer from July 13-31, 2009 on the University of Alberta campus. This course is an accelerated introduction to software development aimed at graduate and post-graduate students in science and engineering; its goal is to give them the tools and skills they need to use computers more effectively in their research.

At the University of Alberta, 16 spaces are available to Alberta-based students registered in full-time graduate programs or are currently holding Post-Doctoral Fellowships at an Alberta institution.

The Registration Fee for the course is $500 for all students. (The grants from Cybera and MITACS have already reduced this fee greatly from the actual cost.) Up to 8 students from outside the Edmonton area will be eligible to receive, at no additional cost (beyond the Registration Fee), accommodations in a student residence for the length of the course. All students, or their supervisors, are responsible for their own travel and living expenses. NOTE: If desired, it is also possible for Alberta students to participate in the course via Access Grid (aka videoconferencing) software. Contact the organizers for details.

NEW (June 24, 2009): A draft schedule of the day-to-day topics is now on-line. Note that, for Edmonton, the daily, Monday-Friday schedule is: Lecture 1 from 8 AM to 9 AM, Lab 1 from 9 AM to 11 AM, lunch from 11 AM to noon, Lecture 2 from noon to 1 PM, Lab 2 from 1 PM to 3 PM). The labs will be proctored by 2 TAs.

If you wish to attend the course, or would like more information on content, schedule, prerequisites, eligibility, or other details, please contact Paul Lu by email at You should also cc your email to Ken Bauer at Please also subscribe to the new Software Carpentry blog at for updates.


Many scientists and engineers spend much of their lives programming, but only a handful have ever been taught how to do this well. As a result, they spend their time wrestling with software, instead of doing research, but have no idea how reliable or efficient their programs are.

Software Carpentry is an intensive introduction to basic software development practices for scientists and engineers that can reduce the time they spend programming by 20-25%. All of the material is open source: it may be used freely by anyone for educational or commercial purposes, and research groups in academia and industry are actively encouraged to adapt it to their needs. Originally developed for Los Alamos National Laboratory, the course has been used at research labs and universities on four continents. Topics include:

  • Using the Unix Shell
  • Version Control
  • Automated Builds
  • Basic Scripting with Python
  • Testing and Quality Assurance
  • Systematic Debugging
  • Object-Oriented Design
  • Data Crunching with Regular Expressions, XML, and SQL
  • Basic Web Programming and Security
  • Agile Software Development Process

The course will be structured as an hour-long lecture and a two-hour lab session twice daily. Students are strongly encouraged to co-apply with peers so that they can work together on projects relevant to their research during the latter half of the course. Guest lecturers will discuss computer-supported collaborative science, grid computing, and legal issues related to sharing scientific data and software.


Paul Lu is an Associate Professor of Computing Science, University of Alberta. His research areas include high-performance computing, bioinformatics, and operating systems. In the past 5 years, Paul has taught courses on operating systems, Internet applications and programing, C programming, and interdisciplinary science (i.e., Science 100).

Ken Bauer is a Ph.D. student in the Department of Computing Science, University of Alberta. His research area is software engineering, especially distributed collaborative software engineering and education. He has taught undergraduate courses in software engineering.

Greg Wilson holds a Ph.D. in Computer Science from the University of Edinburgh, and has worked on high-performance scientific computing, data visualization, and computer security. He is now an Assistant Professor in Computer Science at the University of Toronto, where his primary research interest is software engineering for computational science. Greg is on the editorial board Computing in Science and Engineering; his most recent books are Data Crunching, Beautiful Code, and Practical Programming.