There are no requirements.
Computing systems become increasingly more complex and handle a variety of different tasks.
As our society relies on these systems working correctly, we need formal descriptions of
computational models and the semantics of programming languages to be able to verify the
correctness of computing systems.
The computational models that we will study in this course range from the simplest functional
model, via domain theoretic models to probabilistic models that underpin statistical phenomena in
optimisation and machine learning.
During the course, we will introduce several programming language, all coming with specific kinds
of computational models that allow us to give semantics to these languages.
This approach allows us to concretely understand the purpose of the corresponding computational
model, while we can use the languages to write and run concrete programs.
We will find that this variety of computational models and the resulting semantics have recurring
Moreover, with increasing complexity of the models, we will need some framework that helps us
organising our work.
For that reason, we will also study bits of category theory and coalgebra, which will greatly
ease our work with the various computational models.
Category theory has become indispensable in the research of language semantics and many other
areas of computer science.
This means that this course will prepare you for working with modern tools of language theory,
logic and beyond.
The course will consist out of lectures, complemented with assignments and a research project.
There will be, both, pen-and-paper and programming assignments, which allow you to deepen your
understanding and prepare you for working on programming languages.
During the research project, you will develop both the theory of programming languages and
computational models, and put your knowledge into practice in a topic of your choice.
After completing this course, you will have
learned what computational models are;
learned what operational semantics and denotational semantics are, and how they relate to each other;
understood several concrete computational models: functional models, order theoretic models (domain theory), and probabilistic models;
acquired the ability to give semantics to concrete languages: imperative and functional languages; and
learned how to utilise category theory and coalgebra as abstraction of concrete models, semantics and computational effects.
This gained knowledge will enable you to better understand and structure programs, reason about
the behaviour of programs and design your own programming language with semantics.
The most recent timetable can be found on the students' website.
Mode of instruction
The course will consist out of lectures complemented with self-study, working and discussion
sessions (exercise hours).
Moreover, students will carry out small research projects in pairs with a presentation session
at the end.
Total hours of study: 168h
The final examination will be an oral exam, which needs be completed at least with a sufficient
grade of 6.
Should the number of participants be too high, this may be changed to evaluation solely based on
projects and presentations.
At the end of the course, we will have a session, in which each pair presents its research project.
The final grade of the course will be calculated by weighing the research project by 50%,
the presentation by 10%, and the oral examination by 40%.
Both the presentation and the oral exam can be retaken, if the grade was not sufficient.
If the grade of the research project was not sufficient, then an improvement can be made once,
by incorporating the provided feedback.
Roberto Bruni and Ugo Montanari, Models of Computation. Springer, 2017.
Jan van Eijck and Christina Unger, Computational semantics with functional programming. Cambridge University Press, 2010.
- You have to sign up for courses and exams (including retakes) in uSis. Check this link for information about how to register for courses.
All information will be available on Brightspace and on the website.