Master in Software and Systems
Universidad Politécnica de Madrid
/
IMDEA Software
However, types have a quite long story — in some sense, older than programming languages themselves — and familiarity with their mathematical foundations must be gained in order to master the techniques common to different systems and applications.
The first part of the course will cover the foundations and "abstract" type systems: simply-typed λ-calculus and extensions, such as sum and product types or λ2. These lectures provide the basic language and algorithms used throughout the course. The second part of the course deals with features of type systems present in actual programming languages, such as polymorphism (parametric and ad hoc), references, inheritance, etc. Finally, the third part consists in individual (supervised) work on some topic chosen by the student, and leading to a final presentation. The goal here is to serve both the individual needs (research, professional) of the students while giving their classmates a broad view of this growing field.
Some basic knowledge of logic and functional and/or logic programming is assumed as a prerequisite.