Lesson Material

This directory contains one page for each Software Carpentry lesson package. Each of those pages uses {% include %} to include all of the lesson material for viewing and checking.

Software Carpentry

This material is original to Software Carpentry.

The Unix Shell
Core material for the Unix shell: the organization of files and directories, creating and deleting things, the pipe and filter model, processing multiple files using loops, putting commonly-used commands in shell scripts, and finding things.
To do: diagrams.
Version Control with Git
A short introduction to version control using Git and GitHub that builds toward a branch-per-feature workflow.
To do: lots of revision; diagrams.
Basic Programming Using Python
An introduction to basic programming concepts using the IPython Notebook, skimage.novice, and ipythonblocks.
To do: lots.
Sets and Dictionaries
Optional material for Python programming: sets and dictionaries, how hash-based data structures work, the JSON data format (which relies heavily on dictionaries), and three examples of increasing complexity.
To do: diagrams.
Invasion Percolation
Invasion percolation is a good half-day example that brings together many of the things we teach about programming while introducing new concepts like performance profiling and development lifecycles.
To do: diagrams; challenges; IPython Notebooks.
Databases and SQL
Core material for SQL databases: selection, removing duplicates, filtering with Boolean conditions, performing calculations on values, sorting, handling NULLs, aggregating values, grouping, joining multiple tables, a very brief introduction to creating tables and inserting data, an equally brief coverage of transactions, and a couple of examples showing how to uses databases from inside a program.
To do: diagrams, and material on how to design and structure tables.
Web Programming with Python
Preliminary material on web programming: a little bit of history, basic HTML, using a templating engine to create pages, how HTTP works, fetching data programmatically, providing data by dynamically generating static pages, why and how to create an index, and data syndication.
To do: diagrams; switch from Jinja2 to Jekyll (since that's what GitHub uses).

The Hacker Within

This material originated with a grassroots group at the University of Wisconsin - Madison called The Hacker Within. We are grateful for their permission to re-use it.

The Unix Shell
This introduction is based on materials by Milad Fatenejad, Sasha Wood, and Radhika Khetani, and includes a single tutorial.
Version Control With Git
This introduction is based on materials by Katy Huff and Anthony Scopatz as modified by Joshua R. Smith and Sri Hari Krishna Narayanan. It includes:
Introduction to Python
An introduction to the basic features of Python, which covers: Most sections also include some exercise material.
Python Debugging
This introduction is based on materials originally written by Anthony Scopatz and Patrick Fuller. It includes a notebook.
Testing with Python
This introduction is based on materials originally written by Katy Huff, Rachel Slaybaugh, and Anthony Scopatz. It includes a notebook.
NumPy
An introduction to array-based computing in Python from Matthew Terry. It consists of a notebook.
SciPy
A supplement to the NumPy tutorial from Anthony Scopatz. It also consists of a single tutorial.
Plotting in Python with matplotlib
An introduction to plotting in Python using matplotlib originally written by Anthony Scopatz and Katy Huff. It consists of a notebook.
Documentation
An introduction to documenting code from Anthony Scopatz. It consists of a notebook.

Miscellaneous

This material was written and contributed by a variety of people. We are grateful for their permission to reuse it.

Introduction to R
An introduction to R originally developed by Prof. Jenny Bryan at the University of British Columbia, and modified by others for use in Software Carpentry bootcamps. See the main tutorial file for the starting point.
Introduction to Pandas
An introduction to the Pandas statistical library written by Indiana University's Michael Hansen, contained in a ipython notebook (HTML rendering).
Introduction to Biopython
An introduction to bioinformatics computing using biopython originally written by Will Trimble, Aron Ahmadia, and others. It covers:
Installing a Python Package Locally
A short introduction to installing grin with pip and updating PATH to find it that was originally created by Cindee Madison. (And yes, those terms are all explained in the tutorial.)