Aims:

This module provides a thorough introduction to object-oriented (OO) programming. The key object-oriented concepts such as class design, inheritance, dynamic binding and interfaces, are introduced along with design strategies for smaller sized object-oriented programs. Material is also included on data representation, the implementation of common data structures such as lists, trees and hash tables, basic cloud-based applications, and on development tools and practices. To learn how to apply object-oriented design concepts, and practice programming skills, the module has a substantial practical element, with weekly lab classes, sets of exercise questions, and an individual programming coursework.

Learning outcomes:

On successful completion of the module, a student will be able to:

Design and implement smaller-scale object-oriented programs.
	Have a good knowledge of key object-oriented principles and design strategies.
	Read, write, and process data sets using object-oriented techniques.
	Understand how core data structures are implemented using classes.
	Develop basic OO applications that run in a cloud environment.
	Use programming tools such as an integrated development environment (IDE), debugger, and version control.
Content:

Topics covered in lectures or via online material:
Object-Oriented Principles:

Taking an object-oriented approach to software development.
	Classes and the use of abstractions.
	Key design principles and development practices.
Object-Oriented Programming:

Designing and implementing classes.
	Identifying and implementing class relationships.
	Using abstract classes, interfaces and inheritance.
	Developing smaller-scale programs taking an object-oriented approach.
	Effective object-oriented design and programming practices.
	Documenting designs using class diagrams.
	The design of basic cloud-based applications.
Data Representation:

Implementing common data structures.
	Storing data in files.
	Processing data to extract information.
Requisites:

To be eligible to select this module as optional or elective, a student must: (1) ​be registered on a programme and year of study for which it is a formally available; and (2) have taken Principles of Programming (COMP0002) in Term 1.