University of Southern California

Davidson Continuing Education Conference Center, 3415 S Figueroa St., Los Angeles
Sept 16-17, 2013
8:30 am - 4:30 pm

Instructors: Ariel Rokem, Matt Terry, John Mehringer, Karan Vahi

What: Our goal is to help scientists and engineers become more productive by teaching them basic computing skills like program design, version control, testing, and task automation. In this two-day boot camp, short tutorials will alternate with hands-on practical exercises. Participants will be encouraged both to help one another, and to apply what they have learned to their own research problems during and between sessions. Attendants are offered online office hours: regular events to get one-on-one help from Software Carpentry instructors, online.

Who: The course is aimed at postgraduate students and other scientists who are familiar with basic programming concepts (like loops, conditionals, arrays, and functions) but need help to translate this knowledge into practical tools to help them work more productively. Basic knowledge of programming and data structures is presumed.

Enrolment in this bootcamp is restricted to USC Faculty, Staff and Students. Please use our Eventbrite site for registration.

Requirements: Participants must bring a laptop with a few specific software packages installed. (The list will be sent to participants a week before the boot camp.)

Content: The syllabus for this boot camp will include:

In addition, there is a custom USC module on

Contact: Please mail for more information.

Parking: Attendees can park in 'Structure D' which is closest to the Davidson Center . The daily rate is $10.00.

Alternatively people from the Health Science Campus can take the shuttle to the main campus. Look at the schedule for Intercampus Service from HSC to UPC here. We recommend taking the 7AM shuttle on the first day, especially if you have not been to Davidson Center before.

Note: Attendees are responsible for paying for parking. Registration fees don't include parking.


The Bash Shell

Bash is a commonly-used shell. Using a shell gives you more power to do more tasks more quickly with your computer.


The default shell in Mac OS X is bash.


Install Git Bash following the instructions here.


The default shell is usually bash but if not you can get to bash by opening a terminal and typing bash.


When you're writing code, it's nice to have a text editor that is optimized for writing code, with features like automatic color-coding of key words.


We recommend Text Wrangler, Sublime Text, or Text Mate 2.


Notepad++ is a popular free code editor for Windows.


Kate and gedit are options for Linux users.


Git is a state-of-the-art version control system. It lets you track who made changes to what when and has options for easily updating a shared or public version of your code on

Download and install the most recent version from here

Install Git Bash following the instructions here.


If git is not already available on your machine you can try to install it via your distro's package manager (e.g. apt-get git).


Python is becoming more and more popular in scientific computing, and it's a great language for teaching general programming concepts due to its easy-to-read syntax. We will be using Python version 2.7. Installing all the scientific packages for Python individually can be a bit difficult, so we recommend using an all-in-one installer.

Please install Enthought Canopy .

Virtual Machine

Installation issues can and do happen. To ensure that you can continue to participate in a lesson even if one of your software programs fails, we provide a Linux virtual machine that contains most of the necessary software pre-installed.

Please download and install Virtual Box for your OS from here . Please download the SWC VM file from here. On the first day we will do a walkthrough of how to setup and launch the bootcamp VM through Virtual Box.

The Workflows module and the RNASeq Module on the second day will be done using the Pegasus VM.

Note: The Pegasus VM does not have a GUI. The IPython notebook and the plotting exercises with matplotlib need X environment and cannot be done in the Pegasus VM, which is why you also need to download the SWC VM.

Day 1
8:30 - 9:00 Introduction and Setup Help -
9:00 - 10:00 The Unix Shell Video
10:00 - 10:15 Coffee -
10:15 - 11:00 The Unix Shell -
11:00 - 12:00 Version control with git Video
12:00 - 1:00 Lunch -
1:00 - 2:30 More git -
2:30 - 2:45 Coffee -
2:45 - 4:30 Programming in Python Video
Day 2
8:30 - 9:30 Scientific computing in Python ( Plotting, Arrays ) Video
9:30 - 9:45 Coffee -
9:45 - 12:00 Software validation and testing Video
12:00 - 1:00 Lunch -
1:00 - 1:45 Introduction to HPCC Video
1:45 - 3:15 Introduction to Workflows and Pegasus Video
3:15 - 3:30 Coffee -
3:30 - 4:00 Pegasus and Workflows continued. -
4:00 - 4:30 RNASeq Workflows Video
4:00 - 4:30 Wrap-up and feedback -

Reference Guides