University of Wisconsin-Madison

3rd Floor Teaching Lab, Wisconsin Institutes for Discovery, 330 N Orchard St, Madison, WI
Jan 13-16, 2015
8:30 am - 1:00 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 four half-day hands-on workshop 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.

Registration will open on Monday, December 15, at 5pm, and will be available from this page.

Instructors: Matt Gidden, Steve Goldstein, Lauren Michael, Danielle Nielsen, Cliff Rodgers, Paul Wilson

Helpers: Michelle Craft, Brent Hueth, Christina Koch, Daijiang Li, Andy Pohl, Anthony Scopatz, Sarah Stevens, Katie Zaman

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 be affiliated with the University of Wisconsin-Madison and should plan to be present for ALL days/sessions of the workshop. A laptop with a few specific packages installed will be needed for the days of the workshop (See "Setup", below). It is strongly recommended that participants already be familiar with basic programming concepts like loops, conditionals, arrays, etc.

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 workshop.


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


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