Skip to content Search
Search our website:

Software and Programming III

Short name: SP3
SITS code: BUCI056H6
Credits: 15
Level: 6
Module leader: Keith Mannock
Lecturer(s): Keith Mannock
Online material:

Module outline

This module provides students with the necessary skills for developing software using object-oriented and functional programming paradigms. This ranges from learning object-oriented concepts, designing object-oriented software using a proven methodology and tools, to learning how to program in an object-oriented and functional style. The module provides a detailed examination of Software Design Patterns and the emerging functional features of current day object-oriented programming languages.


The main aim of the module is to provide students with the necessary skills for developing software using the object-oriented and functional programming paradigms.

Learning Outcomes

We will be using the Scala programming language for the 2021-22 session.


  • The object model and how it is realised in various object-oriented languages (e.g., Kotlin, JavaScript C#, Java, Scala, Swift, ...)
  • Further development of the ideas of inheritance, polymorphism, and abstraction
  • Language features including nested classes, closures, higher-order functions, meta-objects, etc.
  • The functional paradigm - Abstract data types, polymorphic types, static typing and type inference. Recursion and induction. List processing. Higher-order functions. Eager and lazy evaluation. Imperative features. Signatures, structures, functors, type classes, monads
  • An introduction to Test Driven Design (TDD) and Behavioural Driven Design (BDD)
  • The use of an Integrated Development Environment (IDE) for software development: e.g., editing, debugging, compilation, etc.
  • Modularity, versioning, packaging, and managing the build process
  • Design Patterns and Anti-Patterns and their application to software design
  • The SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) approach to object-oriented programming and design
  • Code refactoring and analysis
  • Concurrency and agents/actors



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


A portfolio of programming coursework consisting of individual, pair, and group assignments.


75% - Three hours unseen online or written examination
25% - Practical programming assignment(s)

Recommended reading

  • Course notes on Moodle