The Research Software Engineering Training Material website developed by the INTERSECT project provides a good collection of training resources for research software developers.
|Resource name||Research Software Engineering Training Material - by INTERSECT|
|Focus||Online training, Software development, Software engineering|
The INnovative Training Enabled by a Research Software Engineering Community of Trainers (INTERSECT) project brings training for software development and engineering to intermediate and advanced developers of research software. The training material listed on the project website aims to enable software engineers to gain a research software engineering (RSE) skill set as well as to enable computational researchers to produce better software.
The INTERSECT training material website has new material added regularly. As of the start of 2023, there is a good starting list of training material on the following topics:
Continuous integration (CI): introduction to CI and how software testing relates to CI.
- Team and project collaboration: topics of agile methodologies, contemporary peer code review practices, and version control systems like Git/GitHub.
- Licensing: topics including software licensing, software citations and social coding.
- Packaging: basics of packaging and exploring packaging using CMake and python package development.
- Performance: assorted topics related to performance on Julia, Python.
- Reproducibility: basics on reproducibility research and how it works in theory and practice.
- Software engineering: topics ranging from how to write clean modular scientific software and best practices for design, documentation, testing, etc.
- Python in research: deep dive into topics such as building high-performance Python code on CPUs/CPUs, data analytics in Python, challenges with interoperability of Python with other compiled code etc.
- Software design and documentation: presentations on the importance of design and documentation, documentation generators, and using GitHub for documentation.
- Software testing: best practices for software testing.
While the range of topics covered is diverse, each topic has good non-overwhelming pointers for beginners as well as intermediate users working on small or large scientific software projects.