Programming Theory
Course, Master's level, 1DT034
Expand the information below to show details on how to apply and entry requirements.
Autumn 2026 Autumn 2026, Uppsala, 33%, On-campus, English Only available as part of a programme
- Location
- Uppsala
- Pace of study
- 33%
- Teaching form
- On-campus
- Instructional time
- Daytime
- Study period
- 31 August 2026–17 January 2027
- Language of instruction
- English
- Entry requirements
-
120 credits with 30 credits in mathematics and 30 credits in computer science, including basic programming, data structures, and elementary logic. Proficiency in English equivalent to the Swedish upper secondary course English 6.
- Application deadline
- 15 April 2026
- Application code
- UU-11218
Admitted or on the waiting list?
- Registration period
- 27 July 2026–6 September 2026
- Information on registration from the department
Autumn 2026 Autumn 2026, Uppsala, 33%, On-campus, English For exchange students
- Location
- Uppsala
- Pace of study
- 33%
- Teaching form
- On-campus
- Instructional time
- Daytime
- Study period
- 31 August 2026–17 January 2027
- Language of instruction
- English
- Entry requirements
-
120 credits with 30 credits in mathematics and 30 credits in computer science, including basic programming, data structures, and elementary logic. Proficiency in English equivalent to the Swedish upper secondary course English 6.
Admitted or on the waiting list?
- Registration period
- 27 July 2026–6 September 2026
- Information on registration from the department
About the course
The course introduces the basic principles of program analysis, verification, and the connection between mathematics and programming.
The topics include propositional logic, predicate logic, equational reasoning, formal methods, formal specification languages, program verification, weakest preconditions, invariants, partial correctness, termination, total correctness, and program synthesis. The course also includes a lab package based on Spec#, a formal language which extends C# with constructs such as preconditions, postconditions, and object invariants.
The lab exercises offer you the opportunity to apply the theoretical contents of the course and use the tool to carry out verification of several examples ranging from relatively simple to quite involved programs.