University of Wisconsin-Madison

3rd Floor Teaching Lab, Wisconsin Institutes for Discovery, 330 N Orchard St, Madison, WI
Aug 25-26, 2014
8:30 am - 4:30 pm

General Information

Software Carpentry's mission is to help scientists and engineers become more productive by teaching them basic lab skills for computing like program design, version control, data management, and task automation. This two-day hands-on bootcamp will cover basic concepts and tools; participants will be encouraged to help one another and to apply what they have learned to their own research problems.

Instructors: Karl Broman, Matt Gidden, Daijiang Li, Lauren Michael, Paul Wilson

Helpers: Anthony Scopatz

Who: The course is aimed at UW-Madison graduate students, post-docs, staff, and faculty who have basic familiarity with programming concepts (like loops, conditionals, arrays, and functions), but need help translating this knowledge into practical tools to help them work more productively.

Where: 3rd Floor Teaching Lab, Wisconsin Institutes for Discovery, 330 N Orchard St, Madison, WI. Get directions with OpenStreetMap or Google Maps.

Requirements: Participants must bring a laptop and should plan to be present for all sessions of the bootcamp. Additional setup information will be sent to registered students prior to the boot camp.

Contact: Please mail for more information.


Please follow the link to our Schedule page, which will be used to direct you to each lesson during the bootcamp.


Please follow the link to our Setup page, and complete the instructions prior to the bootcamp.


The Unix Shell

  • Files and directories: pwd, cd, ls, mkdir, ...
  • History and tab completion
  • Pipes and redirection
  • Looping over files
  • Creating and running shell scripts
  • Finding things: grep, find, ...
  • Reference...

Programming in Python

  • Using libraries
  • Working with arrays
  • Reading and plotting data
  • Creating and using functions
  • Loops and conditionals: for, if, else, ...
  • Defensive programming
  • Using Python from the command line
  • Reference...

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
  • Reference...