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:
- 09:00
Peter Molyneux md7pm@mdstud.chalmers.se
Magnus Unger md9mu@mdstud.chalmers.se
Anders Gidenstam d96andgi@dtek.chalmers.se
- 10:00
Niklas Sörensson md6ns@mdstud.chalmers.se
Jonathan Gustavsson md6jonat@mdstud.chalmers.se
Gunnar Smith md6gunna@mdstud.chalmers.se
- 11:00
Marcus Lindblom d98macke@dtek.chalmers.se
Peter Strand d98peter@dtek.chalmers.se
Esbjörn Redmo-Broman e5esa@etek.chalmers.se
Magnus Björk md6magnu@mdstud.chalmers.se
Niklas Een een@cs.chalmers.se
John Hörnkvist
- 13:15
Anders Henriksson d95has@dtek.chalmers.se
Pontus Olsson d97pool@dtek.chalmers.se
Mårten Bohlin d97mabo@dtek.chalmers.se
Viktor Fougstedt viktor@dtek.chalmers.se
Daniel Hedin utter@dtek.chalmers.se
- 14:15
Magnus Reftel md8reftl@mdstud.chalmers.se
Magnus Ellison md8mael@mdstud.chalmers.se
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:
-
Card file browser
-
Interactive Debugger
-
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
-
Getting started: the material in the
first lecture and some exercises.
-
manuals and tutorials for the programming
language Haskell and its compilers, and
-
collected articles on various concepts that you will need. An overview
of the articles contains on-line pointers to some of the articles. There
are other collections of online articles you might find useful:
-
Systematic Design of Monads is a note
on how to combine monads for state, exceptions, backtracking, continuations
and output (as postscript).
-
Devils and Angels, a Haskell
implementation of an exercise in continuations.
-
Imperative Functional Programming,
collected information on using the imperative paradigm in Haskell, interfacing
Haskell to imperative software, and so on.
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