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.
- We typically give the course just before the lecture period in winter term.
- Next course will be October 7-11, 2024 with the reflection day on December 10, 2024. Registration via Campus or (if you not a student and cannot access) via mail to [email protected]. Limited seats, first come first serve.
- The first course ran from Tuesday, October 4 to Friday October 7, 2022, with the reflection day on December 6, 2022.
- There was no course in 2023. Instead, we organized a week-long summer school on Research Software Engineering with Julia: Basics, Visualization, and Statistics
- 10:30-12:30: Orga and student presentations
- 14:00-15:30: Recap of Git basic, Git workflows
- 16:00-17:30: Exercise on Git workflows
- 09:00-10:30: Introduction to packaging and packaging for Python
- 11:00-12:30: Exercise on packaging for Python
- 14:00-15:30: Introduction to testing and testing for Python
- 16:00-17:30: Exercise on testing for Python
- 09:00-10:30: Introduction to containerization and Docker
- 11:00-12:30: Exercise: build and run your research code in a Docker container
- 14:00-15:30: Introduction to automation and GitHub Actions
- 16:00-17:30: Exercise on GitHub Actions
- 09:00-10:30: Clean code
- 11:00-12:30: Exercise on clean code
- 14:00-15:30: Design principles and patterns
- 16:00-17:30: Exercise on design principles and patterns
- 09:00-10:30: Technical writing, versioning, licenses, and more
- 11:00-12:30: Finish all your exercises or start applying things on your project
How did you apply the newly learned skills in your work? Which problems did you face? Each participant should prepare a 5-10 minutes presentation. There is enough time for in-depth discussions.
- 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.
- Since then, also Matthias Braun, Gerasimos Chourdakis, and Stefan Meggendorfer have been contributing to the material.
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.