Student project suggestions

If you are interested in any of these projects please contact me. (In general, I'm happy to supervise projects which combine programming with mathematics, or which are based on pure mathematical theory. If you have an idea for such a project which is not on this list, you should contact me and we can discuss it.)
  1. Diagrammatic tools for reasoning in lambda calculus.
    It turns out that lambda calculus has some surprising connections to graph theory and the study of so-called "planar maps". (To get a quick introduction to maps and their connections to lambda calculus, you can have a look at my slides on Lambda Calculus and the Four Colour Theorem.) For example, the diagram above is a planar map, but also represents a perfectly legitimate lambda term! The aim of this project would be to develop tools for the visualization and graphical manipulation of such lambda terms, while ideally also making it convenient to reason about things like reduction and typing. (For example, the gray oval sitting inside of the "kite" actually highlights a beta-redex.)

  2. Visualization of mathematical structures.
    Finding good ways of visualizing mathematical objects is an art, and often produces beautiful pictures in addition to new mathematics. The above is a visualization of the Tamari lattice (set of binary trees of a given size ordered under right rotation) due to Donald Knuth, which makes clear that it has the structure of a lattice. The diagram itself was produced with the help of Brent Yorgey's diagrams library for Haskell, which has been used to make all sorts of beautiful visualizations. The aim of this project would be to explore different ways of representing mathematical structures by diagrams, both from an abstract perspective and with concrete code to produce galleries of objects. The choice of which objects to visualize would be up to the student. (For example it could be trees, or graphs, or knots...or really any interesting object that can be visualized in a variety of ways.)