Software Engineering for RSEs
This module extends the Classical Software Engineering Module with research specific learnings. This includes but is not limited to
- software re-use (see SRU in (Goth et al. 2024))
- creating documented code building blocks (see DOCBB in (Goth et al. 2024))
- building distributable software (see DIST in (Goth et al. 2024))
- research specific programming languages
- research specific code requirements (scalability, functional programming, …)
- Adapting the software life cycle to research (see SWLC in (Goth et al. 2024))
- Software behaviour awareness and analysis (see MOD in (Goth et al. 2024))
- Research specific Engineering Patterns
Also, the seminar provides room for reflection and discussions of SE lab experiences.
Seminar: Software Engineering for RSEs
SWS: 2 ECTS: 3
Exercise: Software Engineering Exercise for RSEs
SWS: 2 ECTS: 3
Module Competences
| ID | Description | Disciplines | Prerequisites | Evidence | Author | Source |
|---|---|---|---|---|---|---|
| rse_practices_1 | Apply good coding practices including formatting, linting, and modular design | Research Software Engineering | rse_tooling_2 | Submit a code project demonstrating modularity, consistent formatting, and use of linters | RSE Curriculum Draft | Link |
| rse_practices_2 | Write code and documentation that supports reproducibility in research | Research Software Engineering | rse_tooling_1, rse_tooling_4 | Submit a project with data, software, and instructions allowing full reproduction of results | RSE Curriculum Draft | Link |
| rse_practices_3 | Organise files and name code artifacts using clear, consistent conventions | Research Software Engineering | Submit a software repository with a structured layout and consistent naming scheme | RSE Curriculum Draft | Link | |
| rse_practices_4 | Version control code and collaborate using platforms like GitHub or GitLab | Research Software Engineering | rse_tooling_12 | Participate in a collaborative coding project using Git-based workflows and merge requests | RSE Curriculum Draft | Link |
| rse_practices_5 | Write effective documentation and user-facing error messages | Research Software Engineering | rse_tooling_8 | Provide documentation and example error handling demonstrating clarity and user support | RSE Curriculum Draft | Link |
| rse_practices_12 | Write performant code suitable for use in compute-intensive contexts | Research Software Engineering | rse_tooling_2 | Submit benchmark results comparing an optimized version of code with a naive implementation | RSE Curriculum Draft | Link |
| rse_practices_13 | Publish code and software in trusted repositories and package managers | Research Software Engineering | rse_practices_6 | Publish software to a repository (e.g., GitHub, PyPI, CRAN) and register it with a long-term archive (e.g., Zenodo) | RSE Curriculum Draft | Link |
| rse_practices_6 | Apply licensing and publishing strategies to make software reusable and citable | Research Software Engineering | Submit a software project with an appropriate open license and published DOI (e.g., via Zenodo) | RSE Curriculum Draft | Link | |
| rse_practices_7 | Apply principles of Open Source and FAIR (Findable, Accessible, Interoperable, Reusable) software | Research Software Engineering | rse_practices_6 | Review or create a software project and evaluate its compliance with FAIR/Open Source principles | RSE Curriculum Draft | Link |
| rse_practices_14 | Manage data within a software project in accordance with best practices | Research Software Engineering, Data Management | Submit a data-driven project showing clear data organisation, metadata, and reproducibility | RSE Curriculum Draft | Link |
Sources & Implementations:
Courses
Programs
Goth, F, R Alves, M Braun, LJ Castro, G Chourdakis, S Christ, J Cohen, et al. 2024. “Foundational Competencies and Responsibilities of a Research Software Engineer [Version 1; Peer Review: Awaiting Peer Review].” F1000Research 13 (1429). https://doi.org/10.12688/f1000research.157778.1.