You can book a training workshop for your group of postgraduate students or staff. Please see below for what we offer: Novice Workshops for researchers new to programming, Intermediate Workshops for those wanting to take their skills to the next level, and AI Workshops for anyone wanting to learn more about AI or explore how AI can assist with research software development. To make a training enquiry, please contact us via the Enquiry Form.
Novice Workshops
Introduction to Research Software Development
Duration: 4 half days
This course equips researchers with the skills to build robust and reproducible software and data analysis pipelines.
Automating Tasks with the Bash Shell covers command line interfaces, combining commands for complex operations, using loops to automate repetitive tasks like processing multiple data files, and employing powerful search features.
Version Control with Git teaches you to track file changes, recover from errors, and collaborate effectively with colleagues whilst managing team contributions.
Building Programs with Python introduces Python fundamentals, writing well-documented and maintainable code, using Python libraries to access community tools, and creating visualisations with Matplotlib.
This course provides a solid foundation for conducting computational research efficiently and sustainably.
Data Analysis and Visualisation in R
Duration: 3 half days
This course teaches researchers how to analyse and visualise data effectively using R and RStudio.
You’ll learn to navigate the RStudio environment, organise your work as R Projects, and understand core R concepts including objects, functions, and arguments. We’ll cover data manipulation fundamentals including loading data from files, working with data frames, subsetting data, and handling factors and missing values.
The course introduces the dplyr and tidyr packages for efficient data manipulation. You’ll learn to filter and select data, use pipes to chain operations, create new variables, and apply split-apply-combine techniques for grouped analyses. We’ll also cover reshaping data between wide and long formats and working with dates.
For visualisation, you’ll use ggplot2 to create publication-quality scatter plots, boxplots, and time series plots. You’ll learn to customise aesthetics, apply faceting for multi-panel plots, and build complex visualisations tailored to your data.
By the end of this course, you’ll be able to import, wrangle, analyse, and visualise research data confidently in R.
Introduction to High Performance Computing
Duration: 1 half day
This course provides researchers with foundational knowledge about how they can access and use High Performance Computing (HPC) resources, such as Iridis, effectively.
You’ll gain a conceptual understanding of HPC systems, including how supercomputers work and job scheduling processes. We’ll cover the fundamentals of parallel computing using the Slurm job scheduler used on Iridis and introduce parallel programming using OpenMP, MPI and CUDA.
This course will help you get started with using HPC resources to scale up your research.
Intermediate Workshops
Pre-requisites
To benefit from these courses, learners must:
- Be comfortable using the Python interpreter from the command line and understand basic Python (e.g. writing loops, using functions and libraries).
- Be able to use Git for version control via the command line (e.g. clone, add, commit, push, and pull with GitHub).
Attending ‘Introduction to Research Software Development’ should enable learners to meet these pre-requisites.
Managing Academic Software Development
Duration: 1 half day
This half-day course provides researchers with essential skills for managing academic software projects effectively.
You’ll learn to use GitHub Issues to track tasks and bugs, and set up Project Boards to visualise and manage workflow. We’ll cover forking repositories for collaboration, creating stable releases, generating DOIs for citations, and applying software licenses.
You’ll also learn to write readable, maintainable code through descriptive naming, effective comments, and clear docstrings.
Introduction to Machine Learning in Python
Duration: 1 day (or 2 half days)
This one-day course introduces researchers to machine learning using Scikit Learn in Python.
You’ll explore key machine learning techniques including regression, clustering, dimensionality reduction, and neural networks. We’ll work with Scikit Learn throughout, giving you hands-on experience with this widely-used Python library.
The course also covers the ethics and implications of machine learning, helping you consider the broader impact of these technologies.
This course provides a foundation for applying machine learning methods in your research.
Building Better Research Software
Duration: 4 half days
This four half-day course teaches researchers how to develop high-quality, reproducible research software.
You’ll learn the principles of open and reproducible research and learn how to apply these to your code with the help of various tools and techniques. We’ll cover how to work in Python virtual environments and how to write clean, maintainable code through meaningful naming, reusable functions, and proper documentation. You’ll use GitHub’s collaborative features including issue tracking, branching, and pull requests to manage development and work effectively with others.
The course also covers automated testing using pytest to ensure your software behaves as expected, and documentation best practices including using MkDocs to create comprehensive project documentation. You’ll learn to archive code on Zenodo and generate DOIs to make your software citable.
This course provides practical skills for building robust, sustainable, and collaborative research software.
Intermediate Research Software Development
Note: This is a more advanced intermediate course. A typical learner for this course would have gained basic software development skills (at least meeting the pre-requisites above) and been applying these skills in their domain of work by writing code for at least six months.
Duration: 5 half days
This course aims to teach a core set of established, intermediate-level software development skills and best practices for working as part of a team in a research environment using Python as an example programming language. The core set of skills we teach is not a comprehensive set of all-encompassing skills, but a selective set of tried-and-tested collaborative development skills that forms a firm foundation for continuing on your learning journey.
Day 1 covers setting up robust development environments, including virtual environments, IDEs, Git workflows, Python style conventions, and automated code linting to maintain code quality.
Day 2 focuses on automated testing at scale. You’ll learn to write comprehensive unit tests, implement continuous integration for automated testing, and diagnose issues to improve software robustness.
Day 3 explores software development as a structured process. We’ll cover gathering requirements, designing software architecture, applying code decoupling and abstractions, and refactoring code to improve maintainability.
Day 4 teaches collaborative development practices including code review workflows, preparing software for reuse, and packaging code for release and distribution.
Day 5 covers long-term software management, including project management strategies, assessing software quality and suitability, and implementing feedback mechanisms for continuous improvement.
Byte-Sized RSE
Byte-sized RSE is a series of standalone mini lessons providing key research software skills in around 1.5 hour. At the moment, the following mini lessons constitute the Byte-sized RSE series:
- Code Development & Debugging with IDEs
- Code Style, Quality & Linting
- Intermediate Git
- Code Review
- Unit Testing Code
- Continuous Integration
Industry Skills for Software Engineering Bootcamp
Duration: 5 full days
This new training course has been designed around the findings of a recent study into the skills most in demand, and most often missing, when software engineers enter industry.
Over the course of five intensive days, you’ll take part in sessions including:
- Agile software development
- Version control and testing
- Project management and communication
Alongside the taught sessions, you’ll work in a team on a simulated client project, giving you the chance to apply what you learn in a real-world context and present your work at the end of the week.
AI Workshops
AI Fundamentals for Researchers
Duration: 1 half day
A beginner-level introduction to the landscape of Artificial Intelligence (AI) techniques. This course will help researchers build a foundational understanding of key areas within AI, including machine learning, deep learning, and large language models (LLMs) including what they are, how they work, and how they relate to one another within the broader AI ecosystem. Designed for researchers with little or no prior knowledge of AI, this course provides clear, accessible explanations without requiring any coding or statistics experience.
Coding with AI: Opportunities and Responsibilities for Researchers
Duration: 1 half day
A practical introduction to using AI to support coding in research. This course will help researchers understand how to use AI to help them write code effectively and responsibly. This course is designed for researchers with little to no experience coding. The course provides clear, hands-on guidance for using AI to write, debug, and understand code, while addressing key ethical, security, and reliability considerations in research contexts.
Developing Research Software with AI Tools
Duration: 1 day
An intermediate-level practical course on integrating Artificial Intelligence (AI) tools into research software development. Building on foundational knowledge of large language models (LLMs) and AI coding assistants, this course focuses on using these tools effectively within integrated development environments (IDEs). Researchers will develop practical skills to enhance productivity, improve code quality, and apply AI responsibly in real-world research projects.
