Authors
Affiliations

Gesellschaft für Informatik

deRSE

Gesellschaft für Informatik

deRSE

Florian Goth

Jan Phillip Thiele

Jan Linxweiler

Anna-Lena Lamprecht

Maja Toebs

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.