Below I describe some general areas as well as some concrete project ideas:
This is similar to the previous topic but is not restricted to algorithmic ideas. Almost any subject can benefit from a tool that is interactive and shows change in time, qualities which are difficult to incorporate into textbooks.
Project idea: I would like to develop a web site to support the
course Models of Computation. This will involve several tasks,
such as
I consider each of these projects in themselves.
Requirements: You need to have done well in the MoC course
and you need to be a competent programmer. For the last task (HCI
Design) you need to have creative skills and a desire to make things
not just technically correct but also aesthetically pleasing.
Project idea: To write a program (not necessarily web-based) to help primary school children develop mathematical intuitions. This is not meant to consist of a simple while loop in which tedious arithmetic problems are set, but rather the idea is to explore connections between numbers and the arithmetic operations, on the one hand, and geometry on the other hand. I have a lot of ideas in this direction myself but the project will offer plenty of opportunity for you to bring in your own ideas. Requirements: You need to be enthusiastic about teaching Mathematics at the primary school level. Please note that this is not an "easy" project, neither technically nor pedagogically. Good creative skills are essential.
The classical search for words via finite automata (or regular expressions) is unsuitable for imprecisely specified search terms such as they arise in Internet searches and Biology (genome databases). New algorithms for these tasks are being proposed all the time. A project could implement some of them, evaluate their effectiveness against certain benchmarks and suggest further improvements.
Project idea: To add an annotation facility to one of the commonly used text display programs, such as "xdvi" or "ghostview". This would allow researchers to truly use an electronic library of documents, rather than having to print out papers all the time and make annotations by pen or pencil. Requirements: Excellent programming skills are essential. Both "xdvi" and "ghostview" are public domain programs and you may have to look at their innards in order to add the new facility. Alternatively, it may be possible to wrap the programs' output by a Java window in which the annotations happen.
Project idea: To write a program which adds XML support to the text processing system "LaTeX" (which is widely used in the School). LaTeX produces beautifully layouts and is highly customizable. It is also extremely mature and stable. However, simple everyday tasks such as "mailmerge" are not supported. The task is to add such a feature via XML. Requirements: Excellent programming skills are essential. LaTeX can be learned within an afternoon from the application point of view. The underlying programming language TeX is harder to understand but it may not be the best vehicle for expressing the new feature anyway. If you do really well, then the package will make its way into the open-source software world (which is where LaTeX is maintained).
Project idea: To add double-buffering capabilities to the public-domain package "ghostview". This is used by many people as an alternative to "powerpoint" but presentations sometimes suffer from the time-delay between individual pages. Requirements: Excellent programming skills are essential. Ghostview is a public-domain program and you will have to get familiar with the source code. If you do really well, then the package will be available as an add-on for all users of the ghostview.
Some algorithms contain very clever ideas which are hard to explain on the basis of program code alone. In these cases a visualisation of how a data structure evolves over time can be helpful. Sometimes the core of the algorithm comes from a completely different area such as Geometry, Physics, or Combinatorics. With a visualisation we can then try to illustrate the connection between the program and the non-computing field.
If you are interested in this then I can easily come up with a concrete Project idea for you and you can also suggest your own. Requirements: Good programming skills are important but even more so a feeling for pedagogical concerns. Aesthetics is as important as technical correctness.
Generally, you should only attempt a project in these two areas if you are as enthusiastic as I am about teaching and education in general. (Perhaps it is worth pointing out that, from past experience, these projects are not "soft options".)
What I have in mind here are code generators, analysers, or optimisers. You should be a very able programmer if you think you can create a tool to support other programmers.
Project idea: To write a computer version of the board game "Pyramidis". The interest here stems from the fact that, although the rules are very simple, it is hard to think of a good strategy for this game. By producing a computer simulation it may be possible to understand the game better. On the other hand, writing a convincing simulation of the game is perhaps challenge enough because its 3D aspects are essential. Requirements: An understanding of AI techniques for dealing with strategy games is needed (but can be learned "on the job"). Depending on where the emphasis is placed, good knowledge of networking is required (Pyramidis is a four person game and the computer simulation could run over the Internet).
Project idea: To write a computer simulation of the mathematical two-person game "Chomp". From a programming point of view this is pretty easy but the challenge here is to find something out about winning strategies for this game. It is known that there is a winning strategy for the player who begins the game but nobody knows what it is. So in this sense this is an open-ended project into mathematical research. Requirements: Only basic programming skills are needed but this is compensated for by the requirement for excellent mathematical knowledge. The project is probably best suited for a Math/CS student.
I am happy to consider supervising virtually any project that you are enthusiastic about. The list of past projects below gives you an idea of the range of topics that I have supervised in the past. Regarding these, please note that in many cases I would be happy to supervise a project with a similar specification again, because often it was not possible to implement all aspects of the original idea in the time available.
One important note: I will supervise a non-programming project only if you demonstrate mastery of practical programming through your workshop performance in Years 1 and 2. A minimum mark of 60% in the relevant exams is required.If you are considering choosing me as your supervisor, then please download the following form (undergraduate, MSc students), fill in the questions, and bring it along to the meeting with me.
I should also warn you that I take my supervision duties very
seriously, and will require weekly (email) reports from all project
students. If you tend to leave things to the last minute then you will
probably not enjoy working with me.
Past projects