Over the years I have been involved in a number of software projects. I split these into two broad segments, ones where I wrote a substansal amount of the code (more than a third), and those where I think they are cool, but I am a smaller contributor.

AI solvers

  • Minion is a constraint solver written in C++. I’ve been working on Minion, on and off, for over 20 years now. Minion has not kept up with all of the latest research ideas – in particular, the solver does not support “learning” during search. However, for many problems Minion is still very competitive. Minion is also extremely well tested – using both custom tests and a general “fuzzer” which generates random inputs.

  • demystify is a Python solver designed for explaining puzzle games. Unlike Minion, it is not designed to solve problems quickly – it’s often very, very slow! But it produces (hopefully) useful explanations as to how to solve the puzzle.

Other Software

  • stacscheck, also known as the St Andrews Computer Science CHECKer, is a tool designed to make it easy to set, and automatically mark, coursework. It is designed for programs which accept, and output, text, but other than that has very few restrictions. It came out of a tool I designed for a course on C.