This is course material for a one-week graduate school block course, which is regularly given at the University of Stuttgart. The block course emerged from material of the two master lectures Simulation Software Engineering and Sustainable Development of Simulation Software in an effort to teach better research software engineering skills to PhD students.
Why 102? We do not start from scratch, but assume a certain pre-knowledge from participants -- knowledge typically taught in Software Carpentry Workshops: Unix shell, Git basics, and Python. We want to build on these fundamentals and study methods and tools used to ensure good (research) software engineering:
- Git workflows
- Containerization
- Testing and continuous integration
- Building and packaging
- Software design principles
Skills in these areas are crucial for developing or contributing to quality-assured software in collaborative environments and are very useful in today’s research landscape. For an overview over the topics, see the lecture material.
- The Simulation Software Engineering lecture was originally developed by Ishaan Desai, Alexander Jaust, and Benjamin Uekermann. Many students helped improving the content.
- The Sustainable Development of Simulation Software was originally developed by Dennis Gläser and Bernd Flemisch.
In several parts of the material, we use content from
Irving, Hertweck, Johnston, Ostblom, Wickham, and Wilson: Research Software Engineering with Python, 2021,
a book, which we also recommend to recap Git/Bash/Python basics.
The authors of this material would like to thank the Federal Government and the Heads of Government of the Länder, as well as the Joint Science Conference (GWK), for their funding and support within the framework of the NFDI4Ing consortium. Funded by the German Research Foundation (DFG) - project number 442146713.