Lucas DixonTeaching → MSc Project: Graphical rewriting for symmetric monoidal categories
MSc Project Proposal:

Graphical rewriting for symmetric monoidal categories

Possible supervisors: Lucas Dixon,

Subject Areas:

Formal methods: Specification Verification and Testing
Programming Languages and Functional Programming
Software Engineering
WWW Tools and Programming
Parallel Programming.

Principal goal of the project:

The develop a plugin for Firefox that provides Standard ML as an alternative to JavaScript for web-based client-side scripting.

Description of the project:

Standard ML is an influential functional programming language, designed by the research community, and specified by a formal definition. It has a formally specified behaviour which makes it especially beneficial for the development of dependable software, such as theorem proving tools. Developed in Edinburgh, PolyML is a widely used open-source framework for software development in Standard ML [2]. It has recently been used for research into quantum information, based on the Quantomatic system, and has a long history of use in computer science and safety-critical software (over 5 million pounds of research has been based on it, in the UK alone, over the last few years).

Over the last 10 years there has been an explosive increase in the use of JavaScript, the main programming language used within web-browsers. Google has adopted it for a wide variety of web-based tools, from gmail to google-maps.

However, in many ways, the features of Standard-ML make make it seem like a much more exciting and practical language than JavaScript for embedding within a web-browser:

PolyML's support for concurrency, efficient compilation, saved sate, and a dynamic environment, seem to make it perfect for an in-browser scripting language.

The aim of this project is to implement and evaluate a PolyML plugin for firefox that lets ML programs be run within the browser. Existing plugins for other languages, such a python, already exist and will help guide the project [3]. The project can be taken in a number of directions, depending on the student's interests:

Resources required:

Nothing special; access to a DICE machine.

Degree of Difficulty:

In its entirity, this is a demanding project that will require the student to delve into the difficult task of writing Firefox plugins, understand a variety of languages and large software toolkits, as well as implement concurrent programs in Standard-ML. However a basic version of this project is also possible by focusing on just the software engineering aspects.

Background needed:

Some experience of functional programming and JavaScript is essential.