Are you interested in working in programming languages or automated program verification with the support of competent and friendly colleagues in an international environment? Are you looking for an employer that invests in sustainable employeeship and offers safe, favorable working conditions? We welcome you to apply for a PhD position at the Department of Information Technology, Uppsala University.
The Department of Information Technology holds a leading position in both research and education at all levels. We are currently Uppsala University's third largest department, and have around 350 employees, including 120 teachers and 120 PhD students. Approximately 5,000 undergraduate students take one or more courses at the department each year. You can find more information about us on the Department of Information Technology website.
The PhD position is hosted by the Division of Computing Science and specifically within the Programming Languages group that currently consists of 11 senior researchers and 9 PhD students that are working on different aspects of programming language design, program verification and software engineering. Beyond technical collaborations, the group meets regularly and provides an engaging and supportive environment.
Project description
The available PhD positions are within three projects that all aim to make it easier for developers to write safe, correct, and efficient programs. All projects will typically include both a theoretical part, developing new techniques and approaches, as well as implementations that can be practically used.
The first project targets specifically numerical programs that appear widely in e.g. safety-critical (embedded) systems, data analysis, weather forecasting, physics, and engineering. Verifying that such programs are correct is challenging because of rounding errors due to floating-point arithmetic. Possible research directions include developing new automated program verification techniques specifically for such programs, as well as specification inference and fault localisation approaches that would make such verifiers practical usable for real-world code.
The second project is centered around memory safety and techniques for memory-safe programming. Memory bugs are extremely costly in development and create security holes in programs; managed languages avoid most such problems at the cost of additional run-time machinery and checking which can increase the footprint of a program or make it harder to reason about its performance. Languages like Rust offers memory safety without the additional run-time machinery, as long as programs can be expressed in its safe subset. Possible research directions include new type systems or static analyses that extend the range of memory-safe programming and new dynamic techniques for memory safety.
The third project is centered around concurrency safety. Managed languages offer memory safety and null safety, but most do not offer concurrency safety. This means that undefined behaviours are still possible and compilers may optimise programs in ways that surprise programmers and cause programs to go wrong in ways that are hard to debug and fix. This project is looking at ways to change how programming languages approach concurrency, and in particular take responsibility for correct concurrency. Possible research directions include new memory models, new dynamic techniques for detecting and handling concurrency errors, and new implementations of runtimes rethinking how concurrency is handled.
Duties
A doctoral student will devote the time to graduate education mainly. The rest of the duties may involve teaching at the Department, including also some administration, to at most 20%.
Requirements
Entry requirements for doctoral education are regulated in the Higher Education Ordinance. To meet the general entry requirements for doctoral studies, you must:
The University may permit an exemption from the general entry requirements for an individual applicant, if there are special grounds (Chapter 7, § 39 of the Higher Education Ordinance). For special entry requirements, please see the subject’s general study plan.
We are looking for candidates with:
Additional qualifications
Experience and courses in one or more subjects are valued (with slightly different weights depending on project): static program analysis, dynamic analysis, program testing, program verification, program logics, programming language semantics, type systems, programming language implementation (e.g. compilers, runtimes, GC), software engineering, debugging.
Rules governing PhD students are set out in the Higher Education Ordinance chapter 5, §§ 1-7 and in Uppsala University's rules and guidelines.
Application
The application must include:
Promising applicants will be invited for an interview on-site before hiring.
About the employment
The employment is a temporary position according to the Higher Education Ordinance chapter 5 § 7. Scope of employment 100 %. Starting date 1 April 2026 or as agreed. Placement: Uppsala.
For further information about the position, please contact: Associate Professor Eva Darulova, e-mail: eva.darulova@it.uu.se or Professor Tobias Wrigstad, e-mail: tobias.wrigstad@it.uu.se.
Please submit your application by 30 January 2026, UFV-PA 2025/3891.
Are you considering moving to Sweden to work at Uppsala University? Find out more about what it´s like to work and live in Sweden.
| Type of employment | Temporary position |
|---|---|
| Contract type | Full time |
| First day of employment | 2026-04-01 or as agreed |
| Salary | Fixed salary |
| Number of positions | 2 |
| Full-time equivalent | 100 |
| City | Uppsala |
| County | Uppsala län |
| Country | Sweden |
| Reference number | UFV-PA 2025/3891 |
| Published | 12.Dec.2025 |
| Last application date | 30.Jan.2026 |