Main Content
HeFDI Code School: Sustainable Research Software (EN)

Scientific software is in many disciplines crucial for understanding and reusing research data and a cornerstone for reproducibility of research results. The HeFDI Code School adresses the need of especially early career researchers on learning how to create good scientific software and increase the quality of their code for better reusability and sustainability.
Together with the colleagues from Suresoft project and NFDI4Ing we offer a series of four workshops.
Participants of these workshops will learn
- methods and techniques to increase the quality of their code,
- how to produce understandable and therefore reusable code,
- and to increase the sustainability of scientific software.
These workshops are intended for researchers who already have experience with developing scientific software, and therefore require general knowledge of a programming language and a merely basic understanding of object-oriented programming and versioning. The course language is English.
Program Winter Semester 2023/24
Important information: All workshops are held online and in English.
Date | Topic | Instructors |
---|---|---|
27 October 2023, 9h-13h | Scientific Software Development is not a Jenga game! | tba |
10 November 2023, 9h-13h | Clean Code and Refactoring | tba |
24 November 2023, 9h-13h | Introduction to Software Testing | tba |
8 Devember 2023, 9h-13h | Continuous Integration and Test Driven Development | tba |
Workshop - 27 October 2023 - Scientific Software Development is not a Jenga game!
Scientific software is often hard to maintain and reuse. A major reason for the instability of software is that it is subject to continuous change. This is especially true for software in the scientific context, since the scientific discourse is open-ended. Change has caused difficulties for scientific software developers from the very beginning, and it continues to do so. In parallel, the software engineering community has produced numerous developments that we as research software developers can take advantage of to significantly support our work. This workshop is an introduction on how to bridge the gap between both worlds and introduces practices, methods and principles to develop maintainable software and to make the software development process sustainable.
Agenda:
- Motivation for sustainable software design
- Basic concepts for organizing complexity
- Refresher: Object Orientation
- Design principles: SOLID & Co. with application examples
Please note the information on preparation and prior knowledge.
Workshop - 10 November 2023 - Clean Code and Refactoring
In the scientific environment with ever-changing requirements, it is important to produce source code that can be read, understood and modified by ourselves or others. This workshop will teach you how to apply clean code principles and refactoring techniques to produce high quality, maintainable code.
Agenda:
- Motivation
- Clean Code and Refactoring with interactive hands-on examples
- Tipps for working with Python
Please note the information on preparation and prior knowledge.
Workshop - 24 November 2023 - Introduction to Software Testing
Software testing ensures the proper functioning of a constantly evolving software and helps to quickly identify faults in a software code. This workshop introduces the first steps toward writing various types of software tests for scientific codes along with hands-on sessions.
Agenda:
- Fundamentals and motivation for software testing in scientific codes
- Hands-On Sessions:Writing unit tests
- Writing acceptance tests
- Incorporating and managing code quality tests
- Test process automation
- Demonstration of an in-house code testing environment
Please note the information on preparation and prior knowledge.
Workshop - 8 Devember 2023 - Continuous Integration and Test Driven Development
Continuous Integration (CI) and Test-driven development (TDD) are two software development practices that complement each other and can be used together to improve the quality and efficiency of software development.
CI is a development practice that emphasizes integrating and testing code changes frequently in a shared repository. The goal is to catch bugs and issues early in the development process, before they become more difficult and expensive to fix.
TDD, on the other hand, is a development approach that emphasizes writing automated tests before writing the code. The developer writes a failing test, then writes the code to make the test pass, and finally refactors the code to improve its quality. This cycle is repeated for each new feature or change to the code.
When used together, CI and TDD can help to ensure that the code is always in a functional and deployable state, and that any issues or bugs are caught early in the development process.
Agenda
- Introduction to Continuous Integration (CI)
- Practical Example with GitHub CI
- Introduction to Test Driven Development
- Collaborative TDD Kata (example application)
Please note the information on preparation and prior knowledge.
Preparation
During this workshop, we will work collaboratively using Visual Studio Code, which can be used in the browser without any further installation. However, we recommend that you install the following software in order to be able to code yourself and/or to reproduce later:
- Visual Studio Code
- free and open source powerful editor
- available for Windows, macOS and Linux
- Download
- further introductions on VS Code
- Please install the following extensions within Visual Studio Code
- Live Share
- Python
- further instructions on how to install an extensions
- To join a collaborative session within Visual Studio Code using Live
Share, you need to have a GitHub (or Microsoft) account.
- You can register for a GitHub account on github.com
- See how to join a collaboration session
Prior Knowledge
We assume some basic knowledge of the python programming language and the version management system git. At least, you should be able to read and understand python. In general, the concepts we address are programming language agnostic. Hence, you should be able to easily use them with your favorite programming language.
As we will use a collaborative session in VS Code you don’t necessarily need to have Python installed on your local machine. But, in order to work on your own machine, you can download and install Python from python.org.
Program Summer Semester 2023
Date | Topic | Instructors |
---|---|---|
12 May 2023, 9h-13h | Scientific Software Development is not a Jenga game! | Jan Linxweiler, Sören Peters, Sven Marcus |
26 May 2023, 9h-13h | Clean Code and Refactoring | Sven Marcus, Sören Peters, Jan Linxweiler |
23 June 2023, 9h-13h | Introduction to Software Testing | Harik Sreekumar, Yannik Hüpel |
7 July 2023, 9h-13h | Continuous Integration and Test Driven Development | Jan Linxweiler, Sören Peters, Sven Marcus, Dennis Gläser, Moritz Schwarzmeier |