Skip to content Search
Search our website:

Programming Language Paradigms

Short name: PLP
SITS code: BUCI032H6
Credits: 15
Level: 6
Module leader: Trevor Fenner, Keith Mannock
Online material:

Module outline

In this module we discuss the differing programming paradigms and how they can be used in developing software. The student is provided with the opportunity to further develop the scope of their problem solving skills by studying advanced programming languages and new programming paradigms.


To enable students:

  • to understand the key differences between the various programming paradigms and the applicability of these paradigms to different programming problems,
  • to deal with the changing requirements of the current day (and future) programmer where (so called) "polyglot" programming, the ability to mix and match languages and technologies appropriately, is fast becoming the norm.


  • Definition of syntax and semantics;
  • Variable scoping and binding - lexical/static and dynamic;
  • Normal and applicative order evaluation, parameter passing mechanisms
  • Storage allocation: run-time stack, heap storage and garbage collection
  • Language support for abstract data types - arrays, maps, lists, etc.;
  • Data abstraction and libraries, collections, iterators;
  • Recursion, including tail recursion optimisation;
  • Continuations, threads, tasks, actors, co-routines, etc.
  • The imperative (procedural and object-oriented) language paradigm;
  • The functional and logic language paradigms: lambda expressions, closures, environments, predicates, etc.;
  • Domain Specific Languages: scientific computation, symbolic computation, Web and Internet computing.

The above are illustrated using appropriate programming languages. For 2020-21 the languages are:

  • Haskell and Racket,
  • Kotlin,
  • Prolog, and
  • Go.


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.


Programming assignments which together form a coursework portfolio.


By three hour written examination (worth 75%), practical coursework portfolio (worth 25%).

Recommended reading

The course text for 2020-21 is:

  • TBC

Alternative texts:

  • Programming Language Explorations by Ray Toal, Rachel Rivera, Alexander Schneider, and Eileen Choe. Chapman and Hall/CRC. 2016. ISBN 9781498738460
  • Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce A. Tate. Pragmatic Bookshelf. 2010. ISBN 978-1934356593
  • 97 Things Every Programmer Should Know: Collective Wisdom from the Experts edited by Kevlin Henney. O'Reilly Media. 2010. ISBN 978-0596809485
  • Programming Language Pragmatics by Michael L. Scott. 3rd Edition. Morgan Kaufmann Publishers. 2009. ISBN 978-0123745149
  • Programming Languages by Allen B. Tucker and Robert Noonan. 2nd Edition. McGraw-Hill. 2007. ISBN 978-0071254397
  • Types and Programming Languages by Benjamin C. Pierce. The MIT Press. 2002. ISBN 978-0262162098
  • Programming Languages: Principles and Paradigms by Maurizio Gabbrielli and Simone Martini. Springer. 2010. ISBN 978-1-84882-914-5_10