Kursöversikt

Course-PM

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

Revised Dec. 28th, 2018

Departmen 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 (Links to an external site.)Links to an external site.

Contact details

Teaching staff

  • Alejandro Russo (Lecturer)
  • Fabian Ruch (TA)
  • Alejandro Gómez Londoño (TA)

Student representatives

  • TBA

Course literature

Real world Haskell Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen (Links to an external site.)Links to an external site.

There is an online version of it (Links to an external site.)Links to an external site.. 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 (Links to an external site.)Links to an external site.

The Fun of ProgrammingThe Fun of Programming edited by Jeremy Gibbons and Oege de Moor (Links to an external site.)Links to an external site.

Thinking Functionally with HaskellThinking Functionally with Haskell by Richard Bird (Links to an external site.)Links to an external site.

Programming in HaskellProgramming in Haskell by Graham Hutton (Links to an external site.)Links to an external site.

Haskell — The Craft of Functional Programming Haskell — The Craft of Functional Programming (Links to an external site.)Links to an external site.

 

Course design

Lectures

There are two 1.5-hour lectures every week. The 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, please contact the lecturer.

  • You need to pass all three assignments in order to pass the course.
  • Each of the assignments is divided into two parts with separate deadlines.

Deadlines

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

Examination form

Assignments

Laborations are graded with 3,4, and 5. Once you finish all the labs, you will get the following temporary grade:

tmp = (3*grade lab 1  + 5*grade lab 2 + 4*grade lab 3)/12

Above, the 3,5, and 4 coefficients are the weights of the labs based on their difficulty.

To fix some round errors, the final score of the lab is:

grade_labs = (tmp - 3) * 1,4999 + 2.5

Exam

The exam is graded as 3,4, and 5.

Final grade

The final grade for the course is composed of 60% for the lab's score and 40% for the exam's score.

total_grade = 0.6 * grade_labs + 0.4 * grade_exam

Where the total_grade then gets rounded generously, meaning, 4.5 -> 5.

If you are a Chalmers student, then you get the score total_grade as the grade for the whole course.

GU students get G if total_grade is 3 or 4 and VG if it is 5.

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 (Links to an external site.)Links to an external site.

For Chalmers students (Links to an external site.)Links to an external site.

Changes made since the last occasion

  • Content moved into Canvas

Kurssammanfattning:

Datum Information Sista inlämningsdatum