My teaching and research interests lie in the general area of software and software systems: the courses I teach and have taught are Compiler Design, Semantics of Programming Languages, Logic for Computer Scientists, and Concurrent Processes, and my areas of research are Formal Methods, Theorem Proving, and Computational Biology. I am happy to supervise projects in these areas, primarily, but am willing to supervise in other areas too, particularly when the student shows enthusiasm and drive towards the subject they come up with. However, I am not keen to supervise projects that do not involve some amount of software design and implementation. Research-based projects are surprisingly difficult to get right, and involve good use of proper research methodology in order to be more than a survey-type essay. Other people may be able to supervise such projects better than me.
I enjoy supervising projects, but I expect my supervisees to work fairly independently and to be responsible for the technical content. I see the role of a supervisor as mostly a project manager, making sure that progress is according to the specified timetable, that appropriate software and hardware is being used and is available, and that the final outcome reflects the effort and originality that the student has put into the project.
I provide here some suggestions for projects, suitable for both individual 3rd year projects as well as 4th year group projects. But in my experience the best projects are those that have been suggested by the students themselves.
Compilation and translation
Many large software systems are based around the idea of translation - from one formalism to another. I am happy to explore applications of these concepts to a variety of domains. One of my research interests is in optimizing compilers, and how compilers can be adapted to interesting input languages. In particular I am exploring systems that work on top of Eclipse and allow different DSLs to be manipulated, such as the Xtext package. Happy to explore compiler ideas. This fits in with the thirst year module CS325 Compiler Design that I used to teach.
Models of biological pathways
My specific interest in Bioinformatics is the modelling of biochemical pathways. However, many of these models do not capture the generality of these networks. It has been suggested to me that either object models or polymorphic models would capture better the links between the different, correlated molecules that take part of these networks. I would like to explore these concepts further, and would welcome participation by interested students. Suitable for students who have interest in learning a little bit of biology, chemistry, or biochemistry, and who have good programming skills in functional languages (SML, etc) or scripting languages (Perl, etc). They must be interested in some theoretical aspects, such as ontologies and semantics.
See KEGG for example data.
Animation of cell biology
Understanding cellular biology can be enhanced by animated models of important phenomena. Some of the most interesting processes involve cell membranes, which have a role in diffusion of chemicals.
The goal of this project is to develop an animated model of biological processes involved cell membranes, and capturing the 3-dimensional aspects as well as different biochemical components. A specific possibility is to allow users to specify different kinds of channels and have a program which allows visualization of transport and binding by receptors. This project will involve a fair amount of programming, and use of graphics packages such as OpenGL or Java3D. A 4th year group could tackle this challenging problem and get significant results. A 3rd year student would develop a simpler model.
Graphical tools for teaching computing theory
Teaching theory modules (such as logic, concurrency, etc) to typical undergraduates is difficult because of what seems to be un-intuitive use of formality. Graphical tools can help. There are several tools which have been developed, such as the Concurrency Workbench, but their utility is limited as students need to learn the syntax. One approach is to use animation to aid learning of formal notations or mathematical concepts such as Set Theory. This can be based on any of the existing tools, or a new tool using animation, can be developed. This project suits students who have an interest and facility in programming. TAKEN
Traditional kilims and carpets around the world are based on certain sets of patterns and designs. In this project, one can build a tool to develop new rugs based on these patterns, analyze existing rugs (both historic and modern) on the influences, and even think of watermarking and encoding of information within the designs. This is, so far, a loosely specified project, but a student who takes it up should be strong in programming, with a particular interest in computer graphics and image processing, as well as wish to read up a bit about rugs in design books and dedicated websites.
Another project idea is to develop a package to generate Arts and Crafts designs, such as William Morris wallpapers, which are based on repetitive patterns which need to click together in order to create pleasing outputs. Fractals could serve as a computational base. Algorithms could be developed to generate families of related patterns. TAKEN