Training

If you’re looking to advance your research through better software and data practices, the Southampton Research Software Group offers training to help you get there.  We deliver practical workshops that help researchers use, write, share, and publish reliable software, build robust data analysis pipelines, and improve the reproducibility and scale of research outputs. 

Our courses are hands-on, giving participants the opportunity to learn and apply computational research skills in real time. All trainers are either Research Software Engineers or experienced computational researchers who have worked across a wide range of disciplines. We teach the tools we actively use in our own work, ensuring we can provide realistic, informed answers to research-specific questions. Researchers can also learn to use institutional infrastructure to scale up their research.

With more than 10 years of experience delivering training, we have run over 70 workshops for more than two thousand postgraduate researchers, academic staff, and industry partners. We continually refine our courses based on learner feedback to ensure they remain useful, engaging, and aligned with real research needs.

Upcoming Training Courses

Digital Research Skills for Social Scientists

Date: 3rd – 6th March 2026

Location: online

Improve the efficiency and reliability of your research with this introductory course. Learn foundational computational skills including automating tasks using the command line on your computer, tracking changes to your work using version control and building simple programs using the programming language python. These skills are the foundation of many powerful data analysis techniques including using Artificial Intelligence or High Performance Computing.

Sign up through the National Centre for Research Methods: https://www.ncrm.ac.uk/training/show.php?article=14333

Introduction to Machine Learning with Scikit Learn in Python

Date: 17th March 2026

Location: online

A one day introduction to machine learning using Scikit Learn in Python. Learners will be introduced to several machine learning techniques including regression, clustering, dimensionality reduction, and neural networks. The course also includes a brief overview of the ethics and implications of machine learning.

Sign up through the National Centre for Research Methods: https://www.ncrm.ac.uk/training/show.php?article=14328

Workshops for Groups

You can also book a training workshop for your group of postgraduate students or staff. Please see below for the workshops we can offer.

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:

Coming Soon

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.