[Univ of Cambridge] [Dept of Engineering]


Steve Young










3F6 Software Engineering and Design

This 16 lecture module aims to teach some of the key principles
of software engineering and design. It is aimed specifically at
the construction of engineering systems built by small teams of
5 to 20 people.

The course starts with a low-level overview of what computers are doing
``close to the metal'' and then works up through object oriented
design techniques to system components and software management.


  • Architecture of a computer (1)
    How a program executes, the structure of memory and pointers in C/C++.
  • Classes and C++ (2,3)
    Introduction to object oriented programming in C++; motivation,
    approach, language facilities.
  • The Unified Modeling Language (4)
    Using formal UML diagrams to express the architecture and behaviour of software; and the role of these diagrams in software design.
  • Object Oriented Design (5)
    How to turn a specification into a software design.
  • Design Patterns (6,7)
    Commonly recurring design problems and solutions.
  • Refactoring (8)
    Redesigning existing software to improve its design and to incorporate new capabilities.
  • User interface design (9)
    Designing for the user, use cases and UI design patterns.
  • Distributed Systems (10,11)
    Client-Server architectures and CORBA.
  • Database Systems (12)
    Database management systems, transaction processing,
    concurrency control, check-pointing and recovery.
  • Concurrent Systems (13,14)
    Constructing systems with multiple processes/threads.
  • Software Management (15,16)
    How to manage the software construction process for small engineering systems.

Lecture Notes and Examples Papers

Lecture notes will appear immediately after each lecture. Example paper solutions will appear approximately 4 weeks after they are issued.


Red=not accessible yet

# Lecture Additional Material
1 Architecture of a Computer  
2 Classes and C++ (I)  
3 Classes and C++ (II)  
4 Unified Modelling Language  
5 Object Oriented Design Source for the expression evaluator
6 Design Patterns I  
7 Design Patterns II  
8 DP III andRefactoring  
9 User Interface Design Supporting slides
10 Distributed Systems I  
11 Distributed Systems II  
12 Database Systems  
13 Concurrent Systems 1  
14 Concurrent Systems 2  
15 Software Management 1  
16 Software Management 2  
Ex1 Object Oriented Design Ex1 Solutions
Ex2 OOD, UML & Design Patterns Ex2 Solutions
Ex3 Concurrency Ex3 Solutions
Ex4 Software Management Ex4 Solutions

Useful Links

CUED C++ Resource Guide