| Compact Course “Effective software testing”
Dr. Liam Keegan
A good test suite makes extending, maintaining and debugging a codebase both easier and faster. In this course we will look at the different kinds of tests, and understand how to write good tests. We will also cover different testing strategies, such as test-driven-design when writing new code, or acceptance testing when working with legacy code that doesn’t have a good test suite. Code samples will use the Python testing framework pytest but the concepts also apply to other frameworks and languages.
| |
| Compact Course “Data Exploration with Python and Jupyter”
Dr. Liam Keegan
Jupyter notebooks are a great tool for exploring and interacting with data using the Python programming language and its rich ecosystem of libraries. In this course we will cover basic usage of the Pandas library to download a dataset, explore its contents, clean up missing or invalid data, filter the data according to different criteria, and plot visualizations of the data.
| |
| Compact Course “AI in research software: Best practices for developing and using ML models”
Dr. Inga Ulusoy
The AI revolution is moving even more rapidly than the digital revolution and leads to the emergence of completely new tools and technologies that affect the scientific process. In this course, we will learn about data-based research software, tools and communities that are relevant in creating and sharing such software, and about best practices in training machine-learning models. Research software that is based on ML models requires an additional layer of best practices in the implementation, including testing of non-deterministic processes. Security aspects as well as bad examples are discussed to highlight the importance of adhering to a best practices code of conduct.
| |
| Compact Course “ Generative AI for writing (research) software”
Dr. Inga Ulusoy
Generative AI is emerging as a major creative force that supports humans in content creation. Specifically trained models can support software developers with their software projects and lead to time savings and a shift in what aspects of generating software are more important on a day-to-day basis. In this course, we will learn about GitHub Copilot, the differences to ChatGPT, and how to set up and use GitHub Copilot in coding projects. Best practices in using Copilot, as well as recommendations how to use it efficiently and safely will be introduced.
| |
| Compact Course “Python best practices”
Dr. Inga Ulusoy
Python has rapidly advanced to the most popular programming language in science and research. From data analysis to simulation and preparation of publications, all can be done in Python with appropriate libraries and implementing own modules. We will discuss Python Enhancement Proposals (PEP) and how these can help you write cleaner code. Common pitfalls in Python will be explained with examples. We will demonstrate typical “bad programming” and how to code the examples in a more pythonic way.
| |
| Compact Course “Expert Topics in Version Control with Git”
Dr. Dominic Kempf
Applying version control can be a game changer for a collaborative research software project. However, even in projects that already successfully use Git, there is often room for improvement of the employed Git workflows. This workshop explores some advanced topics that increase the participants’ repertoire of Git workflows: Bisection, Worktrees, Submodules, Large File Storage and Pre-commit Hooks. Additionally, we showcase invasive methods of modifying a Git repository via Rebase.
| |
| Compact Course “Intermediate Topics in Version Control with Git”
Dr. Dominic Kempf
Applying version control can be a game changer for a collaborative research software project. However, even in projects that already successfully use Git, there is often room for improvement of the employed Git workflows. This workshop tries to delve into collaborative workflows using Git branches and discuss their strengths. Special emphasis is given to the resolution of merge conflicts that may be required in the process of dealing with diverging branches.
| |
| Compact Course “The Unix Shell + Version Control with Git”
Dr. Dominic Kempf
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 “Python Packaging”
Dr. Liam Keegan
In this course we will learn how to package a Python library, how to publish it on PyPI and on conda-forge, as well as look at more advanced topics like building pre-compiled wheels including c++ extensions using pybind11, and automatically publishing new releases using continuous integration and cibuildwheel. | |
| Block Course “Scientific Software Development”
Dr. Inga Ulusoy
In this course, you will learn how to develop scientific software in a way that enables reproducible research and sustainable software. Sustainable scientific software leaves room for further, subsequent implementations and method development, and saves time and effort in the long run; additionally, a sustainable approach follows good scientific practice through making results reproducible. This course is aimed at researchers, doctoral and master students who develop scientific software to carry out their research. | |
| Compact Course “The Unix Shell & Version Control with Git”
Dr. Dominic Kempf
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 “Introduction to Python Testing”
Dr. Liam Keegan
An automated test suite makes it much easier to maintain, extend and debug your Python code. In this course we will learn how to write automated tests in Python using the pytest library. After introducing the key concepts, the majority of the course will be hands-on, writing and running tests. | |
SoSe 2023 | Praktikum “Beginner/Advanced Software Practical Research Software Engineering”
Dr. Dominic Kempf |
| Online 4eu+ Talk: “Open Research Software - How to disseminate it?"
Dr. Liam Keegan
Software source code contains a growing part of the scientific and technical knowledge developed in the research activities, in all fields. It is essential to disseminate and archive this knowledge. This session will include a training session and an interview with a Software Heritage ambassador. | |
| Compact Course “The Unix Shell + Version Control with Git”
Dr. Dominic Kempf
The Unix shell is a powerful tool that allows people to do complex things with just a few keystrokes. Use of the shell is fundamental to using a wide range of other powerful tools and computing resources. 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. The course will include hands-on live coding sessions where participants exercise the learned commands on their own computers. | |
| Compact Course “Python Best Practices”
Dr. Inga Ulusoy
Python has rapidly advanced to the most popular programming language in science and research. From data analysis to simulation and preparation of publications, all can be done in Python with appropriate libraries and implementing own modules. We will discuss Python Enhancement Proposals (PEP) and how these can help you write cleaner code. Common pitfalls in Python will be explained with examples. We will demonstrate typical “bad programming” and how to code the examples in a more pythonic way. | |
| Compact Course “The Unix Shell + Version Control with Git (Digital Humanities Edition)”
Dr. Dominic Kempf | |
| Online Compact Course “A short tour of sustainable software development”
Dr. Dominic Kempf | |
| Block Course “Scientific Software Development”
Dr. Inga Ulusoy | |
| Vorlesung “Programmierkurs (IPK)”
Dr. Dominic Kempf |
| Compact Course “Effective Software Testing”
Dr. Liam Keegan | |
| Compact Course “Containers in Science: Using Docker and Singularity”
Dr. Dominic Kempf |
| Compact Course “Automated Testing with Github Actions”
Dr. Dominic Kempf |
| Compact Course “Advanced Topics in Version Control with Git”
Dr. Dominic Kempf |
| Compact Course “Python Best Practices”
Dr. Inga Ulusoy | |
| Compact Course “Open Source Licensing”
Dr. Dominic Kempf |
| Compact Course “Advanced Topics in Version Control with Git”
Dr. Dominic Kempf |
| Compact Course “High Performance C++”
Dr. Liam Keegan | |
| Compact Course “The Unix Shell”
Dr. Dominic Kempf |
| Compact Course “Version Control with Git”
Dr. Dominic Kempf |
| Compact Course “Data Exploration with Python and Jupyter”
Dr. Liam Keegan | |
| Block Course “Solving PDEs with Dune/PDELab”
Dr. Dominic Kempf |
| Block course “Scientific Software Development”
Dr. Inga Ulusoy | |
| Compact Course “Performance Benchmarking C++ Applications”
Dr. Liam Keegan | |
| Compact Course “Automated Testing with GitHub Actions”
Dr. Dominic Kempf |
| Compact Course “Advanced Topics in Version Control with Git”
Dr. Dominic Kempf |
| Compact Course “Containers in Science: Using Docker and Singularity”
Dr. Dominic Kempf |
| Compact Course “Version Control with Git”
Dr. Dominic Kempf |
| Compact Course “The Unix Shell”
Dr. Dominic Kempf |
| Compact Course “Data Exploration with Python and Jupyter”
Dr. Liam Keegan | |
| Compact Course “The Unix Shell”
Dr. Dominic Kempf |
| Compact Course “Version Control with Git”
Dr. Dominic Kempf |
| Compact Course “Containers in Science: Using Docker and Singularity”
Dr. Dominic Kempf |
| Block course “The Art of Developing Scientific Software: What do you need to make your software fly?”
Dr. Inga Ulusoy
Course testimonials:
“I definitely recommend this course. others at my institute should get informed about good coding practices, testing etc.”
“This was a very helpful introductory course, especially considering the fact that this was the first iteration of the course. It is obvious that a lot of time and effort was spent creating it. The instructor is motivated and capable. The toy data and analysis pipeline is appropriately complex, three members per group is a good size. Thank you again!”
“Considering it being an online format, it was relatively interactive, which was definitely a quality sign! :)” | |
| Virtual Summer school “Solving PDEs with Dune/PDELab”
Dr. Dominic Kempf, Prof. Dr. Peter Bastian et al. | |