We are planning a major upgrade of this course in 2010.
If you would like to help, or provide feedback on our plans, please see "A Fresh Start" and "Changing Gears".

Software Carpentry is an intensive introduction to basic software development practices for scientists and engineers. All of the material is open source: it may be used freely by anyone for educational or commercial purposes.

The course was offered July 13-31, 2009, at the University of Toronto and the University of Alberta. Slides from the guest lectures on July 29 are available, as are the exercises the students did during the course. To keep up to date with future developments, please subscribe to our blog.

Lectures

  1. Introduction
  2. Python Basics
  3. Python Strings, Lists, and Files
  4. Python Functions and Modules
  5. Debugging
  6. Version Control
  7. Python Sets and Dictionaries
  8. Image Processing
  9. Basic Unix Shell
  10. More Unix Shell
  11. Automated Builds
  12. Computational Complexity
  13. Python Basic Object-Oriented Programming
  14. Python Advanced Object-Oriented Programming
  15. Quality Assurance
  16. Unit Testing
  17. Databases
  18. Regular Expressions
  19. Binary Data
  20. XML
  21. GUI Programming
  22. Web Client Programming
  23. How Web Servers Work
  24. Web Application Programming
  25. Empirical Software Engineering
  26. Software Development Lifecycles
  27. Summary
  28. License
  29. Glossary
  30. Acknowledgments
  31. Bibliography

An older version of these lectures is hosted at http://swc.scipy.org.

Readings

Acknowledgments

This work has been made possible by MITACS, Cybera, The MathWorks, the Python Software Foundation, the University of Toronto, and the University of Alberta.

Software

These course materials currently use Python 2.5 because some of the libraries that we rely on have not yet been updated to work with Python 2.6. Our current plan is to bypass 2.6 entirely, and move to Python 3.0 as soon as the libraries we depend on have been ported.