| 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 "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 "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 "Python Performance Profiling" Dr. Liam Keegan
To make your Python code run faster, you first need to understand where and why it is slow. In this course we will look at how to profile and benchmark the performance of Python code, as well as the compiled cpu and gpu code that gets invoked when you use libraries like numpy or pytorch. | |
| Compact Course "Debugging in VSCode" Dr. Dominic Kempf
Tired of debugging your code by randomly sprinkling print statements throughout your code? In this course we will learn the basics of debugging with an Integrated Development Environment (IDE): Setting breakpoints, stepping through code, inspecting variables, and evaluating expressions. We exercise these techniques on small code examples from the Python language. Afterwards, we will cover other languages and more complex debugging scenarios. We use Visual Studio Code (VSCode) as our IDE, but the taught concepts translate naturally to other IDEs. | |
| Compact Course "AI in research software: Best practices for developing and using ML models" Dr. Inga Ulusoy, Dr. Harald Mack
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 "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. | |
| Compact Course "Simple interactive research sharing with R Shiny" James Bowyer
Rather than just share pictures of your R research/graphs, R Shiny lets you turn your existing R analysis into an interactive web application that anyone can access through a link. With this live interface, your collaborators, grant reviewers, or other researchers can investigate the specific aspects they care about - like filtering by their genes of interest or adjusting parameters. We'll cover how to convert your current R files into Shiny apps, with practical information also relevant for Python Streamlit users on costs, maintenance time, and an overview of the process of hosting them online covered at the start so you can decide if this workshop is relevant for your purposes. This workshop is hands-on and works best when you send your R scripts to us one week in advance. You do not need to learn complicated web development - just the R you already know from the console and the process of deploying which works very similarly, and can all be completed inside of the "R studio" application. After this workshop | |
| 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. | |