Software Carpentry: A Practical Introduction to Good Programming Practices

Cambridge University

Craik-Marshall Building, University of Cambridge, Downing Site, Cambridge, CB2 3AR
Aug 26-27, 2014
9:00 am - 4:30 pm

General Information

Software Carpentry's mission is to help scientists and engineers become more productive by teaching them basic principles of good programming, which are applicable to any coding language or application. This includes program design, version control, data management, and task automation. These best practices will make your programs more sustainable, vastly reducing replication in your code over time, and make them easier to share with team members, collaborators and even in publications. This two-day hands-on bootcamp will cover basic concepts and tools; tutorials will cover the Unix Shell and version control in git, plus structured programming, managing data and testing, which will all be covered using python. Teaching will be a combination of live coding guided by the trainer and independent practical exercises.

Post course survey

Please fill in our post-course survey

Etherpad: Link to the etherpad.

Registration: Participants can register for this course at

Instructors: Rob Beagrie, Thomas Kluyver

Helpers: Jelena Aleksic, David Molnar

Who: The course is aimed at graduate students and other researchers who want to learn core skills and best practices for scientific computing. We will assume no prior knowledge, so novices are welcome! We will be using Python to explore program design, but we aim to cover principles that are applicable to other programming languages, so if you're an R or Matlab user you can also learn something useful.

Where: Craik-Marshall Building, University of Cambridge, Downing Site, Cambridge, CB2 3AR. Get directions with OpenStreetMap or Google Maps.

Requirements: We will be using one of the University's computer teaching rooms, so participants do not need to bring their own laptops.

Contact: Please mail for more information.


Day 1

09:00 Automating tasks with the Unix shell
10:30 Coffee break
12:00 Lunch break
13:00 Version control with Git
14:30 Coffee break
16:00 Wrap-up

Day 2

09:00 Building programs with Python
10:30 Coffee break
12:00 Lunch break
13:00 Testing and debugging in Python
14:30 Coffee break
16:00 Wrap-up


The Unix Shell

Programming in Python

Version Control with Git

  • Creating a repository
  • Recording changes to files: add, commit, ...
  • Viewing changes: status, diff, ...
  • Ignoring files
  • Working on the web: clone, pull, push, ...
  • Resolving conflicts
  • Open licenses
  • Where to host work, and why
  • Lesson material
  • Reference...
  • If you finish the material before the rest of the group, try reading about:


During this bootcamp, we will be using computers provided by the University of Cambridge. When you want to apply some of the tools and techniques we're going to show you to your own work, you will probably need to install some software on your work computer. It's quite common for attendees to have some issues installing some of these tools, so please try to follow the instructions on our Setup page before the bootcamp. That way, if you run into any problems, you will be able to ask the helpers or instructors for advice.