Advanced functional programming

Website:website containing additional information
Course code:INFOAFP
Credits:7.5 ECTS
Period:periode 3 (week 6 t/m 16, dwz 4-2-2008 t/m 18-4-2008; herkansing week 22)
Timeslot:A
Participants:up till now 23 subscriptions
Schedule:Dit is een oud rooster!
formgrouptimeweekroomteacher
college   ma 11-136-11,14,15 BBL-505 Andres Löh
 
wo 11-136-11,13-15 BBL-471
werkcollege   wo 09-116-11,13-15 BBL-461
BBL-468
Contents:

This course builds upon knowledge gained in previous courses on functional programming and compiler construction. Using Haskell as our language of choice, we will look at several advanced functional programming techniques, patterns, libraries and tools. Many of the research projects inside the department make use of functional programming, and one goal of this course is to equip you with sufficient knowledge in order to participate in such projects. Here are a few topics that the course will most likely cover:

  • Development
    • Tools
    • Testing
    • Debugging
    • Profiling
  • Libraries
    • Data Structures
    • Interfacing to other programming languages
    • Monads and related structures
    • Embedded domain-specific languages
  • Language features and extensions
    • Advanced Type Classes
    • Kinds
    • Generalized Algebraic Data Types
    • Existential types
    • Higher-rank polymorphism

Literature:

There are no required books for this course. The course will refer to research papers that are available through the internet and electronic libraries. The course web page will contain further details.

Course form:

Lectures and assignments.

The lectures cover the list of topics mentioned above and are often based on selected research papers. Participants are expected to read the material before the lectures.

Assignments will consist of theoretical questions about the material covered in lecturers and of related programming assignments. All participants are expected to complete the assignments.

Participants have to give a mini-talk (about 20 minutes) about a course-related topic. This can be a tool, a library, or a language concept otherwise not featured in the course. Possible choices will be made available to the participants in the beginning of the course. Participants will be expected to summarize their talks and to review other presentations.

The participants have to perform a large programming task in a team of approximately four students. The programming assignment will be explained in the beginning of the course.

The final exam is based on the topics of the lectures and assignments.

Exam form:Your final mark for this course will consist of:
  • marks for the assignments (25%)
  • mini-talk (including summary and reviews) (25%)
  • overall score for the large programming task (25%)
  • written examination (25%)
The weighted average of the grades should be at least 5.5, but none of the grades may be smaller than 4.0. Not performing a certain task (such as not handing in an assignment) counts as 0.
Minimum effort to qualify for 2nd chance exam:You can do a 2nd chance exam if you normally would not pass the course, but if improving the lowest of your four grades (assignments, talk, programming, exam) sufficiently could rise your average to at least 5.5. The additional work assigned to you will be in the same category (assignment, talk, programming, exam) as the score you want to improve. You may only improve your lowest grade, and you may improve only one of them. Hence if you have more than one grade lower than 4.0, then you cannot pass the course, and have to redo it entirely next year.
wijzigen?