Summary and Schedule
This short course teaches tools and practices for producing and sharing quality, sustainable and FAIR (Findable, Accessible, Interoperable and Reusable) research software to support open and reproducible research. The course can be delivered over 2 full or 4 half days.
Target audience
- Post-graduate students, early career researchers or junior Research Software Engineers (RSEs) who are starting their research or software projects, have foundational knowledge of Python, version control and using software tools from command line shell, and want to develop software to support their research using established best practices
- Researchers or scientists who had foundational software training before but wish to refresh, reinforce or improve their skills and practices in the wider context of FAIR scientific practice and sharing and writing software for open and reproducible research
Check out a few example learner profiles, to see if this course is a right fit for you.
Prerequisites
Foundational knowledge of the following is required to be able to understand code examples used in the course:
- Python used to write scientific code
- Version control with Git
- Working in a command line interface (shell)
Attending a Software Carpentry workshop or a similar course will help you gain the skills and experience needed.
Please also make sure you have all the required software installed before attending this course.
Learning objectives
After attending this training, you will be able to:
- List challenges typically faced by researchers developing software and managing data for modern computational, reproducible research, including those commensurate with the FAIR (Findable, Accessible, Interoperable, Reusable) principles.
- Build on top of your existing knowledge of Python, Git and command line computing to enhance your research software development workflow with some good open and reproducible research software practices around structuring, writing, documenting, testing, sharing and reusing code (including software licensing and citation).
Acknowledgements
This course was originally developed by the UK’s Software Sustainability Institute and funded by the UK Reproducibility Network (UKRN). See CITATION.cff for the full list of authors.
| Setup Instructions | Download files required for the lesson | |
| Duration: 00h 00m | 1. Course introduction |
What is open and reproducible research? Why are these practices important, in particular in the context of software used to support such research? |
| Duration: 00h 20m | 2. Better start with a software project |
What is a version control system? Why is version control essential to building good software What does a standard version control workflow look like? |
| Duration: 01h 20m | 3. Reproducible software environments |
What are virtual environments and why do we use them? How can we manage Python and external libraries reliably and repeatably? |
| Duration: 02h 10m | 4. Code readability |
Why does code readability matter? How can I organise my code to be more readable? What types of documentation can I include to improve the readability of my code? |
| Duration: 03h 40m | 5. Code structure |
How can we best structure code? What is a common code structure (pattern) for creating software that can read input from command line? What are conventional places to store data, code, results, tests, auxiliary information and metadata within our software or research project? |
| Duration: 05h 10m | 6. Code correctness |
How can we verify that our code is correct? How can we automate our software tests? What makes a “good” test? Which parts of our code should we prioritise for testing? |
| Duration: 06h 40m | 7. Software documentation |
How should we document our code? Why are documentation and repository metadata important? What are the minimum elements of documentation needed? |
| Duration: 08h 10m | 8. Open software management & collaboration |
How do I ensure my code is citable? How do we track issues with code in GitHub? How can we ensure that multiple developers can work on the same files simultaneously? |
| Duration: 09h 40m | 9. Wrap-up |
What are the FAIR principles? How can FAIR principles help us develop better research software? What are the wider research software development principles in the context of you team, peers and the world? |
| Duration: 10h 25m | Finish |
The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.
Software Setup
Before starting the course, make sure you have the following tools installed and working:
- Visual Studio Code (VS Code) — your main workspace and terminal
- Git + Git Bash — for version control and running commands
- Python 3 (via uv) — for running and managing code
- GitHub account — for saving and sharing work
- Spacewalks data and example code — used in the exercises
These steps work on Windows, macOS, and Linux.
Windows users will use Git Bash inside VS Code instead
of PowerShell.
What’s New
Updated authentication and environment setup
-
GitHub authentication is simpler — sign in through
your browser using Git Credential Manager (no SSH keys
or tokens needed).
-
Python installation uses uv, a modern, fast
installer that avoids manual setup.
- VS Code is your single workspace — all setup steps run inside its built-in terminal.
Get Started
Follow the step-by-step Installation
Instructions
to install everything and verify your setup before the workshop.
If you’ve used older Git or Python workflows, note that these instructions reflect the current recommended Carpentries practices for reproducible, low-friction setup.
Timing:
- Allow 20–30 minutes at the start of the workshop (or
in a separate install session).
- Encourage participants to complete installation
before the workshop if possible.
Verification steps:
Ask learners to open the VS Code terminal and confirm the following
commands return without errors:
Common issues to check:
- On Windows: Git Bash must be selected as the default VS Code
terminal.
- On macOS/Linux: If uv is not found, VS Code may need to
be restarted.
- If pushing to GitHub fails, confirm Git Credential
Manager is active with:bash git config --global credential.helper manager
Troubleshooting resources:
- Git for Windows
documentation
- Visual
Studio Code integrated terminal guide
- Astral uv
installation docs
- GitHub
authentication help