Advanced strongly typed languages like Haskell and emerging type systems like refinement types (as implemented in Liquid Haskell) offer strong guarantees about the correctness of programs. However, when type errors occur it can be difficult for programmers to understand their cause. Such errors are particularly confusing for people learning the language. The situation is not helped by the cryptic error messages often produced by compilers.
However, tools exist (such as those that take advantage of constraint solvers to resolve types) that can offer a much finer grained level of feedback about the source of type errors. This project will explore interactive visual tools (e.g. plugins for modern editors and integrated development environments) which clearly communicate this information to the programmer to quickly resolve type errors and support there understanding and propagation of types throughout their program.
User interface development and some flair for design
Knowledge of visualisation