Main Content

HeFDI Code School: Sustainable Research Software (EN)

Basic Track (online) May 2025 information & program
Registration
Advanced Track I (online) July 2025 information & program

In 2025 we offer the following tracks:

Basic Track "Getting started with Python Programming", May 2025 Advanced Track I (Online), July 2025
Introduction to programming basics for those without any prior programming skills. A series of three online workshops in May 2025. A track for experienced developers. Participants need general knowledge of a programming language and basic understanding of object-oriented programming and versioning.

All workshops are free-of-charge.

Basic Track "Getting started with Python Programming", May 2025 (EN)

You don’t know Python, but want to? You know a little Python or did it years ago and need a refresher? Then join our HeFDI Code School Basics, a dynamic series of three hands-on online workshops in collaboration with NFDI4Earth. These workshops – all free of charge – will guide you through the basic concepts and functions of Python using Jupyter notebooks, and go all the way up to manipulating data and datasets, making interactive plots and your own webpage where users can interact with your data visualisations.

The focus of the course is on you coding, so we will alternate between 20-30 minute coding presentations and breakout sessions with lots of exercises, allowing you to understand how Python works through your own practice.

Workshops will be held in English.

Your Benefits¶

  • Hands-On Learning: Each 4-hour workshop blends insightful lectures with engaging group activities and practical coding exercises. Because the best way to learn coding is to write your own!
  • Flexible Participation: Attend all three workshops for a comprehensive experience, or select the ones that spark your interest most.

Registration

Register here! 

The instructor is PD Dr. Dominik Hezel, Goethe-University Frankfurt and member of NFDI4Earth.

Date & Time Title Topics
Fr 09th May 2025,
9-13h

Introduction to Python and Jupyter Notebooks

You will learn how to work with and code in Jupyter notebooks, either in a browser or with its desktop version. You will use and apply your first Python functions, be able to import additional functions, and become able to build your own functions.

Fr 16th May 2025,
9-13h
Data Manipulation with Pandas and Basic Plotting

You will use functions from the popular functions package ›pandas‹ to work with and manipulate datasets such as an Excel table or a .csv file. You will load large datasets and get to know how to quickly and easily filter and select only parts from it for further analyses or visualisations. You will apply conditional functions such as ›if this condition is fulfilled, do that, if not do something else‹. You will also learn how to create plots with the popular matplotlib package.

Fr 23rd May 2025,
9-13h
Interactive Visualizations and Web Development with Streamlit

You will produce interactive plots where you, for example, can select which dataset to display or what parameter to be used displayed on the x-/y-axes. You will make a request to an online database to access its data. Finally, you will create a webpage with interactive elements, so a user can manipulate your plot visualisation. This will be realised with Streamlit.

Advanced Track (online), July 2025

Together with the colleagues from Suresoft project and NFDI4ING we offer a series of four workshops.

Participants of these workshops will learnmethods 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 directed at 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.

Date & Time Titel  Agenda Prerequisites
3. July 2025, 9-13h

Scientific Software Development is not a Jenga Game

full description

  • Motivation for sustainable software design
  • Basic concepts for organizing complexity
  • Refresher: Object Orientation
  • Design principles: SOLID & Co. with application examples
4. July 2025, 9-13h

Design Patterns

full description

  • Collaborative implementation of a sample application
  • Discussion of design decisions
  • Recognition and derivation of design patterns
  • Derive design patterns by applying development principles
  • Preparation
  • Basic knowledge of Python
  • Basic knowledge of the OOP (advantageous)
  • have a look on the starting point of the code example
10. July 2025, 9-13h

Clean Code and refactoring

full description

  • Motivation
  • Clean Code and Refactoring with interactive hands-on examples
  • Tips for working with Python
11. July 2025, 9-13h

Test-driven development

full description

  • Introduction to Test Driven Development
  • Collaborative TDD Kata (example application)

Registration Advanced Track

Registration for the Advanced Track will start at the beginning of June 2025 

Full description of Workshops of the Advanced Track

Scientific Software 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

Design Patterns

As scientists we don’t have to reinvent the wheel when it comes to software. Instead we will make use of software design patterns that provide proven solutions for reoccurring problems. Applying design pattern will help us achieving a higher application quality and rising the level of abstraction in documentation as well as communication with our colleagues. In this workshop we will walk you through a code example and step by step add new features. Along the way, we will involve you in every design decisions so that you have a good understanding of the pros and cons of our final solution. It is quite possible that we will come across some design patterns along the way.

Clean Code

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

Test driven development

Continuously changing requirements lead to rapidly evolving software. While adapting the source code to fit the requirements, we have to ensure that code changes work as intended and don’t break existing features. At the same time the source code needs to stay maintainable and extensible to allow changes for new features in the future.
This is where the development approach of Test-Driven Development comes in. It 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 and therefore ensures that every new or existing feature is always tested and working as intended. In this workshop we will collaboratively work through a TDD example

Cooperation Partners