Mathematical Software

The project aims to develop sophisticated integrated software systems which would allow mathematicians to combine the latest algorithms to solve their problems without needing to understand the details of their implementation.  

The project will include the following pieces of work: 

  • graphs and digraphs (for example, is a graph planar, connected, biconnected, what is its chromatic polynomial) 
  • groups and semigroups (for instance, what is the size of a semigroup or group generated by a set of elements, how to compute a presentation of one of these objects) 
  • other mathematical algorithms relating to other modules undertaken as St Andrews 
  • how to represent problems to a computer so they are easy to use and the implementations are as efficient as possible.

Examples of projects this group is currently working on: 

During the first semester of the project, students will learn software development best practices (for example, version control systems and continuous integration) through Software Carpentry workshops and by interacting with other participants.  

Students will then apply what they’ve learned to develop high-level features for one of the systems the group is developing (such as the Semigroups and Digraphs packages for GAP). Participants will be introduced to the notion of computational complexity as applied to real world software, algorithm design, unit testing, and the development of documentation and further teaching materials. 

Project Supervisor
Prof James Mitchell
Email: [email protected]