About

Since 1997, Software Carpentry has taught scientists and engineers the concepts, skills, and tools they need to use and build software more productively. All of the content is freely available under a Creative Commons license, and we are constantly adding and updating lectures, videos, and exercises.

Can Software Carpentry help you? These comments from former students and our three-minute pitch, can help you decide.

Can you help Software Carpentry? We are an open source/open license project, and there are many ways in which volunteers can contribute. We also have several funding models, so if you would like to help people around the world solve the problems they face today, and prepare them to tackle the larger challenges of parallelism, cloud computing, reproducible research, and global-scale collaboration, please get in touch.

Version 4

We are currently updating the content and format so that students can work through the material they need, when they need it. The lectures we have completed so far cover:

  • Version Control – Learn how to collaborate with other people and automatically create a record of previous work using a version control system.
  • The Shell – Much of scientific computing involves the Unix operating system.  Effectively using the shell is one of the first steps to efficient Unix programming.
  • Python – A versatile open source language that is increasingly popular among scientific programmers.
  • Testing – The basics of software testing, including exception handling and unit testing.
  • Sets and Dictionaries – Using associative data structures to better represent data that isn’t a list or vector.
  • Regular Expressions – Manipulate text quickly with this powerful set of pattern matching tools.
  • Databases – An introduction to SQL, the most popular database query language.
  • Classes and Objects – The basics of object-oriented programming.
  • Program Design – An example driven introduction to effective program design.
  • Systems Programming – How to manipulate files and directories from a program.
  • Make – This tool will help automate everything from large software builds to batch processes.
  • Matrix Programming – Use array libraries to make numerical programs smaller and faster.
  • MATLAB – The world’s most popular numerical programming language.
  • Multimedia Programming – Work with images, sound, and other media.
  • Spreadsheets – Learn to use spreadsheets for data organization, analysis, and visualization.
  • Essays – Longer (non-video) discussion of some important ideas in scientific programming.
  • Recommended Reading – An annotated bibliography.
  • Glossary – Key terms.

Version 3

The lecture notes from Version 3 of this course (2004-2009) are available at http://software-carpentry.org/3_0/.

Further Reading