Functional Programming
Lectures: 20 h
Recommended for:
Graduate students in Computer Science.
The course last ran:
Spring 95.
Goals:
The course aims at giving the participants:
- An introduction to modern functional languages, what types there are, their main characteristics, particular features of interest, and their respective advantages and disadvantages.
- Proficiency in programming in a modern lazy functional language.
- Knowledge of some advanced, purely functional programming techniques and data structures.
- An idea of the state-of-the-art and current trends within the field.
Prerequisites:
A working knowledge of Lisp/Scheme or similar language, e.g. from TDDB92/93 Programming in Incremental Systems.
In case you do not have the required background but still want to participate, we can provide you with reading directions and possibly some exercises which will give you the required background provided you do the reading well in advance of the course start.
Organization:
Lectures, assignments, presentations, project.
The exact format depends on the number of participants.
Contents:
(Preiminary)
- Modern functional languages.
- Some theoretical background.
- Lazy functional programming.
- Infinite data structures.
- Graph reduction.
- Reasoning about functional programs.
- Polymorphic type systems and type inference.
- Algebraic data types.
- Type and constructor classes.
- Functional data structures.
- Monads.
- Functional I/O; Fudgets (a functional GUI).
- Functional languages and state.
- Debugging & performance debugging.
Literature:
Johan Jeuring, Erik Meijer (Eds.): Advanced Functional Programming, Springer Verlag, ISBN 3-540-59451-5, 1995.
Two compendiums:
- Supplementary articles.
- Haskell (tutorial, language report, HBC manual).
Teachers:
Henrik Nilsson.
Examiner:
Henrik Nilsson.
Schedule:
September - October 98.
Examination:
- Compulsory assignments.
- Presentation and discussion of solutions to the assignments.
- A project (1 to 3 points)
Credit:
5 to 7 points depending on the size of the project.
Page responsible: Webmaster
Last updated: 2012-05-03