Course information
Research Software Engineering
Software is an integral part of nowadays research. A UK survey in 2014 found that 7 out of 10 researchers could not conduct research without software. However, research software engineering (RSE) does not yet get the necessary attention in research and in teaching. All this applies to simulation software in particular.
Read more:
- Association of German Research Software Engineers: de-RSE
- Position paper of de-RSE
Idea of the course
The course is about simulation software. More precisely, we discuss the software tools used to ensure good software engineering for open-source simulation software such as FEniCS, PETSc, TRILINOS, DuMuX, preCICE, or SU2. This is not a course focused on programming and programming paradigms, but on the techniques and the corresponding tools. Some examples are version control (Git, GitHub, GitLab), virtualization/containerization (Docker), continuous integration (GitHub Actions, GitLab CI), or documentation (Jekyll, mkdocs, sphinx). We study these concepts and tools in lectures and (almost) weekly lab assignments. In parallel, you work on an individual challenge, where you apply the learned concepts and tools with the ultimate goal to contribute to a large-scale community simulation software package. Read more on the course content.
Target audience
This course is aimed at master-level students from Computer Science, Simulation Technology and related fields, but is also open to PhD students or anyone else interested. We expect you to have some knowledge in software development, basic tools and programming. However, we also give you extra information or point to additional resources if you have the feeling you need to catch up with some topic.
An example: In the lecture, we shortly touch on Git
- You are a Git expert? This is great. We try not to bore you.
- You have used Git before, but you basically use the same 5 commands all the time? This is fine and a good foundation to start.
- You had heard about Git some time in a lecture, but you have never used it? You are good to go with the examples in the lectures and the references presented there, but you probably have to catch up a bit.
Resources
All teaching resources are available (open-source) on GitHub and through this homepage.
We encourage you to help us extend these resources and fix mistakes.
Exam
The course has a so-called "course accompanying examination". This means, there will be no single exam. Instead, we evaluate the students' performance on the individual challenge, on the weekly exercises, and on the overall engagement. Still, wou will have to register for the "exam" on campus. Point of no return: Once you gave the first presentation (presumably early November), you have to register.
Additional information for SimTech students
You might also be interested in the course Sustainable Development of Simulation Software by Bernd Flemisch and Dennis Gläser, which is starting in summer term 2022. Their course has a stronger focus on software engineering patterns and project work in C++ for simulation software. Our course Simulation Software Engineering focuses more on the tools commonly used in the development of simulation software. The course of Flemisch/Gläser is not a prerequisite to follow our course on simulation software engineering and neither vice versa. We encourage you, however, to follow both courses if you are interested in the topic.
Information for repository maintainers
This paragraph is meant for developers maintaining repositories to which students of the SSE course try to contribute.
One of the learning goals of the SSE course is being able to contribute to existing large-scale research codes. One part of the course is to indeed contribute something small to such a code. As a maintainer of such a code, please treat the students as normal (experienced) external contributors. They learn in the SSE course how to follow contribution guidelines and other best practices. As a maintainer, you do not have to advise them as closely as you might do with your own students. Following your own contribution standards and code of conduct is sufficient. You can help the students by labeling suitable existing isues as good first issues. We, the lecturers of the SSE course, try to follow conversations of our students in issues or pull requests as closely as possible. You can always tag us on GitHub or directly reach out to us. Each year, we are giving the students a list of software projects as suggestions on where to contribute. If you ever want us to remove your project from this list, please let us know.