Avancerad funktionell programmering, 4 poäng
Aktuell/nästa kursomgång: avfunk07.
In this course we study functional programming languages from two points of view: 1) their use as foundations for programming languages such as Java, 2) their use in their own right as one of the most powerful programming paradigms. We will study a range of topics, including the foundations of lambda calculus (untyped, typed, and second-order), type inference and the Hindley-Milner type system, type classes, monads, data structures and algorithms in a (purely) functional setting, and finally program transformations, an excellent formal method for development of correct programs from their specifications. Students will have plenty of opportunity to explore advanced functional programming in their mini-projects; examined non-trivial programming exercises. The underlying theory of functional programming is explained in a series of 14 two-hour lectures.