I'm a Lecturer in Programming Language Foundations at the University of Glasgow School of Computing Science.

Previously, I was a researcher 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.


Feel free to get in touch: you can reach me at simon.fowler -at- glasgow.ac.uk or simon -at- simonjf.com.

I am generally happy to act as an external reviewer for papers matching my research interests, provided that I can see other reviews and participate in the discussion after submitting my review.

Interested in doing a PhD?


In the Autumn term 2022, I am co-teaching Algorithmic Foundations 2 (with Gethin Norman), and Functional Programming (with Jeremy Singer).

I'm happy to meet to discuss course content and coursework; if my office door (510C in the Sir Alwyn Williams Building) is open, just knock. If you'd like to set up a meeting, please send me an e-mail.

Recent News

  • (19th May 2023): Special Delivery: Programming with Mailbox Types has been accepted at ICFP 2023!
  • (4th May 2023): We have open-sourced MBCheck, a tool for checking mailbox types in a core programming language. This accompanies our recent draft.
  • (21st March 2023): Delighted to be serving on the GPCE 2023 PC. Please consider submitting!
  • (3rd March 2023): We have submitted a new draft on how to integrate mailbox types in a programming language.


Research Interests

I am interested in the design and implementation of functional programming languages, and how they can help developers to implement safer and more robust concurrent and distributed code. I am particularly interested in behavioural types and multi-tier programming.

  • Behavioural types check behavioural properties of a program during the development process. 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. 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. I am a core contributor to the Links multi-tier programming language.

    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.