TDA342/DIT260 Advanced Functional Programming HT19 (7,5hp)
Revised Dec. 28th, 2020
Department of Computer Science and Engineering
Chalmers University of Technology / Göteborg University
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.
MPALG email@example.com Tobias Bäckemo
TKDAT firstname.lastname@example.org William Eriksson
TKDAT email@example.com Erik Nilsson
MPALG firstname.lastname@example.org Lukas Skystedt
MPALG email@example.com Chengyuan Wang
- Lectures: https://chalmers.zoom.us/j/65475613760 Password: 922444
There is an online version of it. Some related papers to read and other material will be provided with the lectures.
These books are all good but presented in order of decreasing relevance for the AFP course.
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.
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 and the exam in order to pass the course.
- Each of the assignments is divided into two parts with separate deadlines.
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
The exam is graded as 3,4, and 5.
To obtain the final grade, you need to pass all the assignments and the exam. 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
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
- 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
Changes made since the last occasion
- Move lecture of Functors and Applicative Functors before the ones about Monads
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.