The Oxford RSE group offers training in the following areas. Our events page lists upcoming scheduled courses, you can also contact us to arrange one-off bespoke training for your group.

Version Control with git

Concepts of version control. Command-line use of git. Detecting and resolving conflicts. Collaborative development using GitHub, branches, and pull requests.

A one-day class.

Scientific Python

Introduction to Python: syntax; built-in data types; using data structures; functions. Creating and using modules. Container types. The Python Standard Library. Error handling with exceptions. Classes and object-oriented programming. Numerical programming with numpy.

This is a two-day class.

Python packaging

Learn to easily organise and share your python projects with python packages. An interactive half-a-day class in which attendees have the opportunity to turn a couple of python scripts into a full-blown python package hosted on PyPI.

Going from a set of scripts to python modules, what is a python package and how to make one, reusing a package across research projects, introduction to virtual environments, sharing a package on the Python Package Index (PyPI).

Introduction to C++

Introduction to C++: basic types, flow control, input/output pointers, references, dynamic memory allocation and arrays, functions, classes and object-oriented programming, templates and the Standard Template Library, Exceptions

This is a 4-5 day class

Modern C++

Overview of language and library evolution since 2011. Standard algorithms. Smart pointers. Lambda functions. The filesystem library. Refactoring legacy C++.

A one-day class.

Research Software Engineering

Requirements engineering. Software architecture. Automated testing and continuous integration. Building and deploying software. Object-oriented analysis and design. Using IDEs. Refactoring. Open source software and software citation.

A five-day class, that also recaps material from the Python and Version Control classes.