Main Content

HeFDI Code School: Sustainable Research Software (EN)

Programming person in combination with Logos from HeFDI, NFDI4Earth, NFDI4Ing, HKHLR, hessian.AI

In 2025, we offer the following tracks:

  • Expert Track (online), September 2025, together with hessian.AI

    Together with hessian.AI and supported by NVIDIA we offer two full day hands-on online expert workshops related to coding and AI. Both workshops are part of the NVIDIA Deep Learning Institute and are conducted by certified instructors. Participants of these workshops will learn the fundamentals of deep learning and get practical insights in rapid application development with Large Language Models (LLMs). These workshops are directed at researchers who already have experience with coding, but want to further develop their skills by diving into the vast field of code and AI. You find further details on the prerequisites for each workshop on the linked workshop page by NVIDIA below.

    For active participation in the workshops and to receive a certificate of attendance signed by NVIDIA, you must register with NVIDIA's Deep Learning Institute. Further details will be provided during registration. Please note that participation is limited to academic students, staff, and researchers. When registering, ensure that your affiliation is clearly indicated through your email address. 

    We look forward to your participation!

    Date Title Learning Objectives Prerequisites
    18. Sep 2025, 9-17h Fundamentals of Deep Learning see below Further details and Prerequisites 
    25. Sep 2025, 9-17h Rapid Application Development with Large Language Models (LLMs) see below Further details and Prerequisites


    Registration Expert Track

    Please note that participation is limited to academic students, staff, and researchers. When registering, ensure that your affiliation is clearly indicated through your email address.

    Register right here

    Workshop #1: Fundamentals of Deep Learning

    Lecturer
    Ben Lohmann

    Description  
    Businesses worldwide are using artificial intelligence to solve their greatest challenges. Healthcare professionals use AI to enable more accurate, faster diagnoses in patients. Retail businesses use it to offer personalized customer shopping experiences. Automakers use it to make personal vehicles, shared mobility, and delivery services safer and more efficient. Deep learning is a powerful AI approach that uses multi-layered artificial neural networks to deliver state-of-the-art accuracy in tasks such as object detection, speech recognition, and language translation. Using deep learning, computers can learn and recognize patterns from data that are considered too complex or subtle for expert-written software.

    Learning Objectives
    - Learn the fundamental techniques and tools required to train a deep learning model
    - Gain experience with common deep learning data types and model architectures
    - Enhance datasets through data augmentation to improve model accuracy
    - Leverage transfer learning between models to achieve efficient results with less data and computation
    - Build confidence to take on your own project with a modern deep learning framework

    Further details and prerequisites 

    Workshop #2: Rapid Application Development with Large Language Models (LLMs)

    Lecturer
    Kajol Raju

    Description
    Recent advancements in both the techniques and accessibility of large language models (LLMs) have opened up unprecedented opportunities to help businesses streamline their operations, decrease expenses, and increase productivity at scale. Additionally, enterprises can use LLM-powered apps to provide innovative and improved services to clients or strengthen customer relationships. For example, enterprises could provide customer support via AI companions or use sentiment analysis apps to extract valuable customer insights. In this course you will gain a strong understanding and practical knowledge of LLM application development by exploring the open-sourced ecosystem including pretrained LLMs, enabling you to get started quickly in developing LLM-based applications.

    The workshop covers large language models from beginning to end, starting with fundamentals of transformers, progression into foundational large language models, and finishing in model/agentic orchestration. Each of these sections is designed to equip participants with the knowledge and skills necessary to progress further in developing useful LLM-powered applications.

    Learning Objectives
    - Find, pull in, and experiment with the HuggingFace model repository and Transformers API.
    - Use encoder models for tasks like semantic analysis, embedding, question-answering, and zero-shot classification.
    - Work with conditioned decoder-style models to take in and generate interesting data formats, styles, and modalities.
    - Kickstart and guide generative AI solutions for safe, effective, and scalable natural data tasks.
    - Explore the use of LangChain and LangGraph for orchestrating data pipelines and environment-enabled agents.

    Further details and prerequisites


  • Advanced Track II (hybrid), October 2025, together with HKHLR

    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.

    More information on the program will follow soon.

  • Advanced Track I (online), July 2025, together with NFDI4ING/Suresoft

    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.

    Lecturers
    Lecturers are Dr. Jan Linxweiler and Sven Marcus from Suresoft/TU Braunschweig.

    Program

    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)

    Full description of workshops of the Advanced Track I

    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

    Publications
    -
    Linxweiler, J., Marcus, S., & Thiele, J. P. (2025, Juli 3). HeFDI Code School - Part 1 - Scientific software development is not a Jenga game - Software Engineering to the rescue. Zenodo. https://doi.org/10.5281/zenodo.15795840
    - Linxweiler, J., Marcus, S., & Thiele, J. P. (2025, Juli 4). HeFDI Code School - Part 2 - Standing on the shoulders of giants - Hands on Software Design Patterns. Zenodo. https://doi.org/10.5281/zenodo.15806763
    - Marcus, S., Linxweiler, J., & Thiele, J. P. (2025, Juli 10). HeFDI Code School - Part 3 - Clean Code and Refactoring. Zenodo. https://doi.org/10.5281/zenodo.15853350
    - Linxweiler, J., Marcus, S., & Thiele, J. P. (2025, Juli 11). HeFDI Code School - Part 4 - Introduction to Test Driven Development. Zenodo. https://doi.org/10.5281/zenodo.15854773

  • Basic Track "Getting started with Python Programming" (online), May 2025, together with NFDI4Earth

    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.

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

    Publications
    The JupyterNotebooks - including the exercises and solutions - can be found in our Zenodo community: https://t1p.de/5yukb

    Program

    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.

Cooperation Partners