Lecturer
Office hours: by agreement
Office: EDIT 6111
Assistants
For exercises, lab supervision and grading:
Office hours: Tue 15-16, Wed 10-11
Office: EDIT 6461
Lecture schedule
- Mondays, 13:15–15:00, EF
- Thursdays, 10:00–11:45, EF
Discussion Group
We use Canvas Discussions.
Reading material
Course book
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.
Aim and context
Learning outcomes:
DSL: design embedded domain specific languages
- DSL.Concepts: (abstract) syntax, semantics, ...
- DSL.Implement: implement EDSLs in Haskell (as combinator libraries)
Types: read, understand and extend Haskell programs which use advanced type system features
- Types.Class: type classes, newtypes, deriving, ...
- Types.GADT: (generalised) algebraic datatypes & type families
- Types.HOT: functors, monads and monad transformers
Spec: use specification based development techniques
- Spec.Test: formulate and test properties about the program
- Spec.Prove: reason about correctness of functional programs
- Spec.Trans: transform programs on the basis of reasoning
Context
The AFP course requires a BSc in Computer Science or equivalent, mathematical maturity, a basic course on Functional Programming (like our version) and a course on Programming Languages (like Programming Language Technology or Programming Paradigms). Other recommended courses are Logic in CS, Algorithms and Finite automata theory and formal languages.
Grading
You have to pass all 3 labs 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.