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, encapsulation, inheritance, polymorphism, and message passing, etc.
- Static typing and reference types
- Further recursion, memoisation, etc.
- Local I/O
- Style rules
- Further test-driven development through unit testing and JUnit
- Lambdas and Streams
- Programming in teams
Principles of Programming I module
There are programming assignments and graded exercises for this module.
This module is assessed by an unseen examination (80%) and programming assignments (20%)
The unseen examination is comprised of two components:
- 50% practical interactive online, and
- 50% written paper.
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