University of Oxford Logo University of OxfordSoftware Engineering - Home
On Facebook
Facebook
Follow us on twitter
Twitter
Linked in
Linked in
Google plus
Google plus
Digg
Digg
Pinterest
Pinterest
Stumble Upon
Stumble Upon
APE

Agile Engineering Practices

This course presents practical techniques for building software in an agile environment. We aim to minimise the time between the conception of an idea and its implementation in working software released to users. We aim to embrace the changes thrown at us by a continually changing market, and to mitigate the associated risks by using technical practices to ensure quality - of our software and of the processes that we use to develop it.

Frequency

This course normally runs once a year.

Course dates

7th April 2025Oxford University Department of Computer Science - Held in the Department07 places remaining.
20th April 2026Oxford University Department of Computer Science - Held in the Department18 places remaining.

Objectives

At the end of the course, students will have an understanding of and practical experience in the techniques used to support building software in an agile environment. We will look at the technical practices described by eXtreme Programming, such as continuous integration and pair programming. We will also look at various types of quality assurance techniques, and how they may be applied to greenfield or existing projects. We will explore techniques relating to requirements analysis, core development, QA and operations. The taught material will be supported by hands-on practical exercises demonstrating tools and techniques.

Contents

Introduction
introducing the fundamentals of agile development, the aims, and how technical practices support these
Extreme Programming
development practices from extreme programming: pair programming, test-driven development, continuous integration
Continuous Delivery
version control; continuous integration; automated build and release
Refactoring
preserving internal code quality; technical debt; automated refactoring techniques and patterns
Working with Legacy Code
mitigating risk when working existing codebases; introducing tests to legacy code;
Test-Driven Development
TDD with unit tests; mock objects
Specification by Example
closing the communication gap between business and development
Release and Deployment
strategies for frequent and reliable release; continuous deployment

Requirements

This is a practical course, with programming exercises. Most of the exercises will use Kotlin, so students really should have some familiarity with Kotlin (or Java or C#) and object-oriented programming before taking the course. Some familiarity is assumed also with agile methodologies: the Agile Methods course would be an ideal preparation.