Here are a few ideas for individual projects both for BSc and MSc students. You can also come to me with your own idea for a project in a topic related to these subject areas. In general, I suggest that you use Haskell as the programming language to develop your software, since these problems are more easily solved with a functional programming language. In some of the projects, you are also required to use a proof assistant like Coq or Agda. If you prefer to use other programming languages and tools, you have to make a good case of why you think they are more suitable for the task that you chose.
Implement a finite, complete-information, two-players game of the kind studied in Winning Ways for your Mathematical Plays by Berlekamp, Conway and Guy. Your implementation must allow two users to play against each other and also against the computer. If the game has a feasible winning strategy, implement it, otherwise use some AI technique. The interface can be a simple, ASCII-based representation or you may develop a nicer-looking graphical environment.
Use a dependently typed programming language / proof assistant (Coq or Agda) to implement some interesting algorithm on discrete data structures (for example some famous graph algorithm) and then use the logical system to prove the correctness of your implementation.
Lewis Carroll (author of Alice in Wonderland) invented a Game of Logic to represent and reason about simple propositions and universal and existential quantifiers.
Implement the game, with a graphical interface.
More advanced components (fourth year project): Extend the game to a richer logic, inventing new rules yourself to deal with modern predicate calculus; translate propositions written in natural language (English) to a form suitable for interpretation in the game.
This project is to be done by a team of fourth year students. It is a collaboration with the Department of Art History. You must develop software to help the analysis of art objects. For example, paintings with mythological or religious themes contain recurring standard elements: the god Mercury has wings at his feet and holds as staff with intertwining snakes, St Jerome is represented praying in the desert in the company of a lion.
Your software should identify these elements, using techniques from computer vision, and aid art historians to analyze and catalogue the objects.
The project requires the work of three or four students. You can organize yourselves and find teammates or just express an interest to me and I will form the team.
Please don't hesitate to ask me any question you may have about the projects. You can contact me by e-mail: put Student Project in the subject line, so I know immediately that it is about this module.