Introduction to Functional Programming

dIFP
cs.au.dk / courses / dIFP

Time and place

Lectures: Monday 12:15-15:00 in Adorno-138.
The first lecture is on August 24, 2009.
The oral exams are from Monday 26 to Wednesday 29 October in Shannon-164. There is more information here.

See also the schedule for 1st quarter courses.

The official description of the course.

Lecturer

Olivier Danvy <danvy@cs.au.dk>

Course Plan (subject to completion)

Lecture Topic Course Material Other Material Exercises
24 Aug Getting up to speed with continuity:
a review of recent dProgSprog exams
(by Ian Zerny).
* A lecture note.

* The exam questions.
* The dProgSprog home page.

* The Hitchhiker's Guide to the Galaxy.
None this week.
31 Aug * Induction and recursion.

* A language of expressions.

* The Scheme programming language.

* The ML programming language.
* A dProgSprog lecture note on ML.

* An interactive ML session.
* The Pythagorean theorem.

* John Reynolds.

* Peter Landin.

* Paul Erdos and Erdos numbers.

* xkcd.com.

* Fix for sml-mode on Windows 7.

* Fix for installing SMLNJ on Mac OS X Snow Leopard.
These two ones.
07 Sep * Induction, recursion, programming and proving. * A lecture note. * Perfect square binomial. These three ones.
14 Sep * How is recursion implemented in practice?

* Quasiquotation and code generation.
* A lecture note. * Alan Bawden's invited paper at PEPM'99, Quasiquotation in Lisp.

* Fritz Henglein's slides are here.
This one.
21 Sep * Names, bindings and substitution.

* Continuation-passing style (CPS).
* A lecture note. * Three Steps for the CPS Transformation. This one.
28 Sep * The CPS transformation.

* A CPS interpreter.
None this week. * An expression of love in Scheme, courtesy of Rasmus Feldthaus.

* Extract of the dProgSprog exam of June 2007 about queues.
This one.
05 Oct Recap. * The final project. * Alfred Tarski. This one.

News

News about the course will be available from this page. Please check back regularly.

Latest updates:
  • 21 Oct: Uploaded even more information about the final project.
  • 18 Oct: Opened a web service to CPS-transform Scheme programs as described here.
  • 17 Oct: Uploaded more information about the final project, in particular
    about the well-formedness of a Scheme expression
    and matching regular expressions.
  • 10 Oct: Uploaded the description of the final project.
  • 05 Oct: Uploaded the exercise for this week.
  • 04 Oct: Uploaded the dProgSprog exam of June 2007.
  • 02 Oct: Uploaded the exercise for this week.
  • 01 Oct: Uploaded an extra hygienic version of letrec.scm in
    "/users/courses/dProgSprog/dIFP/letrec-extra-hygienic.scm".
  • 24 Sep: Uploaded the lecture note and exercise for this week.
  • 23 Sep: Uploaded a version of letrec.scm with a definition of improper-ormap in
    "/users/courses/dProgSprog/dIFP/letrec-hygienic.scm".
  • 22 Sep: Uploaded Fritz Henglein's slides.
  • 21 Sep: Uploaded an hygienic version of letrec.scm in
    "/users/courses/dProgSprog/dIFP/letrec-hygienic.scm".
  • 17 Sep: Uploaded the lecture note for this week.
  • 14 Sep: Uploaded the translation from letrec to let.
  • 07 Sep: Uploaded the course material for this week.
  • 06 Sep: Uploaded Rasmus's fix for installing smlnj in Snow Leopard.
  • 02 Sep: Uploaded Steffen's fix for sml-mode on Windows 7.
  • 01 Sep: Added other materials and exercises for the second lecture.
  • 31 Aug: Added link to ML note and uploaded ML session from the second lecture.
  • 29 Aug: Uploading of Ian's material.
  • 20 Aug: Announcement of the first lecture.
  • 19 Aug: Creation of the dIFP 2009 home page.

Getting credit for the course

To pass, you need to attend each lecture, participate to the exercises, hand in a final project, and pass an oral exam. (Think of the oral exam as an opportunity to talk about your project.)

Extra help, should anyone need it

Should you experience any personal difficulty or hardship, the university service Rådgivnings- og støttecentret is there to help you.


[Valid HTML 4.01 Transitional]
Latest update: 21 October 2009, danvy@cs.au.dk