Object-Oriented Programming


  1. To develop understanding of object-oriented software methodology, in theory and practice.
  2. To further develop sound principles in software design and software development.
  3. To understand basic concepts of software testing principles and software version control systems.


  1. Objects and classes. Packages/modules.
  2. Class inheritance. Abstract classes.
  3. Polymorphism and object introspection.
  4. Object serialisation.
  5. Collections and iterators.
  6. Exceptions and exception handling.
  7. Software design methodology, including simple design patterns and refactoring.
  8. Software version control and testing, including distributed version control systems, unit testing, and continuous integration testing.
  9. Graphical user interfaces and event-driven programming.

Learning Outcomes

  • Describe object hierarchy structure and how to design such a hierarchy of related classes.
  • Describe the concept of object polymorphism in theory and demonstrate this concept in practice.
  • Design and code iterators for collection-based data management.
  • Design simple unit tests using appropriate software tools.
  • Demonstrate concepts of event-driven programming and be able to design simple GUI to demonstrate this understanding.
  • Identify and describe the task and issues involved in the process of developing interactive products for people, and the techniques used to perform these tasks.