School of Electronic Engineering and Computer Science

People menu

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 in an Object-Oriented Framework (Undergraduate)

Algorithms are "ways of doing something", data structures are ways of combining collections of data to form a coherent whole. Many algorithms are about processing collections of data; an obvious example being to re-arrange a collection to put it in some sorted order. This module will introduce the basic concepts of algorithms and data structures expressed using the Java programming language.Java is an object-oriented language, and the object-oriented style is recognised as a good way of both breaking down a program into coherent parts, and generalising these parts so they may be re-used in a variety of contexts. This module introduces algorithms and data structures in an object-oriented framework. A key theme is the idea of "abstraction": being able to separate out the way a program component works in interaction with other components from what goes on underneath to make it work.The module is intended for those who have already covered the basics of programming, and wish to move on to use and develop their programming skills for designing and constructing components of programs of a larger scale.

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.


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
  • HUNTBACH MM (2003). Features of the Concurrent Programming Language Aldwych. ACM Symposium on Applied Computing
  • HUNTBACH MM (2001). The Concurrent Language Aldwych. World Multiconference on Systemics, Cybernetics and Informatics vol. XIV
  • HUNTBACH MM, RINGWOOD GA (1999). Agent Oriented Programming From Prolog to Guarded Definite Clauses. nameOfConference
Return to top