Christian Lindig

Andreas Rossberg

Gert Smolka

Ralph Debusmann

Jan Schwinghammer



This seminar course will study advanced techniques in functional programming and has three major goals:

To learn the best techniques used by functional programmers, so you can use them in your own work.

To learn how to read, summarize, and criticize papers so you can write better papers yourself.

To get a feel for research questions in functional programming.

Topics

There is no fixed set of topics and participants can actually suggest papers, but here is a list of possible topics:

The basics of Haskell, a pure, lazy language

Monads

Haskell type classes vs. ML functors

Functional Pearls: clever algorithms and data structures

Debugging functional programs (tools and techniques)

Generic Programming

Type Systems

Implementation of functional languages

Advanced Talks on Wednesday, March 22

All talks in this seminar will be given on Wednesday, March 22, in a conference-like setting. The location is Room 528/45. If you are interested in the talks but not a member of this seminar, please send us an email (see below). Each talk will be 25 minutes long, followed by a discussion. Below is our tentative schedule.

Final Papers

Each talk was accompanied by a short written presentation. These are available as a single PDF (1 MB) file:

What to expect

Most seminars hand students a bunch of papers and ask them to prepare a presentation towards the end of the semester. This seminar is different: we will read, discuss, and criticize papers together.

The seminar is organized in two phases. During the first phase we will read papers, typically one or two per week. This includes writing assignments and some programming exercises when appropriate. At each meeting we are discussing the papers we have read; this may include group work where we try to answer specific questions about a paper.

In the second phase each participant prepares a presentation for one or two papers that we haven't read collectively but that are related to papers that we have read. This is accompanied by a short written presentation.

The overall experience of the seminar will be a bit like a class in school with exercises, discussion, and group work, albeit on a different level. Expect to work for the seminar one full day per week.

Organization

During the semester, we meet every Tuesday at 4:00-5:30pm in room 528/45.

You will receive 8 or 9 credit points for successful participation, depening on your Prüfungsordnung.

Amount of work: about 10 hours per week (for 12 weeks).

Evaluation (with results!)

How are we doing? We really want to know and have prepared some questions. Your answers are anonymous but you can fill out the form only once. For this you need a token that we hand out in the course. Besides your answers to specific questions your general comments about this course are most valuable to us.

Thanks everybody for participating! If you are curious, here are the results.

How to reach us

You can reach the organizers collectively by sending email to the following address:

Mailing List

We have a mailing list for all participants. You can ask questions here and we will also use it for announcements. All participants are subscribed. Let us know when you want your address to be removed.

Documents and Assignments

pitch.pdf Our sales pitch: why Advanced Functional Programming is great. intro.pdf Introduction to the course; organization, work load. homework-01.pdf Homework for Fun with binary heap trees by Chris Okasaki. wadler.pdf Philip Wadler and Stephen Blott: How to make ad-hoc polymorphism less ad hoc. homework-02.pdf Homework for How to make ad-hoc polymorphism less ad hoc. inclass-02.pdf Questions for How to make ad-hoc polymorphism less ad hoc and homework for Higher-Order Functions for Parsing. hutton-parsing.pdf Graham Hutton: Higher-Order Functions for Parsing, Journal of Functional Programming, 2(3), pages 323--343, 1992. inclass-03.pdf Question about Higher-Order Functions for Parsing, homework. wadler-essence-fp.pdf Philip Wadler, The essence of functional programming, Proceedings of the 19th ACM SIGPLAN Symposium on Principles of Programming Languages, pages 1--14, 1992. inclass-04.pdf Question about The essence of functional programming, homework assignment. inclass-05.pdf Questions about how to review papers, homework assignment. ramsey-embed.pdf Norman Ramsey, Embedding an interpreted language using higher-order functions and types, Proceedings of the 2003 workshop on Interpreters, virtual machines and emulators, pages 6--14, 2003. ramsey-embed-summaries.pdf Four one-page summaries about Norman Ramsey's paper Embedding an interpreted language using higher-order functions and types, Proceedings of the 2003 workshop on Interpreters, virtual machines and emulators, pages 6--14, 2003. inclass-06.pdf Questions for Embedding an interpreted language using higher-order functions and types by Norman Ramsey, homework assignment. huet-zipper.pdf Gerard Huet, The Zipper, Journal of Functional Programming, 7(5), pages 549--554, September 1997. inclass-07.pdf Questions for The Zipper by Gerard Huet, homework assignment. harris-transaction.pdf Composable Memory Transactions by Tim Harris and others. It appeared in the Proceedings of the ACM SIGPLAN 2005 Symposium on Principles and Practice of Parallel Programming, pages 48-60. inclass-08.pdf Questions for Composable Memory Transactions by Tim Harris and others, homework assignment. The paper in the Proceedings of the ACM SIGPLAN 2005 Symposium on Principles and Practice of Parallel Programming, pages 48-60. inclass-09.pdf Questions for Fun with Phantom Types by Ralf Hinze. It appeared as a chapter in the book The Fun of Programming, edited by Jeremy Gibbons and Oege de Moor, 2003 Palgrave MacMillan, pages 245-262. queinnec.pdf Christian Queinnec, The Influence of Browsers on Evaluators or, Continuations to Program Web Servers, 5th ACM SIGPLAN International Conference on Functional Programming. sweeny.pdf Tim Sweeny, The next Mainstream Programming Language, slides for his invited talk at POPL 2006. Tim Sweeny is the founder of Epic Games, the company that created Unreal. In his talk he surveys how programming languages help or hinder game development. This was diskussed on Lambda the Ultimate. inclass-10.pdf Questions for the paper by Christian Queinnec, The Influence of Browsers on Evaluators or, Continuations to Program Web Servers. We are trying to get a grip on call/cc, the most complicated control-flow operator. inclass-11.pdf A list of papers that could serve as a starting point for a presentation about an advanced topic in functional programming. Also: homework for Origami Programming by Jeremy Gibbons. inclass-12.pdf Questions for Origami Programming by Jeremy Gibbons. Also: a roadmap for presentations.

How to sign up

Sorry, all spots are taken and you can no longer sign up. However, you are welcome to visit a seminar session if you are interested.