Below is a list of topics for which I am currently looking for PhD students. Some of these topics are quite specific, while others are more open-ended and open to refinement into a specific topic. These should give you an idea of what I am interested in as a basis for further discussion. See also my notes on PhD study for more information.
Modularity in domain-specific languages
In prior work with Francisco Duran from the University of Malaga we have developed methods for soundly composing DSLs whose semantics are provided operationally using graph-rewriting rules. While the underlying formal machinery has been worked out quite well, substantial research and development is still required to realise tool support that can make this formal approach applicable in practical settings. This would make for an ideal PhD topic combining hands-on tool development with a sound formal underpinning.
Sound reuse of model transformations
In joint work with Rick Salay and Marsha Chechik from the University of Toronto, we have identified fundamental problems in the reuse of model transformations. In particular, we have identified the lack of semantic information as a major barrier to sound reuse of model transformations. This PhD project aims to develop a reuse mechanism that takes model and transformation semantics into account for transformation reuse.
Optimisation in model-driven engineering
Optimisation is an important technique in a wide range of domains, yet it is still woefully undersupported in MDE. We are currently developing a tool for integrating MDE and optimisation techniques and I am looking for more PhD students to help develop this tool in a number of directions.
I am interested in the application of MDE principles to, and in particular the development of domain-specific languages for, a diverse range of different and complex domains. Below are some examples, but other application areas are also of interest.
Application of model-driven engineering to robotics
Robotics is one such domain with particular challenges in expressing the complex physical structure and control requirements of robots as well as their adaptations at a high level while maintaining the ability to translate this into low-level constructions that can be used successfully to control and manage a robot. I am particularly interested in how this might lead to self-aware and adaptive robot control in the face of changes in the environment or the robot's structure (e.g., through mechanical faults).
Application of model-driven engineering to AI planning
AI planning is a very powerful tool for enabling computers to make decisions about the steps to take to achieve a particular goal. Unfortunately, it currently requires all models of environments, problems, and possible solution tactics to be expressed in a very low-level language that is very difficult to use for domain experts with limited technical knowledge. Building a stack of DSLs on top of this low-level language will enable more wide-spread use of AI planning as well as providing opportunities for integrating additional services and external knowledgebases into the planning process.
Application of model-driven engineering to agent-based modelling
Agent-based modelling (ABM) is an interesting domain because it has a large amount of technical complexity, but is often used by domain experts (for example for geo-political or economic applications) who want to develop a dedicated model and simulation, without deep technical knowledge. Developing a stack of new DSLs for use in different applications and domains is, therefore, of immediate benefit to the wider research and development community in a large range of domains.
I'm interested in qualitative software engineering research, in particular in understanding the structure of, and success factors involved in, software-design dialogues between software developers.
I'm looking for PhD students to support my research in computer-science education.
Automated assessment of programming tasks
We are developing Nexus, an on-line platform for the automated assessment of programming (and potentially other) assignments. I look for PhD students who want to help develop the platform and assessment / feedback technology and want to help develop empirical evaluations of the platform and approach. I am also interested in topics in the wider area, such as efficient and effective creation of new assignments (including testing and quality assurance), prevention of plagiarism, etc.
Understanding how students learn to program
We have been doing some initial work using qualitative studies to improve our understanding of how students learn programming. More work is needed in this area and I am looking for PhD students to help with this work.