Reproducible research software development using Python
Big-picture goal
This is a hands-on course on research software engineering. In this workshop we assume that most workshop participants use Python in their work or a leading a group which uses Python. Therefore, some of the examples will use Python as the example language.
We will work with an example project and go through all important steps of a typical software project. Once we have seen the building blocks, we will try to apply them to own projects.
Prerequisites
Preparation
Get a GitHub account following these instructions.
You will need a text editor. If you don’t have a favorite one, we recommend VS Code.
If you prefer to work in the terminal and not in VS Code, set up these two (skip this if you use VS Code):
One of these two software environments (if you are not sure which one to choose or have no preference, choose Conda):
Virtual environment (Snakemake is not available in this environment)
Optional and only on Linux: Apptainer following these instructions.
Schedule
Day 1
13:00-13:30 - Welcome and introduction
Practical information (tools, communication, breaks, etc.)
Motivation (reproducibility, robustness, distribution, improvement, trust, etc.)
13:30-14:45 - Introduction to version control with Git and GitHub (1/2)
Motivation (15 min)
Forking, cloning, and browsing (30 min)
Creating branches and commits (30 min)
15:00-16:30 - Introduction to version control with Git and GitHub (2/2)
16:45-18:00 - Code documentation
Day 2
09:00-10:30 - Collaborative version control and code review (1/2)
Concepts around collaboration (10 min)
Practicing code review (40 min)
10:45-12:15 - Collaborative version control and code review (2/2)
16:45-18:00 - Debriefing and Q&A
Participants work on their projects
Together we study actual codes that participants wrote or work on
Constructively we discuss possible improvements
Give individual feedback on code projects
Day 3
09:00-10:30 - Automated testing
10:45-12:15 - How to make the project more reusable
13:00-14:45 - Code quality and good practices
15:00-16:30 - How to release and publish your code
Choosing a software license (30 min)
How to publish your code (15 min)
16:45-18:00 - Debriefing and Q&A
Participants work on their projects
Together we study actual codes that participants wrote or work on
Constructively we discuss possible improvements
Give individual feedback on code projects