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.
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.
- (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.
- Session Types for Reliable Distributed Systems (STARDUST). Co-investigator.
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.
- GPCE 2023 (Programme Committee)
- ICE 2023 (Co-chair / "ICEcreamer")
- LIVE 2022 (Programme Committee)
- Scottish Programming Languages Seminar (SPLS), 1st July 2022 (co-organised with Matthew Alan Le Brun and Jeremy Singer)
- VORTEX 2022 (Programme Committee)
- ICE 2022 (Programme Committee)
- ECOOP 2022 (Programme Committee) (Distinguished reviewer award)
- Dagstuhl Seminar 21372, Behavioural Types: Bridging Theory and Practice (Invited participant)
- ECOOP 2021 (Invited Expert: PL/SE for Concurrent / Distributed Systems)
- LIVE 2021 (Programme Committee)
- AGERE 2021 (Co-chair)
- ICE 2021 (Programme Committee)
- ProWeb 2021 (Co-chair)
- LIVE 2020 (Programme Committee)
- ICE 2020 (Programme Committee) (Distinguished PC member award)
- ProWeb 2020 (Co-chair)
- Shonan Seminar 149, Programming Languages for Distributed Systems (Invited participant)
- ICE 2019 (Programme Committee)
- OOPSLA 2019 (Artifact Evaluation Committee) (Distinguished reviewer award)
- PLACES 2019 (Programme Committee)
- Scottish Programming Languages Seminar (SPLS), 11th October 2017 (co-organised with Craig McLaughlin)
- Scottish Programming Languages Seminar (SPLS), 21st October 2015 (co-organised with Sam Lindley and James McKinna)