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 |