Below I describe some general areas as well as some concrete project ideas:
There are many ways in which computers can complement and support the creation of musical pieces, as well as provide features during playback. The challenge is to define a project that is not already covered by a commercial system.
Requirements: You must like music.
The idea is to implement the (differential) equations that underlie physical laws as an interactive app that can run on a smart phone or a tablet. These apps can then be used in teaching to illustrate to students of physical science.
Requirements: These projects are only suitable for students with a strong background in Mathematics or Physics.
The teaching of computing in schools has changed and ICT has been replaced by Computer Science. However, there is not a lot of experience in how to teach the subject in a creative way. Projects in this area are about working out one particular topic of Computer Science at a level appropriate for school children. This can be geared towards small children or towards A-level students. Ideally, the project is combined with enrolment in the final year module "Teaching Computer Science in Schools" which will allow you to try out your project ideas in a real school. Note that most of the curriculum development will have to be done in the Autumn Semester as there is not enough time in the Spring to develop, implement and evaluate a course.
Requirements: You need to be enthusiastic about teaching young people.
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.
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.