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
11

Tooling

Using AI for Coding

How to use modern AI tools effectively and responsibly in code development

Open presentation