Recent (summer 2012) opinionated talks on Computing at School,
Raspberry Pi and Computational Thinking are based on
the more measured slides here.

At the Computer Laboratory he is part of the
Cambridge Programming Research Group which is now incorporated
into the
Programming, Logic and Semantics Group.
His research interests span an arc from semantic
models of programming languages to actually building optimising
compilers.
A core interest is that of static analysis of programs to
extract properties of their run-time behaviour. Such properties can be
used to enable optimisations or to facilitate ``compile-time
debugging''. His PhD created the subject of ``strictness analysis''
when he argued that apparent run-time inefficiencies in modern
high-level languages can often be removed by program analysis and
optimisation phases. Other work has encompassed type-based
decompilation and also language and compilation issues for ``Silicon
Compilers'', i.e.\ compiling specifications directly to hardware.
In 2005/06 he held a ``Visiting Faculty'' position with
Intel Research Cambridge
involving developing languages
and techniques for compiling to `multi-core' processors; this
research illuminates the benefits of type-like systems of program
analysis at enabling programmers to express and manage their implicit
treaty with a compiler
(``optimise as much as you can, but don't step over the line'').

He welcomes applications from potential PhD students in the above (or
cognate) areas -- potential PhD applicants are encouraged to
send a draft research proposal of their interests.