Oxford Research Software Engineering Group
Oxford Research Software Engineering Group Software Engineering Course

Course sessions

0

Framing

Course Introduction

Why software engineering matters in research, how the course is structured, and where modern tooling and AI fit in.

Open presentation
1

Paradigms

Object-Oriented Programming

How to use classes to encapsulate data and behavior, and how inheritance and composition can make code more maintainable.

Open presentation
2

Paradigms

Functional Programming

Core functional programming concepts, including pure functions, immutability, and higher-order functions.

Open presentation
3

Collaboration

Version Control with Git

A practical Git foundation for safer collaboration, reproducibility, and confident control over changes in your code.

Open presentation
4

Collaboration

Collaborative Code Development

Working effectively with branches, pull requests, issue trackers, and code review in shared repositories.

Open presentation
5

Tooling

Software Testing

Strategies for how to test effectively to improve reliability, including unit and integration testing, and test-driven development.

Open presentation
6

Tooling

Continuous Integration

Setting up automated testing and quality checks with continuous integration tools to catch issues early and maintain code health.

Open presentation
7

Tooling

Packaging and Dependency Management

How to package and manage dependencies so software stays reusable and distributable.

Open presentation
8

Tooling

Containerisation with Docker

Using Docker to package applications and environments consistently across development, CI, and deployment.

Open presentation
9

Scalability

Introduction to HPC

An introduction to high-performance computing concepts, architectures, and use-cases.

Open presentation
10

Scalability

Workflows with Snakemake

Building reproducible computational workflows with rules, dependencies, and easy scalability.

Open presentation