Skip to content Search
Search our website:

Principles of Programming II

Short name: POP2
SITS code: BUCI064H7
Credits: 15
Level: 7
Module leader: Hubie Chen
Lecturer(s): Hubie Chen
Online material:

Module outline

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.

Learning Outcomes

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
  • Generics
  • Style rules
  • Concurrency
  • Further test-driven development through unit testing and JUnit
  • Lambdas and Streams
  • Tooling
  • Programming in teams


Principles of Programming I module


Indicative timetables can be found in the handbooks available on programme pages. Personalised teaching timetables for students are available via My Birkbeck.


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.

Recommended reading

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