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.

1

Paradigms

Object-Oriented Programming

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

2

Paradigms

Functional Programming

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

3

Collaboration

Version Control with Git

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

4

Collaboration

Collaborative Code Development

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

5

Tooling

Software Testing

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

6

Tooling

Continuous Integration

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

7

Tooling

Packaging and Dependency Management

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

8

Tooling

Containerisation with Docker

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

9

Scalability

Introduction to HPC

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

10

Scalability

Workflows with Snakemake

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

11

Tooling

Using AI for Coding

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

12

Tooling

Modern CMake

Writing modern, portable CMake to configure, build, and manage dependencies for C++ projects.

13

Tooling

Directing Coding Agents

Working with modern coding agents effectively by providing the right context and clear specification.

14

Tooling

Introduction to the Bash shell

An introduction to the Bash shell, basic operations to navigate the file system and useful commands.

15

Tooling

Introduction to Python

An introduction to the Python programming language

16

Paradigms

Procedural Programming

An introduction to the procedural programming