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).

A one-day class.

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. We will make use of the algorithms library, lambda functions, the filesystem library and much more, with features spanning modern C++ standards up to and including C++20.

A one-day class.

Modern CMake

CMake is now the de facto standard build system for C++ and other compiled languages, and with huge improvements over the last few years there has never been a better time to learn CMake and modernise your build process. This course is a gentle introduction to modern CMake. We will start off with configuring a simple project with a single source file, and move through to a more complex modular arrangement of source files that require multiple dependencies, with a clean, readable and intuitive set of build files.

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.