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

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.

Course dates

16th January 2017Oxford University Department of Computer Science06 places remaining.
10th July 2017Oxford University Department of Computer Science14 places remaining.
15th January 2018Oxford University Department of Computer Science17 places remaining.
2nd July 2018Oxford University Department of Computer Science17 places remaining.


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.


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
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; acceptance testing; specification by example tools (e.g. FIT)
Release and Deployment
strategies for frequent and reliable release; case studies
Lean Product Development
the Lean Startup movement; continuous deployment


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