Perdita Stevens studied mathematics at King's College, Cambridge, and then at the University of Warwick, writing a PhD in algebra under Professor J. A. Green. She then switched to professional software engineering, working for three years at BT's Glasgow Software and Systems Engineering Centre. Here she became interested in modelling of object oriented design, and in the relationship between mathematics and software engineering. She returned to academia in 1994, taking a post as Research Fellow in the Laboratory for Foundations of Computer Science at Edinburgh. Her research interests have spanned model checking, legacy systems reengineering and games for software design; a common thread is that she likes identifying structure in systems and how it changes. From 2000-2006, she held an EPSRC Advanced Research Fellowship on Supporting Software Design.
Currently, she works on mathematical aspects of software modelling and model-driven development, including foundations of bidirectionality and its potential role in democratising decisions about the behaviour of software. She wrote the first textbook on UML, Using UML, which has been translated into seven languages, and her book How to Write Good Programs was published by CUP in 2020. She has sat on over 50 international programme committees and has over 50 publications. She is on the Editorial Boards of journals including Theoretical Computer Science and Software and Systems Modeling, and has chaired conferences including UML (now MODELS), TACAS, FMOODS and FASE, and the Educators' Symposium at MODELS. She has been instrumental in the development of the bidirectional transformations community, helping organise the first Bidirectional Transformations Dagstuhl and cochairing the Bx 2013 workshop at ETAPS; she was the founding chair of the Bx steering committee. Her 2007 paper Bidirectional model transformations in QVT: Semantic issues and open questions was given the 10-year Most Influential Paper Award at MODELS 2017.
In her teaching, she is particularly interested in helping students to be intrinsically motivated life-long learners.
She is married (to Julian Bradfield) with a teenage son and enjoys music, especially singing.
Functional programming languages have a reputation for being difficult, and functional programmers have - forgive me - a reputation for being fearsome. Why? Is there any truth in it? And how - if we wish to - could we change these reputations? My research and my teaching are both motivated by the desire to make it easier to develop good software, and my new book, "How to Write Good Programs: a guide for students" (CUP, 2020), with examples in Haskell, Java and Python, approaches the issue pragmatically. I will talk about barriers to success in functional programming, and how they might be torn down or gone round.