Principles of Programming II
This module further develops the techniques described in the “Principles of Programming I” module. This module discusses issues specifically related to developing programs for large programming projects and for modern computer hardware architectures.
This module covers object-oriented programming, including the use of subclasses, modules, and library classes to create well-organised programs. A further aim is to enhance student’s 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). To enable students to develop programs for modern multi-core architectures utilising functional programming constructs.
On successful completion of this module a student will be expected to be able to:
- Explain and exploit subclasses, inheritance and interfaces to produce modular, well-organised code.
- To utilise the relevant features of a programming language.
- Implement simple algorithms and data structures, both in sequential and parallel environments.
- Show knowledge of basic concepts and principles of object-orientation such as objects and classes, encapsulation, object state, coupling, cohesion and modularity.
- Provide evidence of the understanding of functional programming constructs.
- Write code that exploits the networking facilities of a modern programming language.
- Transition to Object-Oriented, including types, inheritance, etc.
- Static typing and reference types
- Further recursion, memorisation, etc.
- Local I/O
- Functional programming constructs
- Filter, map, reduce, etc.
- Style rules
- Further test driven development
- Avoid “boilerplate”
- Programming in teams
Principles of Programming I module
All dates and timetables are listed in the programme handbooks of individual programmes.
There are programming assignments and graded exercises for this module.
This module is assessed by
- Two-hour unseen examination – online or paper (80%)
- Programming assignments and group work (20%)
A set of notes are provided for this course but the following text covers similar topics:
- Core Java for the Impatient by Cay Horstmann. Addison-Wesley. 2014. ISBN 978-0321996329