Section 3 The Carpentries

The Carpentries is an umbrella organisation which sits over the top of several lesson programs (Software Carpentry, Data Carpentry and Library Carpentry) in order to provide a common structure focusing on valuing teaching skill and quality lessons to bring workshops with greater impact to research organisations. A major activity of the organisation is to run instructor training workshops which prepare instructors drawn from research and research-support communities to apply evidence based teaching practices. The Instructor Training Program is openly and freely made available under a Creative Commons CC-BY license model. The Carpentries also runs instructor training events for member organisations who make a commitment to annually supporting them. Through trained instructors and openly developed community lessons, any research organisation in the world can create a highly effective and impactful instructor community. To learn more, you can look at the membership models and reach out to memberships@carpentries.org for more information.

3.1 Software Carpentry

Software Carpentry aims to aid researchers to become more capable in writing software for research applications. This means focusing on programming languages, scripting environments and applying version control to manage code. Software Carpentry workshops use a hands-on type-along pedagogy to aid researchers in building confidence and capability in the UNIX Shell (BASH), Python or R and the version control software Git. Optionally we have modules for unit-testing and SQL which can also help round-out a two-day workshop, based on needs. The Software Carpentry workshop is a great way to get-started building some computational skills and abilities into a research community. The practical and hands-on skills, and the methods by which they are taught can be useful for other follow-on advanced teaching.

3.1.1 Lessons

Software Carpentry aims to help people begin to think computationally about the work they do. It does this by introducing pieces of software which are useful stable and used by very large communities of researchers around the world. The emphasis isn’t on new and flashy technologies, but those that have been battle-tested and used for years. Software Carpentry starts with the shell for task automation, then by introducing a programming language such as R or Python, and then by bringing in version control systems such as Git to ensure that research work done can be easily retrieved, repeated, or adapted for other uses. Using these methods, learners can lay the foundation for performing open, reproducible research.

Software Carpentry maintains lessons in the Unix Shell, Git, R, Python, SQL, Make and Mercurial. Software Carpentry lessons focus on teaching tools in a discipline-agnostic way, in order to help researchers from all disciplines develop skill with the tools. Software Carpentry lessons aren’t meant to be exhaustive and comprehensive enumerations of all possible features of a particular tool. Instead the lessons seek to strike a balance of reducing cognitive load, while empowering the researcher to have a better understanding of how the tool could be applied in their workflow.

Visit the Software Carpentry Lessons website to see the most up to date listing of our lesson

3.1.1.1 Command Line

Command Line Interfaces or (CLIs) are a time-tested and efficient way to direct and control a computer. Software Carpentries’ flagship UNIX Shell lesson is the most taught lesson in Software Carpentry and helps bring novice learners toward an appreciation of their benefit. We teach a very small number of tools, but work through live coding and challenges we break down and demystify the dark art of constructing command line incantations. At the end of this module, learners have a better sense of using the shell environment to glue together programs and code from various languages. They also learn how to write simple scripts which are generalized and abstracted to run over different kinds of input such as piped text or directories of files.

3.1.1.2 Version Control

The Software Carpentry version control lessons help to motivate version control in a research context. They focus on the mechanics of how the version control tool works, and then how to use the tool in an online and then collaborative context. In this way we build up a mental model for the power of version control and demonstrate through challenges and activities ways the learner can leverage version control in their own research workflows.

3.1.1.3 Programming

The programming lessons in Software Carpentry focus on a particular scientific programming language, R, Python or MATLAB and help learners feel more comfortable in that language while gaining exposure to important software development practices. The Software Carpentry approach is one of empowering learners, so rather than teaching an exhaustive set of data types, the lessons focus on practical examples. Learners then learn about new data types and language constructs along the way, preventing data types being taught in the abstract.

The Carpentries can help you to run your first Software Carpentry Workshop at your organisation. Request a workshop today!

3.2 Data Carpentry

A Data Carpentry workshop teaches the core skills for working with data effectively and reproducibly.

When working with data, it’s often difficult to figure out what skills to learn or how to get started learning them. In Data Carpentry, we identify the fundamental skills needed in a given domain and develop and teach these skills in hands-on, two-day, interactive workshops. Workshops are currently designed for people with little to no prior computational experience and are domain-specific, so that researchers are working with data most relevant to their own work. They follow a narrative structure, working with one dataset through the whole data lifecycle from data and project organization to data analysis and visualization.

3.2.1 Lessons

Data Carpentry currently have curriculum in:

  • Ecology Genomics Geospatial data Social sciences

The Carpentries can help you to run your first Data Carpentry Workshop at your organisation. Request a workshop today!

3.3 Library Carpentry

Library Carpentry aims to help people in library and information roles develop software and data skills.

3.3.1 Lessons

Library Carpentry has nine lessons in the works, some more mature than others. New lessons are being drafted around FAIR principles and digital preservation.

Lesson Scope
Data intro for librarians An introduction to data structures, regular expressions, and computing terms
Unix Shell An introduction to command line interfaces and task automation using the Unix shell
OpenRefine An introduction to cleaning up and enhancing a dataset using OpenRefine
Git Intro for Librarians An introduction to version control using Git and GitHub for collaboration
SQL for Librarians An introduction to relational database management using the SQLite tool
Webscraping An introduction to extracting structured data from websites using a range of tools
Tidy data for librarians An introduction to good data organisation, which is the foundation of much of our day-to-day work in libraries
Introduction to Python An introduction to Python, a general purpose programming language
Data Intro for Archivists An introduction to data structures, regular expressions, and computing terms for archivists

The Carpentries can help you to run your first Library Carpentry Workshop at your organisation. Request a workshop today!

3.4 Other Skills Workshops

The Programming Historian has a number of useful lessons on a range of tools and skills.

These lessons would be applicable to anyone who wants to improve their digital skills - they have wider relevance beyond the fields of history and the humanities.