Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 Graham Hutton
Reasoning about programs. If one views programs as mathematical
objects, it is natural to consider applying mathematical techniques
to reason about programs in a formal manner. I'm particularly
interested in formal reasoning about program correctness and
efficiency, together with languages and techniques that
simplify the process of such reasoning.
Functional programming. Broadly speaking, functional programming
is a style of programming in which the basic method of computation
is the application of functions to arguments. I'm particularly
interested in reasoning about functional programs. I've recently
published a book on
Programming in Haskell,
and co-organise the
Fun in the Afternoon
seminar series in the UK, and the weekly
FP lunch
in Nottingham.
Calculational methods. One way to obtain a correct program is to
first write the program, and then establish its correctness in
some way. A better approach is to use the desire for
correctness as the driving force for the development of the
program itself. I'm particularly interested in the calculational
approach to correct programming, in which one aims to calculate
programs directly from a statement of their correctness.
Coalgebraic methods. The use of algebra has a long history in
computing, and is closely linked with the denotational approach
to semantics. In recent years, it has become increasingly clear
that the dual notion of coalgebra is just as central in computing,
motivated by the fact that the operational approach to semantics has
a natural coalgebraic foundation. I'm particularly interested in
the application of coalgebra in functional programming.
Recursion operators. Many recursive programs use a common pattern of
recursion. Abstracting these patterns into general schemes leads to
a more structured approach to writing and reasoning about recursive
programs. I'm particularly interested in the recursion operators
called fold and unfold, which capture commonly used patterns for
consuming and producing structured data.
I also maintain an interest in generic programming and categorical
methods. In the past I have also worked on functional parsing and
relational programming.
I'm always keen to hear from excellent students, with some experience
in functional programming, who would like to study for a PhD in any
of my research areas.
My slides for these courses are suitable for use by
other lecturers, and for self-study. I can supply copies of the
slides for any of these courses on request.
I'm originally from Glasgow in Scotland, where I studied for a BSc (Hons)
and PhD in Computing Science.
I then spent a few years in research positions in
Gothenburg and
Utrecht,
before moving to Nottingham,
where I am currently a Reader in Computer Science.
I'm married to Annette, and we have
two lovely boys. Here's a recent
family photo from a great trip to Iceland.