Fork me on GitHub

McGill University

Jan 10-11, 2015

8:00 am - 4:00 pm

Instructors: Gabriel Devenyi, Denis Haine, Marianne Corvellec, João Felipe Santos, Igor Kozlov

Helpers: Patricia Campbell

Please fill in the post-assement Survey



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

Who: The course is aimed at graduate students and other researchers.

Where: Trottier Building, McGill University, 3630 rue University. Get directions with Google Maps.

Contact: Please mail for more information.


Day 1

08:00 Automating tasks with the Unix shell
9:30 Coffee break
11:30 Lunch break
12:30 Version control with Git
14:00 Coffee break
16:00 Wrap-up

Day 2

08:00 Building programs with Python
9:30 Coffee break
11:30 Lunch break
12:30 Managing data with SQL
14:00 Coffee break
16:00 Wrap-up


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

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

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

Managing Data with SQL

  • Reading and sorting data
  • Filtering with where
  • Calculating new values on the fly
  • Handling missing values
  • Combining values using aggregation
  • Combining information from multiple tables join
  • Creating, modifying, and deleting data
  • Programming with databases
  • Reference...