Software Performance and Correctness

Designing algorithms, developing graphics cards, static and dynamic analysis.


Software Performance

  • Low-energy computing
  • Compilers and parallelization for multicore
  • Algorithm design for parallelism & locality

Foundations of Computation

  • Programming abstractions for parallel computing
  • Proof techniques for software correctness
  • Verification & static analysis for critical systems

Sample Applications Areas

  • Smart embedded, mobile and space systems
  • Safety-critical medical systems

Faculty Members

Staff Name,

Research Group & Centres

Research Interests Publications
Barrett, Stephen Social Software Engineering, Computational Social Science.
Botterweck, Goetz Software Engineering, Model-driven Software Engineering, Software Product Lines
Butterfield, Andrew Formal Methods; Unifying Theories of Programming ; Concurrency Theory; Language Semantics; Theorem Provers/Logics; Kernel Verification; Probability & Priority
Donnelly, Alexis Process Calculus - applications to Distributed Systems and (more recently) Biological Systems; Web Accessibility; Universal Design
Dukes, Jonathan Wireless Sensor Networks, Low-Power Wireless Communication, Embedded Systems, High-Throughput Computing, Multimedia Streaming.
Gregg, David
Software performance optimization, embedded computing, low-energy computing, compilers, deep neural networks on embedded systems, multicore computing, processor microarchitecture, algorithms
Hughes, Arthur Mathematical foundations of programming languages, formal specification of software systems, rigorous software development, algorithmic problem solving, encryption, category theory.
Koutavas, Vasileios
Programming Languages, Concurrency, Formal Methods, Software Verification.
Strong, Glenn Functional Programming, Programming language design, type theory, formal methods, computational thinking, programming and computer science education
Waldron, John Computer Architecture; Learning Technology