View on GitHub


Course material for "Scientific Software Development"

Block course: Sustainable Software Development

Scientific Software Development

Scientific Software Center, Heidelberg University

In this course, you will learn how to develop scientific software in a way that enables reproducible research and sustainable software. Sustainable scientific software leaves room for further, subsequent implementations and method development, and saves time and effort in the long run; in addition to adhering to good scientific practice through making results reproducible. This course is aimed at researchers, doctoral and master students who develop scientific software to carry out their research. The course will contain four units spanning four weeks, and consist of both an asynchronous and a synchronous part.

Total effort: Approximately 30 hours.
Date/Duration: Sessions will take place in six sessions during two weeks in March 2022: Specifically, on 1/3/22, 2/3/22, 3/3/22, 8/3/22,9/3/22,10/3/22, from 10:00 AM to 1:00 PM. Please note that there is also an asynchronous part to the course, which you can work on at a time of your choice, but which should be completed before the first/before the subsequent session for a better learning experience.

You will be able to obtain a certificate of participation. Basic prior programming knowledge is a requirement, but the emphasis lies on basic; ideally in python as the examples will be based on python. A laptop/PC with camera, microphone and speakers is required.


1. Introduction to git: Using GitHub

Go to unit 1

  1. Creating a new repository
  2. Branching and pull requests
  3. Code review and merging

In this unit, we will work on jupyter notebooks.

2. Clean coding as a team: Adhere to guidelines and common coding principles

Go to unit 2

  1. Technical debt and clean coding
  2. Style guides
  3. Linting and performance of code
  4. More on git: “Clean” repositories

You will work with your team and agree on a set of common standards and principles.

3. Think before you code: Planning your programming project

  1. The programming paradigm
  2. Planning a piece of software: Demonstrations

You and your team will design your software.

4. Documentation

  1. A good documentation
  2. Write documentation like a pro with sphinx (doxygen)

The documentation tools for your software will be set up and structured.

5. Testing, testing, testing …

Go to unit 5

  1. Types of tests
  2. Unittest and pytest
  3. Test-driven development

We will continue our work on the programming project.

6. Continuous integration: GitHub actions

Go to unit 4

  1. Run your tests and linter automatically through GitHub actions
  2. Build and publish your documentation on readthedocs
  3. Publish your python module as a package

We will set up github actions and you will learn how to publish python modules.

Content of each unit


You will need python3, git, and numpy/seaborn/pandas/jupyter for the course.