This module trains students to analyse and break down programming problems, using Unified Modelling Language (UML) diagrams. Students will also learn to apply object-oriented concepts, such as encapsulation, inheritance and polymorphism, in their Java programmes. Students should ideally have completed a foundational module in object-orientation in Java, before undertaking this module.