ABSTRACT

Writing and running software is now as much a part of science as telescopes and test tubes, but most researchers are never taught how to do either well. As a result, it takes them longer to accomplish simple tasks than it should, and it is harder for them to share their work with others than it needs to be.

This book introduces the concepts, tools, and skills that researchers need to get more done in less time and with less pain. Based on the practical experiences of its authors, who collectively have spent several decades teaching software skills to scientists, it covers everything graduate-level researchers need to automate their workflows, collaborate with colleagues, ensure that their results are trustworthy, and publish what they have built so that others can build on it. The book assumes only a basic knowledge of Python as a starting point, and shows readers how it, the Unix shell, Git, Make, and related tools can give them more time to focus on the research they actually want to do.

Research Software Engineering with Python can be used as the main text in a one-semester course or for self-guided study. A running example shows how to organize a small research project step by step; over a hundred exercises give readers a chance to practice these skills themselves, while a glossary defining over two hundred terms will help readers find their way through the terminology. All of the material can be re-used under a Creative Commons license, and all royalties from sales of the book will be donated to The Carpentries, an organization that teaches foundational coding and data science skills to researchers worldwide.

chapter |6 pages

Welcome

chapter 1|6 pages

Getting Started

chapter 2|32 pages

The Basics of the Unix Shell

chapter 3|24 pages

Building Tools with the Unix Shell

chapter 4|26 pages

Going Further with the Unix Shell

chapter 5|26 pages

Building Command-Line Tools with Python

chapter 6|36 pages

Using Git at the Command Line

chapter 7|42 pages

Going Further with Git

chapter 8|32 pages

Working in Teams

chapter 9|26 pages

Automating Analyses with Make

chapter 10|14 pages

Configuring Programs

chapter 11|28 pages

Testing Software

chapter 12|22 pages

Handling Errors

chapter 13|14 pages

Tracking Provenance

chapter 14|34 pages

Creating Packages with Python

chapter 15|2 pages

Finale