- To develop understanding of object-oriented software methodology, in theory and practice.
- To further develop sound principles in software design and software development.
- To understand basic concepts of software testing principles and software version control systems.
- Objects and classes. Packages/modules.
- Class inheritance. Abstract classes.
- Polymorphism and object introspection.
- Object serialisation.
- Collections and iterators.
- Exceptions and exception handling.
- Software design methodology, including simple design patterns and refactoring.
- Software version control and testing, including distributed version control systems, unit testing, and continuous integration testing.
- Graphical user interfaces and event-driven programming.
- 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.