Professor David Duke

Responsibilities

  • Head of School
  • Programme Manager, High Performance Graphics and Games Engineering

Research interests

The "sequential" computer is history; the challenge today is how to build applications, from high performance games to tools for computational science, that effectively exploit parallel hardware. My work and research interests lie in two areas, (i) high performance graphics and visualization, and (ii) parallel programming technologies including the pure functional language Haskell.

In graphics, my work includes tools for topological analysis of multifield data (the "Joint Contour Net") and its implementation in both the widely used VTK platform, and on parallel hardware via Haskell.  It also includes work at the interface of graphics and perception, on how rendering can interact with affect (emotion).

In functional programming, my work includes novel approaches to re-constructing visualization techniques in a functional setting that have approached (and sometimes exceeded) the performance of imperative libraries, and work on performance analysis of Haskell programs through extensions to the toolchain (GHC and ThreadScope).

Professional memberships

  • ACM
  • IEEE and IEEE Computer Society
  • Fellow of the European Association for Computer Graphics

Student education

In 2016/17 I will be delivering Parallel and Concurrent Programming, a new MEng/MSc module that will also become part of the High Performance Graphics and Games Engineering programme.  We will be looking at concurrent programming C++ using threads and other language/library support, and GPU programming using CUDA.  I will also be teaching the L3/L5 Functional Programming module, which uses Haskell.  This will cover basic topics (programming with functions, data types, etc), and touch on more advanced topics: type inference, higher-order types, monads, and parallelism. 

My teaching expertise is extremely broad, I have previously taught: software engineering, introductory programming, systems programming, algorithms and data structures, discrete models, computer graphics, networks,  operating systems, and scientific visualization.

Research groups and institutes

  • Computational Science and Engineering

Publications:

Loading...