Advanced Functional Programming


Latest news

You do not have to do the heap profiling for problem 1.

The desctription of the pretty printer can be found on the overview page.

Remove the import of Seq in the NewPP module, it's not needed.

There is no lecture on 1999-12-06, and no group meetings on 1999-12-09.

The problem results are now available. Tell me if I missed something.


Schedule

We have two weekly scheduled times, all in MD8, and all 13:15-15:00. They are as follows (the first week does not follow the pattern):
  • Tue 1999-10-26 13:15-15:00
  • Mon 1999-11-01 13:15-15:00
  • Mon 1999-11-08 13:15-15:00
  • Mon 1999-11-15 13:15-15:00
  • Mon 1999-11-22 13:15-15:00
  • Mon 1999-11-29 13:15-15:00
  • Mon 1999-12-06 13:15-15:00 Cancelled.
  • We will not use all these times, the exact schedule will be driven by you, dependeing on what you want to hear about.

    A loot of activities will be in group meetings. I have booked a room for Thursdays where we can have group meetings:

  • Thu 1999-10-28, 09-15, S3
  • Thu 1999-11-04, 09-12, S4
  • Thu 1999-11-04, 12-15, S3
  • Thu 1999-11-11, 09-12, S3
  • Thu 1999-11-11, 13-15, MD8
  • Thu 1999-11-16, 09-12, S3
  • Thu 1999-11-16, 13-15, MD8
  • Thu 1999-11-25, 09-12, S3
  • Thu 1999-11-25, 13-15, MD8
  • Thu 1999-12-02, 09-15, S3
  • Thu 1999-12-09, 09-15, S3 Cancelled.
  • The following "groups" have been formed so far:

    What you will learn

    In this course, you will learn how to solve programming problems by reusing software in the form of libraries. As you know, software reuse is the key to high productivity and quality. You will find that functional programming languages are suitable for developing libraries with components that are higly reusable. You will use (and in some cases develop) general purpose libraries for e.g. parsing, pretty-printing, graphical user interfaces, and animation. See also what "kursplaner" has to say.

    You will also learn something about new developments in functional languages, mostly about extensions the existing type systems. The two languages we will discuss are Cayenne and O'Haskell. In addition we will perhaps we will look at some proposed extensions to Haskell.

    How you will learn it

    The course is mostly based on learning by problem solving. Hopefully, you will find the problems more realistic than the ones you solved in the introductory course in functional programming, and therefore more fun. The list of problems is as follows:
    1. Card file browser
    2. Interactive Debugger
    3. Examination Problem
    Some of these problems refer to local files - these can be found in this source directory.

    When solving your problems, you might need to consult

    A selection of manuals and some bound copies of the collected articles are available from the student reception. 

    Additional material provided during the course is available here.

    You can also check out what's going on in the newsgroup comp.lang.functional. There is also a page with frequently asked questions about functional programming. There is also the Functional Programming Archive, which is an excellent database of on-line articles. If you want to dig more deeply into the subject, you're welcome to join in the activities of our local functional programming group.

    You are encouraged to read the material critically, and discuss questions you have in groups. Although the papers contain a large amount of valuable knowledge and insights, they aren't perfect, and sometimes they omit too many details to be comprehensible.
     

    Accounts

    You will need a computer account to solve your problems and report the solutions. Contact me to get one; if you already have an account here you may use that instead.

    In any case, you should email me your name and preferred email address.

    Laboratory Times

    Much of your work on this course will be practical, so you will need to spend a considerable time in our laboratory rooms. Laboratory rooms have been booked for this course at these times, although you are free to do the practical work whenever you like.

    If you have questions, send mail to  augustss@cs.chalmers.se , or call me at 772 10 42 (which will probably forward to my cell phone)! 


    Lennart Augustsson