Imperial College London

Dr. Sebastian Uchitel

Faculty of EngineeringDepartment of Computing

Reader in Software Engineering



+44 (0)20 7594 8269s.uchitel Website




573Huxley BuildingSouth Kensington Campus





Other, <b>Past courses listed below.</b>. (Postgraduate)

Other, PhD Admissions Tutor. (Postgraduate)

Software Engineering Design (MSc) - COMP97121


To give students tools and techniques to reliably design and evolve larger software systems. The course will look at principles of software design, where to apply them, and how they may inform design choices, addressing common problems with recognised design solutions. It will also cover techniques for ensuring that systems we build behave correctly. The course introduces Java - one of the most widespread programming languages in the industry today - and uses this language and supporting tools for all examples and exercises.

More specifically students will:

  • Gain familiarity with the core Java language, and implementing OO designs in Java.
  • Gain familiarity with key Java library classes and tools in order to be a productive Java programmer.
  • Practise the technique of Test-Driven Design to ensure behavioural correctness.
  • Practise refactoring to improve software structure according to design principles.
  • Be able to select and apply popular Design Patterns as solutions to common design problems.
  • Learn to make reasoned design choices based on trade-offs and principles.


Course Leader