What this programme is about
Software Engineering doctoral research is about understanding or improving how software is designed, built, tested, maintained and evolved at scale.
A project may focus on program analysis, testing, developer productivity, architecture, requirements, reliability, AI-assisted development or empirical software engineering.
The evidence can come from code repositories, experiments, industrial systems, developer studies or new tools you build yourself.
One challenge is that software practice changes quickly, while good research needs findings that are more durable than one fashionable framework.
That is why strong projects focus on underlying problems. A useful contribution should explain or improve something about software development beyond one temporary toolchain.
Look for research groups with access to appropriate datasets, industry partners or experimental infrastructure. You can also compare the published MSc Software Engineering profile.
Inside the curriculum
Skills you'll build
Where this can take you
What studying this programme is like
Program-analysis research can develop methods for finding defects, understanding code or verifying behaviour.
Testing research may investigate automation, test generation, coverage, reliability or debugging.
Empirical software engineering studies real development practices using repositories, experiments, surveys or interviews.
Architecture and maintenance research can examine how large systems evolve and accumulate technical debt.
AI-assisted software-engineering projects may study code models, developer tools and how automated systems affect quality or productivity.
The dissertation must deliver an original contribution supported by rigorous technical or empirical evaluation.
Is this likely to suit you?
Good fit if you...
- You have advanced software-engineering foundations.
- You enjoy investigating how software is built and maintained.
- You are comfortable programming and analysing evidence.
- You want an R&D or academic career.
- You can work on open-ended technical problems.
Think twice if you...
- You mainly want to learn a new programming framework.
- You dislike research or empirical evaluation.
- You want a short industry credential.
- You are not interested in producing original software-engineering knowledge.