Functional Programming 2017

Course in subsequent year: Functional Programming 2018


Functional Programming is divided into 2 parts. For the first part, lectures are available on YouTube and the Wednesday afternoon slot will be used for recitation sessions. The second part will follow a classical lecture structure, with in-person lectures on Wednesday afternoons.

First week

Prof. Odersky will give the introductory lecture on Wednesday 20th September at 13:15 in CO2

An introduction to Git will be presented during the first hour of the exercise session on Friday 22th September at 10:15 in CE 1 4. Teaching Assistants will be available in the second hour to answer questions related to the first programming assignment.

Part 1: Functional Programming Principles in Scala

Each week, you should watch the videos corresponding to the week and complete the weekly programming assignments.

In place of a traditional lecture session, during our lecture slot on Wednesdays, we will be holding recitation sessions, to ensure that students understand the material covered in the lectures. The recitation session will last one hour. In order to optimize these sessions, the students will be divided in groups of approximately 25. Sessions will take place between 13:15 and 14:00, and 14:15 and 15:00. You can attend either session. The sessions will take place in the rooms CO2, CO015, CO016, CO017.

You need to register for a room and a time using the following poll:

The Teaching Assistants are available on Fridays from 10:15 to 12:00 in CO 021 to answer questions related to the programming assignments. This is the more traditional “séance d'exercices” that EPFL students are familiar with.

Part 2: Declarative Programming

For part 2 of the course, students should attend the weekly lectures by Prof. Kuncak, on Wednesdays at 13:15. We will no longer hold recitation sessions during this time slot.

Teaching Assistants will still be available on Fridays at 10:15 exactly like in Part 1.


If you have any questions regarding assignments, lecture material or organization, please ask them on the Moodle forums. We will also use Moodle for all communications regarding the course, so make sure you are registered.



For all assignments, students must work alone – working in groups is not allowed!. Assignments must be delivered on, before their deadline.

  • Assignment 1, to be delivered before Thursday 28th September, 23:59.
  • Assignment 2, to be delivered before Thursday 5th October, 23:59.
  • Assignment 3, to be delivered before Thursday 12th October, 23:59.
  • Assignment 4, to be delivered before Thursday 26th October, 23:59.
  • Assignment 5, to be delivered before Thursday 2nd November, 23:59.
  • Assignment 6, to be delivered before Thursday 16th November, 23:59.
  • Assignment 7, to be delivered before Friday 24th November, 23:59.
  • Assignment 8, to be delivered before Thursday 7th December, 23:59.
  • Assignment 9, to be delivered before Thursday 21st December, 23:59.

Recitations Exercises


The grading of the course is divided between projects (30%), a midterm (30%), and a final exam (40%) held during the last week of courses. This course is a semester course, which means that once registered for the course, you cannot un-register before the final exam.

The midterm will be held on Friday 10th November. (Midterm, Solutions)

The final exam will be held on Friday 22th December.

Exams from previous years are available here.