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
- Introduction
- Python Basics
- Python Strings, Lists, and Files
- Python Functions and Modules
- Debugging
- Version Control
- Python Sets and Dictionaries
- Image Processing
- Basic Unix Shell
- More Unix Shell
- Automated Builds
- Computational Complexity
- Python Basic Object-Oriented Programming
- Python Advanced Object-Oriented Programming
- Quality Assurance
- Unit Testing
- Databases
- Regular Expressions
- Binary Data
- XML
- GUI Programming
- Web Client Programming
- How Web Servers Work
- Web Application Programming
- Empirical Software Engineering
- Software Development Lifecycles
- Summary
- License
- Glossary
- Acknowledgments
- Bibliography
An older version of these lectures is hosted at http://swc.scipy.org.
Readings
- Gregory V. Wilson: "Where's the Real Bottleneck in Scientific Computing?" American Scientist, January/February 2006.
- Greg Wilson: "Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive" Computing in Science & Engineering, November/December 2006.
- Greg Wilson: "Those Who Will Not Learn From History..." Computing in Science & Engineering, May/June 2008.
- Jo Erskine Hannay, Hans Petter Langtangen, Carolyn MacLeod, Dietmar Pfahl, Janice Singer, and Greg Wilson: "How Do Scientists Develop and Use Scientific Software?" Proc. Second International Workshop on Software Engineering for Computational Science and Engineering, 2009.
- Gregory Wilson: "How Do Scientists Really Use Computers?" American Scientist, September/October 2009.
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.
- Mac OS X:
- Windows:
- Python 2.5
- SmartSVN (with JRE---use this installer if you have JRE 1.4.1 or higher already installed)
- Wing IDE Personal Edition
- Python Imaging Library 1.1.6
- PyGame
- NumPy 1.3 for Python 2.5
- Download and double-click PyGraphics-2.0.win32.exe to install the media tools.
- nose
- Install setuptools
- Run DOS Command Prompt (Start -> All Programs -> Accessories -> Command Prompt)
- In DOS, type:
C:\Python25\Scripts\easy_install nose. (For this step to work, you must be connected to the internet)
- Cygwin (a Unix emulation package for Windows).
- Double-click the installer to run it.
- Choose "Install from Internet".
- Use "C:\cygwin" as the root directory.
- Use any convenient directory as the Local Package Directory.
- Use any convenient download site.
- The default set of packages is all you need for this course, but you may find others useful for your own work.
- Ubuntu/Debian Linux:
sudo apt-get install python-imaging python-imaging-tk python-pygame python-numpy python-setuptools
- SmartSVN
- Wing IDE Personal Edition (use this installer if you prefer an RPM)
- Download PyGraphics.tgz, open a shell, and then:
tar zxvf PyGraphics.tgz
cd to the cpython subdirectory
sudo python setup.py install
- Install nose with
sudo easy_install nose