This course introduces key techniques and concepts that professional software developers use to manage code, projects, and teams. While research software development has unique needs and challenges, many tools and techniques from commercial software development can be adapted to improve our Research Software Engineering practice.
This hands-on session includes discussion and small group activities. Although we’ll use Python to demonstrate software development concepts, the content applies regardless of your programming language.
Learning aims
At the end of the workshop, attendees will understand:
- The difference between reproducibility and reusability of code, and how both contribute to robust research;
- Strategies to manage dependencies for their projects to ensure reusability and reproducibility;
- How to leverage version control and semantic versioning to share specific versions of their code;
- Licensing of open source software;
- How to enable easy citation of your software;
- Testing of research code: theory and strategies;
- Publishing code alongside research results
Suitability
Research postgraduate students and staff from all faculties and research domains who want to improve their workflows for code-related projects.
Prerequisites
- We will contact you ahead of the course to confirm any required software installation or cloud-based software account registration
- Basic familiarity with the Linux command line (covered in HPC0: Introduction to Linux for HPC)
- Basic familiarity with git (covered in SWD2: Version control as a tool for reproducible research)
Duration
2 half day sessions
Frequency
This course runs one to two times per year depending on demand.
How to Book
Booking for this course is through the IT Training Unit.
Bespoke Courses
Want us to deliver a bespoke version of this course in your department?
Submit a Research Computing Query (login required) and we’ll be in touch to discuss your requirements.



