Dr Simon Fowler
- Lecturer in Programming Language Foundations (School of Computing Science)
My research interests centre around typed functional programming languages, specifically in functional approaches to concurrency, web programming, and data management.
Previously, I worked on the STARDUST project, investigating behavioural types for actor systems, working with Simon Gay and Phil Trinder. Before that, I spent 6 years at the University of Edinburgh School of Informatics, first as a PhD student in the Centre for Doctoral Training in Pervasive Parallelism working with Sam Lindley and Philip Wadler, and second as a Research Software Engineer working with James Cheney. I've also worked at OCaml Labs and IntelliFactory.
Broadly speaking, my research interests are in the design and implementation of programming languages. I am particularly interested in functional programming languages, and their applications to concurrency, web applications, and data management.
Behavioural types check behavioural properties of a program during the development process, for example rejecting programs which neglect to close a file handle. Session types are a class of behavioural type system which detect communication protocol violations: if a session-typed program successfully compiles, then it respects its specified communication protocols.
My ultimate research goal is for behavioural types to become part of every programmer's toolkit, allowing developers to write concurrent and distributed applications with confidence. In support of this goal, I have worked on allowing session types to co-exist with exceptions, and integrating linear type systems with GUI programming.
I am currently interested in pushing behavioural types towards the mainstream, which requires thinking about classes of behavioural types which are amenable to distribution; the session typing interoperability problem; and how we can make behavioural typing much more lightweight.
Multi-tier programming allows developers to write distributed applications in a single, uniform language. This has the advantages of type-safety when communicating between different components, and avoiding the impedance mismatch problem when needing to develop in multiple languages.
Multi-tier programming is particularly suited to web and database applications. I am a core contributor to the Links programming language, and have implemented its support for distributed session typing and temporal databases.
My current interests in this space centre around language-integrated query technologies for temporal databases, which will allow access to time-varying databases without needing to write error-prone code, or rely on expensive proprietary solutions.
I am interested in supervising PhD, UG4, and MSc projects matching my research interests; please feel free to get in touch and we can work out an exact topic.
I am currently second PhD supervisor for:
- Matthew Alan Le Brun (working on multiparty session types for distributed algorithms; co-supervised with Ornela Dardha)
- Magdalena Latifa (working on session-typed programming languages; co-supervised with Ornela Dardha)
- Latifa, Magdalena
Mix and match - a modular approach to session-typed functional programming
Previously, I have supervised:
- Rudi Horn (PhD): Language-Integrated Relational Lenses (second supervisor; co-supervised with James Cheney).
- Himanshu Chopra (MSc): Mini-EnsembleS: Typechecking a Core Session-Typed Actor Language
- Xianyu Meng (MSc): NLP-Based Program Synthesis using Structured Code Representations
- Kevin Chen (MSc): A Room Booking System in the Links Multi-Tier Programming Language
- Swetank Poddar (UG4): A Tool for Designing and Querying Temporal Databases
In 2021/22, I am teaching Algorithmic Foundations 2 (with Gethin Norman) and Functional Programming (with Jeremy Singer).