This module discusses issues specifically related to developing programs for large programming projects and for modern computer hardware architectures.
Object-oriented programming, including the use of subclasses, modules, and library classes to create well-organised programs are covered.
Your understanding of making appropriate choices on the selection of algorithms, their implementation together with the required data structures (e.g. arrays, lists, trees, graphs, depth- and breadth-first search algorithms) will be enhanced.
You will be able to develop programs for modern multi-core architectures utilising functional programming constructs.
Main topics of the module include:
- Transition to Object-Oriented, including types, encapsulation, inheritance, polymorphism, and message passing
- Static typing and reference types
- Further recursion and memorisation
- Local I/O
- Style rules
- Further test-driven development through unit testing and JUnit
- Lambdas and Streams
- Programming in teams.
Upon successful completion of this module, you will be able to:
- explain and exploit subclasses, inheritance and interfaces to produce modular, well-organised code.
- demonstrate knowledge of basic concepts and principles of object-orientation such as objects and classes, encapsulation, object state, coupling, cohesion and modularity.
- demonstrate an understanding of different code styles and approaches for organising and structuring object-orientated code.
- reason using functional programming constructs.
- comprehend code that exploits the networking facilities of a modern programming language.
- apply and produce evidence of an understanding of functional programming constructs.
Two assessment components:
- Online auto-graded test (25%)
- End of term coursework (75%)