Course Syllabus

Course-PM

TDA342/DIT260 Advanced Functional Programming  (7,5hp)

Department of Computer Science and Engineering
Chalmers University of Technology / Göteborg University

Course aim

​The aim of the course is to explore the powerful mechanisms that functional programming languages offer to solve real problems and structure larger programs. The focus lies on library design and the concept of embedded languages.

Schedule

TimeEdit

Lectures are given in hybrid format, in person in EDIT EF, and over Zoom.

Contact details

Teaching staff

Evan: "I will have office hours on Tuesdays from 15-16 and Wednesdays 10-11, starting on 27 January. This is a drop-in session in room 6461. Please come prepared; be prepared to tell me clearly what your problem is and what you have tried yourself to solve it.

I will dedicate up to two hours more on Fridays towards office hours, but these need to be scheduled with ME beforehand. Priority will be given to students that have difficulty showing up during the drop-in session. Please send me an email to schedule such an appointment.

Please note that I am terrible at Windows, and if you have technical difficulties on your Windows-machine it is very unlikely that I will be able to help you. You can come and hope for the best, but prepare to be disappointed :)!"

Student representatives

Program Email First name Last name
MPALG alva.m.andreasson@gmail.com Alva Andreasson
MPALG philipp.i.holst@gmail.com Philipp-Immanuel Holst
MPALG johnejansson@gmail.com John Jansson
MPALG williamkarlsson0210@gmail.com William Karlsson
MPALG depsterr@protonmail.com Rachel Samuelsson
GU gusalbiot@student.gu.se Albin

Otterhäll

Course material

The lecture content, the assignments and further material are available at https://teach-afp.github.io/www.

The code for the whole course is in https://github.com/teach-afp/afp-code -- and you can clone it!

Course literature

Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen

There is an online version of it. Some related papers to read and other material will be provided with the lectures.

Extra reading material

These books are all good but presented in order of decreasing relevance for the AFP course.

The Haskell School of Expression The Haskell School of Expression by Paul Hudak

The Fun of ProgrammingThe Fun of Programming edited by Jeremy Gibbons and Oege de Moor

Thinking Functionally with HaskellThinking Functionally with Haskell by Richard Bird

Programming in HaskellProgramming in Haskell by Graham Hutton

Haskell — The Craft of Functional Programming Haskell — The Craft of Functional Programming

 

Course design

Lectures

There are two 1.5-hour lectures every week. Students are expected to do a lot of independent programming and self-study. Lots of help is provided.

Assignments

There are three programming assignments, which you should do in pairs. If you have a good reason for doing the assignments by yourself or in a group of three, please contact the lecturer.

      • You need to pass all three assignments and the exam in order to pass the course.
      • Each of the assignments (except the last one) is divided into two parts with separate deadlines.

Deadlines

Deadlines are hard! Please read about them early and carefully!

Examination form

To obtain the final grade, you need to pass all the assignments and the exam. Labs and exam are graded as 3, 4, and 5. The lab grade is the average of the individual grades for the 3 labs. The labs contribute 60% to the final grade and the exam contributes 40% to the final grade. The Chalmers grades are translated into the GU scheme in the usual way.

Learning objectives and syllabus

Learning outcomes 

  • Design embedded domain specific languages (EDSLs)
    • Explain and exemplify (abstract) syntax, semantics
    • Implement EDSLs in Haskell (as combinator libraries)
  • Read, understand and extend Haskell programs which use advanced type system features
    • Type classes
    • (Generalized) algebraic datatypes
    • Functors, monads and monad transformers
  • Use specification based development techniques
    • Formulate and test properties about the program
    • Reason about correctness of functional programs
    • Transform programs on the basis of such reasoning
  • Explain and discuss the above topics

Detailed course syllabus

For GU students

For Chalmers students

Changes made since the last occasion

  • TBA

Course Summary:

Course Summary
Date Details Due