Skip to content Search
Search our website:

Software Design and Programming

Short name: SDP
SITS code: COIY062H7
Credits: 15
Level: 7
Module leader: Keith Mannock
Lecturer(s): Keith Mannock
Online material:

Module outline

To provide students with the opportunity to further develop the scope of their problem solving skills by continuing their study of advanced programming techniques.


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


A selection from the following topics:

  • The object model and how it is realised in various object-oriented languages (e.g., C#, Java, Scala, Swift, ...)
  • Further development of the ideas of inheritance, polymorphism, and abstraction
  • Language features 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

Please note that the materials for this module are presented using a combination of blended learning techniques together with the inverse curriculum approach to teaching.


Timetables, locations and term dates

Programme specific timetables are listed in the handbooks available for each programme. Please consult the relevant programme page.

Enrolled students can find their personal teaching timetable and the location of classes on their My Birkbeck profile.


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


By 3-hour unseen written and practical examination and coursework portfolio; weighting 80% and 20% respectively.

Recommended reading

  • Course notes
  • Programming C# 8.0 by Ian Griffiths, O'Reilly Media, Inc., (December 2019)
  • Microsoft C# Guide
  • C# 7.0 in a Nutshell: The Definitive Reference by Joseph Albahari and Ben Albahari O'Reilly Media; 1 edition (October 28, 2017)
  • ...