TCS-SOUP: Theoretical Computer Science for SOuth-eastern Universities PhD students

Functional Programming

University of Kent at Canterbury
1-3 Dec 2004

Rationale

Functional programming languages are not only useful in their own right but they have also been, and continue to be, highly influential in the wider fields of language design, logic and semantics. This course aims to impart an in-depth appreciation of the theory and practice of functional programming, of its origins and its potential, and of contemporary functional programming languages.

The course is intended primarily for research students and staff working in the areas of formal methods, language design or theoretical computer science. It consists of a mixture of lectures, exercises and terminal sesssions and is spread over three days. The lectures are delivered by academics researching actively in the fp field.

Themes and Links

The programme is based on the following themes:
Introduction and overview of functional programming
A broad survey of present day fp languages and an overview of Haskell (one of the most highly developed purely functional programming languages) and its supporting programming tools.
Types and type systems in fp
Type systems are richly developed within fp languages and include polymorphic types, type and constructor class overloading, multi-parameter type classes, existential types and higher-rank polymorphism.
Testing and tracing execution of functional programs
Observing the runtime behaviour of programs written in non-strict languages poses new challenges but also offers many new possibilities.
Reasoning
The relative simplicity and semantic purity of fp languages allows laws to be derived asserting the equivalence of differing syntactic constructs. This both informs the development of powerful optimisation and refactoring techniques and helps the intuitive use of transformational techniques in deriving new algorithms.
Programming Graphical User Interfaces in Haskell
Writing graphical user interfaces is a complex task and can easily constitute more than half the code of a software project. Creating GUIs in Haskell can lead to shorter and more reliable applications due to the powerful abstraction mechanisms in functional programming languages.
Monads and monadic programming techniques
The desire both to retain a pure declarative semantics but yet to be able to accommodate the imperative actions inherent in any interaction (such as input/output operations and exception handling) with the outside environment has led to the development of monadic programming techniques.
Origins of functional programming and contemporary developments
The roots of fp can be traced back to the lambda calculus and combinatory logic, and have strongly influenced many branches of computer science. Present-day developements include domain-specific language techniques and ever stronger type systems.
Research directions
An exploration of a contemporary research theme: document-centered functional programming.

Timetable

Wednesday (S110B)
14:00 - 14:45 Introduction to functional programming OC
15:00 - 15:45 Types in functional programming (1) FKH
16:15 - 18:00 Terminal session: Introductory exercises OC, TATD
Thursday (S110B)
09:00 - 09:45 Testing and tracing execution of functional programs OC
09:45 - 10:30 Document-centered functional programming FKH
11:00 - 12:30 Terminal session: Tracing OC, TATD
14:00 - 14:45 Types in functional programming (2) FKH
15:00 - 15:45 Reasoning about functional programs (1) SMK
16:15 - 17:00 Reasoning about functional programs (2) SMK
17:15 - 18:00 Monads and I/O in functional programs (2) SJT
Friday (SW101)
09:00 - 09:45 Terminal session:Monads and I/O CMB, SJT
09:45 - 10:30 Terminal session: Types CMB, MDC
11:00 - 11:45 Graphical interfaces for functional programming AS
12:00 - 12:45 Terminal session: GUI programming MDC, AS
12:45 - 14:00 (sandwich lunch)
14:00 - 14:45 Terminal session: GUI programming CMB, AS
14:45 - 15:30 Survey of functional programming: past, present and future SMK

Locations

Lectures will take place in S110B on Wednesday and Thursday, and in SW101 on Friday. All terminal sessions will take place in CC03 (which has 18 places). Room CCO1 available on Thursday and Friday as an overflow if required.

The lecturers

. . . and the demonstrators

. . . and some of the participants

Photo of some of the participants

Prior study

To get the most out of this school, some prior study is essential. Where the topic studied are not language independent, the course will be dealing mainly with Haskell, the de facto standard for non-strict functional programming languages. The course assumes a basic knowledge of Haskell (namely, user-defined data types, polymorphic types and higher-order functions).

Recommended reading

The Haskell 98 language home page is an invaluable source both of tutorial materials and of reference items, and is well worth in-depth study.

In particular, we recommend:

Introductory notes

We can provide a copy of a set of introductory notes on Haskell which would be a suitable basis for study by any attendee who would like to familiarise themselves with elementary aspects of Haskell. Please ask for a copy of these notes when you register.

Software

During the course we will be using both the Hugs interpreter and the GHC compiler for running Haskell programs. Both of these systems can easily be downloaded and run under a variety of operating systems.

Venue

The course will be hosted by the Computing Laboratory at the University of Kent at Canterbury.

Maps and travel directions can be found here.

Locality

The university campus is on the outskirts of Canterbury, an ancient cathedral city and now a UNESCO world heritage site.

Accommodation

Will be in local hotels. Please contact our local organiser if you have any special requirements.

Registration

Please register, no later than one week before the start date, by emailing Julia Wallace.

Any other queries

If you have any queries about the content of the course, please email Keith Hanna.


Information is believed to be correct at time of publication, but minor changes are likely. Please watch this space!
Last updated: 8 Dec 2004