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

Design Patterns

This is an advanced course in the structure of object-oriented systems, covering both design and programming. It is based around the notion of a design pattern: an abstraction of a proven solution to a recurring problem in a particular context in system structure and behaviour.

Course dates

27th November 2017Oxford University Department of Computer Science 0 places remaining.

Objectives

At the end of the course, students will be able to use the language of patterns to find and to record solutions to recurring problems of system architecture. They will have personal practical experience of a number of the best and most useful patterns. The applicability of these ideas is not restricted to object-oriented languages, although these are particularly convenient for expressing the ideas -- all software engineers, object-oriented or otherwise, can benefit from patterns.

Contents

Design patterns:
design for reuse; capture and communication of knowledge and experience; pattern languages; kinds of patterns; choosing and using patterns.
History of patterns:
model-view-controller in Smalltalk; Alexander's patterns in architecture.
Some common patterns:
model-view-controller; observer; adapter; abstract factory; composite; command; iterator; visitor; strategy.
Anti-patterns:
bad situations and how to get out of them; development, architectural and managerial anti-patterns; recovery, refactoring and realignment.
A case study:
iterative development of an extended practical example; a case study in the application and use of patterns.

Requirements

This course will assume considerable experience in object-oriented design and programming; the courses Object-oriented Design and Object-oriented Programming are suitable preparation. It will use UML and Java, so familiarity with these languages in particular will be helpful.