TODO: Use this site to find project supervisors for your masters projects.

**Algorithms**

## Research Interests

Algorithms

Complex Systems

e-Learning

Formal Methods

Model Based Design

Sample Projects:

A Support Tool for Boolean Networks: Boolean networks are a widely used modelling approach for describing and analysing control systems (e.g. hardware, communication systems, biological networks). A Boolean network is simply a graph where each node has a Boolean state. The state of a node is updated according to a rule that takes into account the state of connected nodes. The purpose of this project is to develop new algorithms and tools to allow Boolean networks to be understood and analysed. The idea is that these tools will help support current research in the school. The exact details of the project are open to discussion but some ideas include:

- Developing a simulator for Boolean networks.
- Visualising the behaviour of Boolean networks as state graphs.
- Developing algorithms to analyse Boolean networks.
- Abstracting Boolean networks to simpler models that preserve key properties.
- Composition of Boolean networks.

Tools for Visualising and Analysing Concurrent Systems: Petri nets are a widely used, industrial strength graphical technique for modelling and analysing concurrent systems. They allow us to represent complex systems (such as safety-critical systems, distributed systems, real-time systems, etc) abstractly and to then reason about the behaviour of such systems to ensure they work correctly. This research project involves developing a range of new support tools for concurrent systems based on Petri nets. It will involve researching the Petri modelling language and investigating key visualisation and analysis algorithms in the literature. The exact content of the project is open for discussion but the following are some of the suggested themes: (i) Develop a range of visualisation techniques for displaying and understanding executions of a Petri net model. (ii) Develop animation approaches for executions of a Petri net model. (iii) Investigate the automatic analysis of a Petri net model.

Formal Proof Assistant: Formal proof provides a means for reasoning with a high degree of confidence about the properties of a mathematical model. The idea is to use axioms (rules of inference) to capture the key properties of the system in question and to then use these to justify small deductive steps in the proof. Since a formal proof is simply symbol manipulation it can be machine checked and thus we can place a high degree of confidence in a formal proof. The aim of this project will be to develop tool support for writing and checking formal proofs. The following are some key requirements:

- Provide basic support for writing formal proofs.
- Allow a formal proof to be checked.
- Provide assistance with writing formal proofs.
- Developing automatic techniques for proofs.

Developing a quiz engine to support student learning: The idea behind this project is to develop a generic quiz engine which could be used to help support students on their degree modules. The quiz engine should allow a range of question types to be set up and automatically marked, and allow students to track their progress. The provision of appropriate feedback would be a major part of this system and other challenging aspects that could be undertaken include how to allow students to add their own feedback or questions.

## Technologies & Programming Languages

I am comfortable supervising projects that make use of the following technologies and programming languages.

- Technology choice is normally left to the student

## Contact

Please email to arrange a meeting