PhD topics in Programming Languages

Some PhD research areas I am interested in

Generally, I am interested in supervising PhD research in all aspects of programming languages. More specifically, the interaction of programming languages and computer security is an exciting new research area. We have strength here in both programming language and computer security research.

While the list is not meant to be exhaustive, here are some possible subjects for PhD research that I would be happy to supervise, so that you could use them as a starting point for writing your PhD research proposal when applying for a PhD with me.

If you are interested in one of these topics, please see the page on applying for a PhD with me.

C++ templates and design

Traditional object-oriented design patterns emphasize inheritance. However, in modern C++ the importance of parametrization using templates has increased; see for example the Standard Template Library. This topic will investigate high-level program design using C++11 templates, with emphasis on type safety and correctness.
See also my current teaching on C/C++.

Regular expression matching, parsing and abstract machines

Recently I have become interested in applying concepts and techniques that come originally from programming language semantics rather than syntax to parsing and regular expressions. In particular, parsers and regular expression matchers can be seen as abstract machines.
See also: static analysis for regular expression denial of service attacks.

Multicore, many-core and GPGPU programming via abstract machines

CPUs now have increasingly many cores. Modern Graphics Processors (GPUs) have hundreds of cores and more. In principle they can be used for general purpose computation (GPGPU). While such architectures are potentially powerful, programming them is much harder than for sequential ones. This project develops abstract machines as a programming model for such architectures.

Safe systems-level programming

C is still the language of choice for programming operating systems and other code that needs to be efficient and manage system resources. However, C code is often afflicted with buffer overflows and other memory corruption vulnerabilities. Some experimental programming languages (such as Vault and Cyclone) aim to give the same power as C while being much safer (eliminating buffer overflows, for instance). A PhD thesis could build on the lessons learnt from those languages to defend against more classes of attacks.

Concurrent programming and security

Some of the most subtle security flaws arise due to race conditions in concurrent access to some critical resoure. The time-of-check-time-of-use (TOCTOU for short) vulnerability class is a classic example. Race conditions and other concurrency problems are likely to become more prevalent in distributed computing and the spread of multi-core processors. A PhD could use types and logics for concurrency to address these problems.

Abstract machines

Abstract machines give a concise desription of many programming language features. They can be used to prove the correctness of more high-level formalisms, such as showing soundess of Hoare logics. Some of the basics of abstract machines are covered in the Principles of Programming module I have taught in Semester 2, 2011.

Type and effect systems

I have done some work on type and effect systems for control (continuations); it would be interesting to see whether these results fit into a broader picture of computational effects in general, using mathematical tools like modal and classical logics.