Summary and Schedule
This short course is teaching 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 research 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
Before joining this training, participants must have foundational knowledge of Python used to write scientific code, version control system Git and a command line (shell) tool to be able to understand code examples used in the course.
Attending a Software Carpentry or a similar course could help with these requirements and gaining necessary prerequisite skills.
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 tools 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 licencing and citation)
- Understand some ethical issues around research software development and usage and how our work impacts others
What we do not teach
This course assumes the prior knowledge of and does not focus on teaching:
- Python code syntax or skills (even though Python is used in code examples)
- the basic Git workflow
- how to navigate file systems, manipulate files and invoke Python scripts and tools from a command line terminal/shell.
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 30m | 2. FAIR research software |
What are the FAIR research principles? How do FAIR principles apply to software? |
Duration: 01h 30m | 3. Tools and good practices for research software |
What tools and practices are available to help us develop good quality
and FAIR research software? How do such tools and practices fit together to enable open and reproducible research? |
Duration: 03h 00m | 4. Version control |
What is a version control system? How can a version control system help make my work reproducible? What does a standard version control workflow look like? |
Duration: 04h 30m | 5. Reproducible software environments |
What are virtual environments in software development and why use
them? How can we manage Python virtual coding environments and external (third-party) libraries on our machines? |
Duration: 05h 00m | 6. 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: 06h 30m | 7. 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: 08h 00m | 8. Code correctness & testing |
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: 09h 30m | 9. Software documentation |
How should we document our code? Why are documentation and repository metadata important and how they support FAIR software? What are the minimum elements of documentation needed to support FAIR software? |
Duration: 11h 00m | 10. 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: 12h 30m | 11. Wrap-up | What are the wider Research Software Development Principles and where does FAIR fit into them? |
Duration: 12h 45m | Finish |
The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.
Setup
To go through the course material on your own or at a workshop, you will need the following software installed and working correctly on your system:
-
Command
line terminal (shell) (such as Bash,
Zsh or Git Bash)
- Git version control tool
- GitHub account
- Python 3
- Visual Studio Code (VS Code) integrated development environment (IDE)
- Astronaut data and analysis code which we will be used for exercises in the course
Please follow the installation instructions to install the above tools and set up for the course.