Advanced Functional Programming

WS 2005/2006

Software Engineering Chair (Prof. Zeller)
Programming Systems Lab (Prof. Smolka)

Universität des Saarlandes, FR Informatik
Postfach 15 11 50
66041 Saarbrücken
   

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:

advanced-fp-2006.pdf

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:

fp-seminar(at)st.cs.uni-saarland.de

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.

fp-seminar-all(at)st.cs.uni-saarland.de

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.

<lindig@cs.uni-saarland.de> · http://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/index.php · Stand: 2005-07-20 11:17