Skip to main content
School of Electronic Engineering and Computer Science

Dr Matthew Huntbach



Telephone: +44 20 7882 5818
Room Number: Peter Landin, CS 303
Office Hours: Wednesday 10:00-12:00


Algorithms and Data Structures (Undergraduate)

The module is an introduction to Algorithms and Data Structures. It covers topics such as running time of algorithms, asymptotic complexity, simple and advanced sorting algorithms, divide and conquer algorithms, recursion, dynamic programming, greedy algorithms, basic data structures (strings, arrays, lists), linked lists, trees, hash tables.

Further Object Oriented Programming (Undergraduate)

This module is about writing code in a way that breaks large programs into small well-defined parts. It takes further what was taught about object-oriented programming in the first year, and its use in software engineering in the second year, emphasising practical coding aspects. The "SOLID" principles of good program design will be covered, and also implementation of important design patterns. Further aspects of the language Java will be considered, and comparison of Java with other programming languages. Some time will be given to programming in Scala, a functional style language implemented with the Java Virtual Machine/

Object-Oriented Programming (Undergraduate)

Major topics include the concepts of class, object, method, subclass, inheritance and their use in programming. The relevance of the object oriented style with respect to concrete software problems will be stressed both in lectures and labs. There will be two hours of lectures per week, and each student will have a weekly timetabled lab session. In addition, you will be expected to spend further time outside scheduled lab periods in the lab (or at home machines if they are available), and to read textbooks and review notes.

Software Engineering (Undergraduate)

Software Engineering is concerned with applying engineering principles to the production of software. This module provides the management principles, theoretical foundations, tools, notation and background necessary to develop and test large-scale software systems. The practical part of the module consists of lab assignments in which students use a range of relevant tools (a Java programming IDE, unit testing tool, configuration management tool, UML design tool, and project planning tool). Aims To ensure students have the necessary understanding of the principles and tools needed to build and test large-scale software systems. In particular, it provides the necessary background for students to undertake a significant group project assignment in subsequent modules or employment.

Software Engineering (BUPT joint programme)

An introduction to modern software development techniques necessary to produce high quality software and to manage the production of this software, and additional practice in program development. The module focuses on communication: ensuring customer requirements have been correctly understood, learning to develop a software as a team, developing clean code and the critical problems of project management.


Research Interests:

Concurrent/Declarative Programming Languages Declarative programming languages are based on an abstract model of computing rather than the actual hardware. With an abstract model which breaks down clearly into pieces with defined patterns of interaction, we can write programs which are less likely to contain bugs than conventional programs and more easy to analyse. Another reason for using declarative languages is that as they are not tied to the standard single-processor architecture they may more easily be mapped onto multi-processor architectures, while saving the programmer from having to be concerned with low-level aspects of controlling these architectures. The challenge is to design programming languages which are easy for ordinary programmers to use, which fit into the modern pattern of computing which is as much about interaction is about calculation, and which have a clear abstract model underlying them.


  • HUNTBACH MM (2007). The Core Language of Aldwych. Communicating Process Architecture

    DOI: doi

    QMRO: qmroHref
  • HUNTBACH MM (2003). Features of the Concurrent Programming Language Aldwych. ACM Symposium on Applied Computing

    QMRO: qmroHref
  • HUNTBACH MM (2001). The Concurrent Language Aldwych. World Multiconference on Systemics, Cybernetics and Informatics vol. XIV

    DOI: doi

    QMRO: qmroHref
  • HUNTBACH MM, RINGWOOD GA (1999). Agent Oriented Programming From Prolog to Guarded Definite Clauses. nameOfConference

    DOI: doi

    QMRO: qmroHref
Back to top