|Website:||website met extra informatie|
|Onderwijs:||Het vak INFOMTCH wordt in 2011/2012 niet aangeboden.|
|Onderwijs:||Het is nog niet zeker of en zo ja in welke periode van 2011/2012 dit vak wordt aangeboden.|
|Inhoud:||In this seminar we shall consider the rich literature of type (and effect) systems, typically for functional languages. I expect students to have followed the course on Compiler Construction prior to this course.|
|Literatuur:||A collection of papers, to be made available during the course.
|Werkvorm:||This is a seminar, so after some introductory lectures, you will find yourself reading papers on type (and effect) systems, participating in discussions and giving a lecture on one such paper. Presence at the presentations by students is mandatory.
The second part of the course will be devoted to a small project where you will be implementing a type system for a higher-order language.
|Toetsvorm:||You will be judged for (1) your presentation, (2) your presence and participation and (3) your project. These are weighted as follows:
grade = 0.3 * (1) + 0.2 * (2) + 0.5 *(3)
|Inspanningsverplichting voor aanvullende toets:||The grade for (1) and (2) must be 4 or higher, and the average must be
5.5 or higher.
|Beschrijving:||Type systems play a large role in languages such as Haskell and ML, but also
languages such as Java and C#. In this course we focus on higher-order functional languages, and investigate type systems for these languages, and extensions to them. In addition, there is a wealth of literature about type and effect systems that borrow vocabulary and techniques from these type systems to compute statically information from programs that can be used to optimise
and validate others aspects of the programs. Among these one can find
strictness analysis, control flow analysis, binding-time analysis, pattern match analysis and dozens of others.
The goal of this course is to introduce many such analyses for higher-order languages, to introduce polyvariance as a means of context-sensitive analysis of functional programs, to consider how laziness may effect such analyses
and how subeffecting and subtyping may be used to increase precision.