| 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 “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 “ 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 “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 “Containers in Science: Using Docker and Singularity”
Dr. Dominic Kempf
Container technologies (e.g. Docker containers) have emerged as a fundamental tool of the cloud computing era. In scientific applications, containerization is used to encapsulate the complex execution environment of research software with a number of goals in mind: Setting up user landscapes for Continuous Integration testing, ensuring reproducibility of execution environments and packaging code to run on an HPC system. The workshop involves live coding sessions where participants exercise the learned commands on their own computers.
| |
| Compact Course “Continuous Integration with Github Actions”
Dr. Dominic Kempf
Continuous Integration (CI) is one of the cornerstones of agile development processes: Before changes are included into the mainline, a number of tests is run automatically to ensure the quality of the software. In this course, we explain how this process is implemented on GitHub.com (GitHub Actions). After a general introduction, participants will work on setting up Github Actions for their own projects. The SSC is available for follow-up consultation work on the CI workflows developed during this course.
| |
| 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. Georg Schwesinger/ Dr. Sebastian Zangerle, Peter Lippmann, 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.
| |
| Praktikum “Beginner/Advanced Software Practical Research Software Engineering”
Dr. Dominic Kempf
The software practical is a mandatory course in the BSc/MSc Computer Science curriculum, as well as in Mathematics and Scientific Computing. Students will carry out project work over the course of a semester, implementing a self-contained project according to best practices of software development. Project ideas will be presented on a first meeting at the beginning of the semester and are generally taken from the daily work of the Scientific Software Center.
The SSC version of the practical focusses on "Research Software Engineering". RSE is a rather new term that describes the use of software developement and software engineering practices in research applications. In the practical, we will implement tools that support research software development. Projects are taken from actual projects by the SSC or are inspired from such.
The primary programming language for the practical is Python, although C++ and JavaScript/TypeScript might be sprinkled in depending on the project.
If you are interested in the practical, please sign up in MÜSLI. You will then receive an invitation to a meeting on April 11th, 10 AM. At this meeting, we will listen to the project presentation from last semester and projects for the upcoming semester are presented. | |