Functional Design and Programming E2004

The plan is tentative and will be adjusted during the course, some subjects might get dropped and other might be added. Links to teaching material will be created when the material becomes available.

  Subjects Material Date Lecturer
1 Overview of functional design and programming, course format, programming paradigms.
Standard ML: values, names, types, declarations, numbers, truth values, conditional expressions.
Interactive development with Emacs and Moscow ML.
H&R: Chapter 1 and 2.
Lecture 1 slides
Exercise sheet 1
Solutions
Wed 1 Sep at 9.00 (lecture only, no exercises) SD and TCD
2 Tuples and records. Type declarations. Local identifiers. Program development and design. H&R: Chapter 3 and 4.
Lecture 2 slides
Exercise sheet 2 Solutions
Wed 8 Sep SD
3 Lists. Polymorphic functions. H&R: Chapter 5 and 6.
Lecture 3 slides
Exercise sheet 3 Solutions
Wed 15 Sep SD
4 Enumerated types. Tagged values. Partial functions. Exceptions. Recursive types. Functional design vs. Object oriented design (Dissecting exercise E2.2). H&R: Chapter 7 (Recursive types from Chapter 8). Lecture 4 slides
Exercise sheet 4
Wed 22 Sep SD
5 Grammars and abstract syntax trees. Parametric data types. Binary search trees. Abstract types and invarians. Higher-order functions. H&R: Chapter 8 and 9.
Lecture 5 slides
Exercise sheet 5
Wed 29 Sep SD
6 Sets. SML module language. H&R: Chapter 10 and 11.
Lecture 6 slides
Exercise sheet 6 Fold examples
Wed 6 Oct SD
7 Functors revisited. Tables. Input/Output. Compiling libraries and stand-alone programs with Moscow ML. H&R: Example 11.1 and Chapter 12, (13), and 14.
Why Functional Programming Matters (Hughes) part 1-3 (pages 1-8)
(Suggested to look at: Moscow ML Owner's Manual: Sections 5, 6, 7, 8, and 10.)
Lecture 7 slides
Exercise sheet 7
Wed 13 Oct TCD
8 Imperative programming: references, arrays, while-loops, Iteration. (Efficient programming in SML (postponed)).

H&R: Chapter 17, and 18.

Lecture 8 slides
Exercise sheet 8
Wed 20 Oct TCD
9 Type inference: An overview - and intuition. Lecture 9 slides, slides 1-28 (Pitts) Types Lecture Notes (Pitts), pages 1-28. Exercise sheet 9 Wed 27 Oct LB
10 MiniML - the programming language, an evaluator and a (skeleton) typechecker. Getting an overview of a larger ML-program. Another recap of the SML module system.

We'll play around with the MiniML code (to appear here) and there will be small exercises to get you familiar with the MiniML implementation. Implementing unification.

The MiniML system (03-11-04) (zip).
Essentials of Standard ML Modules (Mads Tofte, 1996) - read Part 1 and part 2 first few sections.

Lecture 10 slides
(Exercises - see slides)
Wed 3 Nov TCD
11 Roundup on unification. Typechecking ML-like programming languages.
(If time: Efficient programming in SML (postponed from earlier.))
The MiniML system version 2 (09-11-04) (zip).
The MiniML system version 2.1 (10-11-04) (zip). (implemented fn's and equality on class)
Essentials of Standard ML Modules (Mads Tofte, 1996) - Part 2 (and rest).
(You'll also need to look at Pitts notes again.)

Lecture 11 slides
(Exercises - see slides)
Wed 10 Nov TCD
12 Roundup on MiniML exercises.
ML and the .NET framework. Other SML compilers. Other functional languages. Functional design and programming. SML Server.
Lecture 12 slides Wed 17 Nov TCD


Author:Troels C. Damgaard (tcd (at) itu.dk)