| Compact Course "The Unix Shell + Version Control with Git" James Bowyer
The Unix shell is a powerful tool that allows people to do complex things with just a few keystrokes. More importantly, it helps them combine existing programs in new ways and automate repetitive tasks so they aren't typing the same things over and over again. Use of the shell is fundamental to using a wide range of other powerful tools and computing resources. The course will include hands-on live coding sessions where participants exercise the learned commands on their own computers.
Version control is the lab notebook of the digital world: it is used to keep track of what was done and to collaborate with other people. Its use is the state of the art in software development projects of all scales. However, it is not limited to software: books, papers, small data sets, and anything that changes over time or needs to be shared can and should be stored in a version control system. The course will include hands-on live coding sessions where participants exercise the learned commands on their own computers. | |
| Compact Course "Prompting and Evaluating Multimodal AI Models with AMMICO" PD Dr. Delia Dumitrescu, Dr. Inga Ulusoy
Multimodal AI models can analyze text, images, video, and combinations thereof, enabling researchers to extract structured information from increasingly large and heterogeneous datasets. However, the results of these models depend strongly on the selected model and model parameters, the dataset, and - particularly - the way a task is formulated through prompts. In this hands-on course, participants will use AMMICO https://github.com/ssciwr/AMMICO, an open-source Python package for AI-based media and content analysis, to systematically explore these factors. We will apply vision-language and audio models to different datasets and compare different model backends for tasks such as content description, feature extraction, and visual question answering. A particular focus will be on prompt design. Participants will experiment with different ways of formulating the same research question and investigate how prompt specificity, context, output constraints, and examples influence model responses. We will develop prompts iteratively and discuss strategies for obtaining more consistent, interpretable, and reusable results. The course will discuss practical approaches for evaluating outputs and documenting model and prompt configurations to make AI-assisted analyses more transparent and reproducible. | |
| Compact Course "Python Best Practices" Dr. Thomas Isensee
Python is widely used in science and research, from data analysis and simulation to preparing publications. This course introduces practical habits and tools for writing readable, maintainable Python code. We will cover project setup, automated code formatting and checks, and the essentials of organizing code into an installable Python package. We will also introduce testing and type hints, explain common Python pitfalls, and explore useful programming patterns. Practical examples and hands-on exercises will help participants apply these techniques to their own projects. | |
| Compact Course "Semantic Knowledge Graphs for Reasoning and Linked Data" Dr. Inga Ulusoy
Knowledge graphs, i.e., representations of knowledge in machine-readable graph form, provide a powerful way to represent and connect heterogeneous data. Using shared vocabularies, relationships between entities become standardized, explicit, and allow a more meaningful data integration and querying. Participants will learn the differences between conventional graphs, knowledge graphs, and semantic knowledge graphs. We will explore how ontologies and shared vocabularies provide a semantic layer for describing entities and their relationships. During the course, we will build semantic knowledge graphs from relational data using adapter code and the support of AI agents. The connection of conceptual foundations with practical implementation will illustrate how ontologies, adapters, and knowledge graphs can support interoperability, integration, and reuse of heterogeneous research data. Some use case examples in modern AI technology will be provided. | |
| Compact Course "Agentic Test-Driven Development" Dr. Liam Keegan
As agentic coding tools like Claude Code and Codex CLI make generating code faster, validating the correctness of this code becomes more important than ever. In this course you will learn how to apply test-driven development and software testing best practices in the context of agentic software development. By writing tests before the implementation, our test suite not only verifies correctness, but also defines a clear specification of what the code should and should not do. | |
| Compact Course "C++ Performance Profiling" Dr. Liam Keegan
We use compiled languages like C++, Rust or Fortran to get good performance, so measuring and understanding the performance characteristics of our code is vital, for example to identify bottlenecks or to determine if a change to the code actually improves the performance. In this course we will cover different ways to profile and benchmark the performance of our code, and discuss the pros and cons of each method. Code examples will be in C++ but the profiling applies to most compiled languages. | |
11.02.2027 | Short course "Code Review for research groups" Dr. Dominic Kempf
Code review is a valuable practice for improving code quality, sharing knowledge, and making research software easier to maintain. In this short course, we will introduce practical approaches to reviewing code in research groups, including how to give constructive feedback, what to look for in a review, and how to integrate code review into collaborative Git workflows. We will also discuss how to establish a lightweight code review culture that fits the needs and resources of a research group. |
| Compact Course "C++ Has Changed. Has Your Code?" Dr. Thomas Isensee
C++ has changed considerably, and many scientific codes have not kept up. This course introduces practical modern C++ techniques that help you spend less time debugging and make your code easier to maintain. You will learn how object lifetime and clear ownership simplify resource management, and how expressive types help the compiler catch mistakes before your code runs. We will explore useful containers, modern language features, and standard library tools with examples drawn from scientific programming. Comparisons of older and modern approaches will show what to improve and why, while short exercises give you a chance to apply the ideas. We'll also discuss choosing a suitable C++ standard for your project and briefly introduce modern CMake. | |