The Programming Languages and Systems research group aims to advance programming languages, methods and tools with particular interest in alternatives to main-stream programming systems. Using theoretical and applied research the group investigate the principles underlying new kinds of programming language as well as the practical challenges of implementing and using them effectively. Main areas of expertise include Coordination and Concurrency, Functional Programming, Graph Transformation, Model Checking, Parallel Computation, Specifying and Reasoning about Algorithms.
Our overall goal is to advance programming languages, methods and tools, with a special interest in radical alternatives; we address both the principles underlying new kinds of programming languages and technologies, and the practice of implementing and using them effectively.
Senior Member: Colin Runciman
Contact Person: Colin Runciman
Concurrent Programming research concentrates on novel techniques for the design and verification of protocols and reactive Systems; our work in this area ranges from from mathematical foundations, to prototypical tool-building and transferring this technology to engineering practice.
Functional Programming work addresses a wide range of topics from formal reasoning about programs, through experiments with novel programming or implementation methods, tools for profiling, tracing, analysing and testing programs, and application-driven research.
Graph Transformation combines the strength of graphs in visualisation with a rule-based way of computing; we are working on the design and implementation of a graph programming language and the use of graph transformation for static checking of pointer programs.
Parallel Computing work focuses on the use of distributed tuple spaces and the coordination model of concurrency, based on a small set of simple primitive operations acting on an architecturally independent, concurrently accessible memory.
Reasoning about Algorithms such as cryptographic protocols is necessary to guarantee confidential and authenticated communication over a public network. We focus on the question of how to make formal proofs easier to conduct, by enhancing tool support and devising novel proof tactics.