*Last updated on 2nd February 2017*

Activities; Publications; Teaching; Videos; People; Projects; Personal; Contact; Google Scholar Maps; Weather.

I'm Professor of Computer Science at the University of Nottingham, where I co-lead the Functional Programming Lab.

My research interests are in developing simple but powerful techniques for writing and reasoning about programs, by recognising and exploiting their underlying mathematical structure. I'm an editor of the Journal of Functional Programming, member of IFIP working group 2.1 on Algorithmic Languages and Calculi, and an ACM Distinguished Scientist. I've also served as vice-chair of the ACM Special Interest Group on Programming Languages, and steering committee chair of the International Conference on Functional Programming.

Current and recent work:

- Parametric polymorphism and operational improvement (2017);
- Compiling a fifty year journey (2017);
- Lambda calculus (Computerphile 2017);
- Failing faster: overlapping patterns for property-based testing (PADL 2017);
- Programming in Haskell (CUP 2016);
- Contractive functions on infinite data structures (IFL 2016);
- Cutting out continuations (WF 2016);
- Calculating correct compilers (JFP 2015);
- Programs for cheap! (LICS 2015);

Current activities:

- Editor, Journal of Functional Programming, 2014-date;
- Editorial board member, ACM International Conference Proceedings Series, 2011-date;
- Program committee member, International Conference on Functional Programming, Oxford, 2017;
- External examiner, University of Sheffield, 2015-date;
- External examiner, University of Glasgow, 2013-date;
- Member, EPSRC Peer Review College, 2006-date;
- Member, IFIP Working Group 2.1 on Algorithmic Languages and Calculi, 2004-date.

- Keynote speaker, Haskell eXchange, London, 2016;
- Program committee member, Mathematics of Program Construction, Germany, 2015;
- Steering committee member, Principles of Programming Languages, 2009-2015;
- Steering committee member, Programming Language Design and Implementation, 2009-2015;
- Program committee member, Implementation and Application of Functional Languages, Boston, 2014;
- Editorial board member, Journal of Functional Programming, 2010-2013;
- External examiner, University of Birmingham, 2010-2013;
- Steering committee chair, International Conference on Functional Programming, 2010-2012;
- Program committee member, Mathematics of Program Construction, Madrid, 2012;
- Program committee member, Trends in Functional Programming, St Andrews, 2012;
- Vice-chair, ACM Special Interest Group on Programming Languages, 2009-2012;
- External examiner, University of York, 2008-2012.

A list of publications, bibtex entries, and citations, is available, or you can jump directly to a particular item:

- Parametric polymorphism and operational improvement (2017);
- Compiling a fifty year journey (2017);
- Failing faster: overlapping patterns for property-based testing (PADL 2017);
- Programming in Haskell (CUP 2016);
- Contractive functions on infinite data structures (IFL 2016);
- Cutting out continuations (WF 2016);
- Calculating correct compilers (JFP 2015);
- Programs for cheap! (LICS 2015);
- Towards a theory of reach (TFP 2015);
- Worker/wrapper/makes it/faster (ICFP 2014);
- Work it, wrap it, fix it, fold it (JFP 2014);
- The under-performing unfold (IFL 2013);
- Compilation à la carte (IFL 2013);
- Representing contractive functions on streams (2011);
- Towards modular compilers for effects (TFP 2011);
- Factorising folds for faster functions (JFP 2010);
- Compiling concurrency correctly: cutting out the middle man (TFP 2009);
- The worker/wrapper transformation (JFP 2009);
- Modularity and implementation of mathematical operational semantics (MSFP 2008);
- Towards a verified implementation of software transactional memory (TFP 2008);
- Reasoning about effects: seeing the wood through the trees (TFP 2008);
- What is the meaning of these constant interruptions? (JFP 2007);
- Programming in Haskell (CUP 2007);
- Compact fusion (MSFP 2006);
- Accurate step counting (IFL 2005);
- Report on BCTCS 2005 (EATCS 2005);
- Proof methods for corecursive programs (FI 2005);
- Calculating an exceptional machine (TFP 2004);
- Compiling exceptions correctly (MPC 2004);
- Introduction to functional programming (MGS-APPSEM 2004);
- Proceedings of the First APPSEM-II Workshop (2003);
- The countdown problem (JFP 2002);
- Special double issue on Haskell (JFP 2002);
- Proceedings of the Haskell Workshop 2000 (ENTCS 2001);
- The generic approximation lemma (IPL 2001);
- When is a function a fold or an unfold? (CMCS 2001);
- Proof methods for structured corecursive programs (SFPW 1999);
- A tutorial on the universality and expressiveness of fold (JFP 1999);
- Fold and unfold for program semantics (ICFP 1998);
- Monadic parsing in Haskell (JFP 1998);
- Monadic parser combinators (1996);
- Back to basics: deriving representation changers functionally (JFP 1996);
- Bananas in space: extending fold and unfold to exponential types (FPCA 1995);
- Review of "An introduction to HOL" (JFP 1994);
- Categories, allegories, and circuit design (LICS 1994);
- A tool for relational programmers (1994);
- The Ruby interpreter (1993);
- A relational derivation of a functional program (STOP 1992);
- Between functions and relations in calculating programs (1992);
- Higher-order functions for parsing (JFP 1992);
- A calculational theory of pers as types (1992);
- Making functionality more general (GWFP 1992);
- Functional programming with relations (GWFP 1991);
- Parsing using combinators (GWFP 1990).

Current teaching:

- Functional programming (1st year course);

- Advanced functional
programming (2nd year course).

Previous teaching:

- Introduction
to category theory (postgraduate course);

- Introduction to domain theory (postgraduate course);
- Principles of
programming languages (3rd year course);

- Concepts of
concurrency (2nd year course).

- Lambda calculus (for Computerphile);
- A secret of sorting (for Computerphile);
- Calculating correct compilers (for Haskell eXchange, based on this article);
- Programming in Haskell (for FutureLearn, based on this book);
- How to be more productive (for Channel 9, based on this article);
- Calculating an exceptional machine (based on this article);
- The countdown problem (for Channel 9, based on this article).

Research fellows:

- Jennifer Hackett, Mind the Gap: Unified Reasoning About Program Correctness and Effficiency, 2016-2020;
- Nils Anders Danielsson, Reasoning About Exceptions and Interrupts, 2007-2010;
- Joel Wright, Compiler Correctness, 2005.

Current PhD students:

- Martin Handley, Improvement Theory, from October 2016;
- Jonathan Fowler, Property-Based Testing, from October 2014.

Former PhD students:

- Ambrus Kaposi, Type Theory in a Type Theory with Quotient Inductive Types, November 2016;
- Jennifer Hackett, The Worker/Wrapper Transformation: Getting it Right and Making it Better, October 2016;
- Laurence Day, The Modular Compilation of Effects, October 2015;
- Liyang Hu, Compiling Concurrency Correctly: Verifying Software Transactional Memory, June 2012;
- Mauro Jaskelioff, Lifting of Operations in Modular Monadic Semantics, September 2009;
- Catherine Hope, A Functional Semantics for Space and Time, August 2008;
- Joel Wright, Compiling and Reasoning about Exceptions and Interrupts, November 2005;
- Paul Blampied, Structured Recursion for Non-Uniform Data-Types, March 2000;
- Anthony Daniels, A Semantics of Functions and Behaviours, December 1999;
- Colin Taylor, Formalising and Reasoning about Fudgets, December 1998.

- Principal investigator, EPSRC grant on Mind the Gap: Unified Reasoning About Program Correctness and Efficiency, £411,000, 2016-2020;
- Principal investigator, EPSRC grant on Reasoning About Exceptions and Interrupts, £306,000, 2007-2010;
- Lead investigator, EPSRC grants on the Midlands Graduate School in the Foundations of Computing Science (2,3), £39,000, 2007-2009;
- Co-investigator, EPSRC grant on the British Colloquium for Theoretical Computer Science, £65,000, 2008-2010;
- Co-investigator, EPSRC grant on the British Colloquium for Theoretical Computer Science, £24,000, 2005-2007;
- Site leader, IST Working Group on Applied Semantics II, £250,000, 2003-2006;
- Principal investigator, Microsoft Research Ltd grant on Concurrent Haskell, £25,000, 2001-2004;
- Site leader, ESPRIT Working Group on Applied Semantics, £190,000, 1998-2002;
- Principal investigator, EPSRC grant on Structured Recursive Programming, £11,000, 1997-2000.

I'm from Glasgow in Scotland, and received a PhD in Computing Science from the University of Glasgow. I then spent a few years in research positions in Gothenburg and Utrecht, before moving to Nottingham where I am now Professor of Computer Science. I'm married to the lovely Annette, and we have two boys. In my spare time I enjoy cars, cooking and football. Both of our boys play in football teams, and we are season ticket holders for Nottingham Forest.

Email: | graham.hutton@nottingham.ac.uk (if you are a student, please read this before emailing me) |

Web: | www.cs.nott.ac.uk/~pszgmh |

Phone: | +44 (0)115 951 4220 |

Address: | Professor Graham Hutton School of Computer Science University of Nottingham Jubilee Campus, Wollaton Road Nottingham NG8 1BB United Kingdom |

Office: | A09 |