- Advanced Track
- Hybrid
Sustainability, maintainability, testability and ease of use of research software, while gaining importance, often fall short in scientific practice. Applying principles of software engineering and design can greatly improve software quality, thereby enabling others to readily use it, to understand and reproduce results. Ultimately, this enhances the overall scientific quality of the published results.
In this course, we dive into the practical aspects of software engineering and design specifically tailored for scientific software, in order to make it more extensible, maintainable and testable. The principles we discuss can be applied to various types of codes such as software for numerical simulation as well as scripts for data processing.
We take the viewpoint of an academic software developer that is exposed to an existing code base with the task to add further functionality. Approaches to dealing with common obstacles like missing tests, interposed functional aspects and inherited technical dept will be discussed. Based on the lessons learned, we also explore how to structure and deploy software used for e.g. data processing.
During practical hands-on sessions, participants will interactively learn how to utilize software development techniques to tackle the aforementioned issues in practice in order to enhance the quality and reproducibility of their software.
This workshop will be held as a hybrid event at TU Darmstadt and online.
This workshop provides a foundational introduction to Object-Oriented Programming (OOP) in Python and the essential role of version control with Git in scientific workflows. It focuses on implementing software design principles to create modular, testable code, combining theoretical frameworks with a practical exercise to ensure immediate applicability to research software.
Your Benefits
This HeFDI Code School series 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.
Participants of these workshops will learn about
- 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.
Especially in this workshop you will learn about
- Object-Oriented Programming in Python,
- the usage and importance of version control system git,
- software design principles for modular and testable code.
Instructors
The instructors are Christian Iwainsky and Marcel Giar.
Language
The workshops will be held in English.
Prerequisites
Participants need a working knowledge of writing and reading Python code.
Bring your own device with a working Python installation (preferably Python >= 3.11).
Additionally, this GitLab-repository contains instructions on preparing for the course; please refer to the README.md file at the project’s root folder (it will be directly visible when you visit the repository URL in your favorite web browser).
The instructions comprise:
- Git installation
- Installing an IDE (we will use VS Code in this course, but other IDEs are, of course, possible as well)
- Installing Python
- Creating a Python environment with all required packages
- Downloading the course material
These instruction notes make heavy use of links that point to more detailed instructions. We kindly ask all participants to take care of all preparatory steps in advance of the course. We will not spend additional minutes during the course to assist e.g. with creating the required Python environments.
Publications
Code examples and the slides can be found on GitLab.