Dr Simon Fowler
- Lecturer in Programming Language Foundations (School of Computing Science)
email:
Simon.Fowler@glasgow.ac.uk
pronouns:
He/him/his
Office 510c, Sir Alwyn Williams Building, Glasgow, G12 8RZ
Biography
I'm a Lecturer in Programming Language Foundations at the University of Glasgow 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.
Research interests
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
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
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.
Supervision
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.
If you are interested in doing a PhD, please consult my website.
I am currently first supervisor for Olivia Hartley Weston (working on co-contextual approaches to behavioural typing) and I am currently second PhD supervisor for Matthew Alan Le Brun (working on multiparty session types for distributed algorithms; co-supervised with Ornela Dardha).
- Weston, Olivia
Co-contextual typing for behavioural type systems
- Rudi Horn (PhD): Language-Integrated Relational Lenses (second supervisor; co-supervised with James Cheney).
- Many prior BSc and MSc projects on PL-related topics
Teaching
In 2023/24, I am teaching Algorithmic Foundations 2 (with Gethin Norman) and Functional Programming (with Jeremy Singer).