This repository will be used as the website for Functional Programming CS-210. It will be updated weekly throughout the semester. This README contains general information about the class.
- previous-exams contains PDFs for the previous exams.
- exercises contains markdown documents for the exercise sessions and solutions.
- slides contains the slides presented in class.
- labs contains markdown documents for the labs.
We will use GitLab's issue tracker as a discussion forum. Feel free to open an issue if you have any comments or questions
- Join the Discord
- Log into gitlab: https://gitlab.epfl.ch/users/sign_in
- [Register in a group](exercises/Group workspaces.md) for the exercise sessions
- Follow the Tools Setup page.
- Do the example lab.
- Do the first graded lab.
The grading of the course is divided between labs (25%), exercises (5%) and a final exam (70%). There will be no midterm exam this year.
Role | People |
---|---|
Professors | Martin Odersky, Viktor Kunčak |
TAs | Adrien Ghosn, Dragana Milovancevic, Guillaume Martres, Nicolas Stucki, Olivier Blanvillain |
Student TAs | Arthur Vignon, Emilien Ordonneau, Lucas Giordano, Mohamed Dhraief, Sara Djambazovska |
Lectures are prerecorded and published on this page. Exercise sessions take place on Wednesdays from 13:15 to 15:00 on Discord. Lab sessions take place on Fridays from 10:15 to 12:00, also on Discord. In the first 2 weeks of the semester, in-person office hours will be held on Wednesdays from 13:15 to 15:00 in CO 2, and on Fridays from 10:15 to 12:00 in ELA1. These office hours are there to help you setting up Git and Java our your machines and answer any other question you might have about the class. We will be happy to arrange further in-person or virtual (Discord, Zoom, etc.) office hours--just contact one of us with a list of all your available time slots.
Note: In some lectures, worksheets are used to present code. To learn how to
use worksheets yourselves, please follow the Tools
Setup and example lab. To create a
new empty project to experiment with worksheets, you can clone the following
repository and run code .
inside as usual: git clone https://gitlab.epfl.ch/lamp/cs210-worksheets
Week | Date | Topic | Video |
---|---|---|---|
1 | 16.09.2020 | Intro class | Part 1, Part 2, Part 3, Part 4, Part 5, Part 6, Part 7 |
2 | 23.09.2020 | Recursion / Function values | Part 1, Part 2, Part 3, Part 4, Part 5, Part 6, Part 7 |
3 | 30.09.2020 | Classes | Part 1, Part 2, Part 3, Part 4, Part 5 |
4 | 07.10.2020 | Classes | |
5 | 14.10.2020 | List | |
6 | 21.10.2020 | Collection | |
7 | 04.11.2020 | Monads | |
8 | 28.10.2020 | Lazy evaluation | |
9 | 11.11.2020 | Type-directed computation | |
10 | 18.11.2020 | State | |
11 | 25.11.2020 | Functional Reactive Programming and Constraint Propagation / Symbolic computation | |
12 | 02.12.2020 | Interpreter | |
13 | 09.12.2020 | Interpreter | |
14 | 16.12.2020 | Review for the exam |
Title | Start Date | Discord Session (Fridays 10:15 to 12:00) | Due Date (AoE) |
---|---|---|---|
Recursion | 16.09.2020 | 18.09.2020 | 27.09.2020 |
Functional Sets | 23.09.2020 | 25.09.2020 | 01.10.2020 |
Object-Oriented Sets | 30.09.2020 | 02.10.2020 | 08.10.2020 |
Huffman Coding | 07.10.2020 | 09.10.2020 & 16.10.2020 | 22.10.2020 |
Anagrams | 21.10.2020 | 23.10.2020 | 05.11.2020 |
Quickcheck | 28.10.2020 | 30.10.2020 | 12.11.2020 |
Bloxorz | 04.11.2020 | 06.11.2020 & 13.11.2020 | 19.11.2020 |
Codecs | 18.11.2020 | 20.11.2020 & 27.11.2020 | 03.12.2020 |
Interpreter | 02.12.2020 | 04.12.2020 & 11.12.2020 | 17.12.2020 |
Labs are individual assignments where you get to write Scala programs using the concepts learned during lectures. Labs are submitted by pushing your code on GitLab, see details in the grading and submission page.
Title | Handout Released | Discord Session (Wednesdays 13:15 to 15:00) | Due Date (AoE) | Solution Released |
---|---|---|---|---|
First week tasks | - | 16.09.2020 | - | - |
Exercise Session 1 | - | 23.09.2020 | 27.09.2020 | 28.09.2020 |
Exercise Session 2 | 28.09.2020 | 30.09.2020 | 04.10.2020 | 05.10.2020 |
Exercise Session 3 | 05.10.2020 | 07.10.2020 | 11.10.2020 | 12.10.2020 |
Exercise Session 4 | 12.10.2020 | 14.10.2020 | 19.10.2020 | 20.10.2020 |
Exercise Session 5 | 20.10.2020 | 21.10.2020 | 25.10.2020 | 26.10.2020 |
Exercise Session 6 | 26.10.2020 | 28.10.2020 | 01.11.2020 | 02.11.2020 |
Exercise Session 7 | 09.11.2020 | 11.11.2020 | 15.11.2020 | 16.11.2020 |
Exercise Session 8 | 16.11.2020 | 18.11.2020 | 22.11.2020 | 23.11.2020 |
Exercise Session 9 | 23.11.2020 | 25.11.2020 | 29.11.2020 | 30.11.2020 |
Exercise Session 10 | 30.11.2020 | 02.12.2020 | 06.12.2020 | 07.12.2020 |
Exercise Session 11 | 07.12.2020 | 09.12.2020 | 13.12.2020 | 14.12.2020 |
Exercises are pen and paper style questions that will prepare you for the final exam. Exercises should be done in groups and submitted via Google Drive, see details in the [Group workspaces](exercises/Group workspaces.md) page.
The final exam date will be during the exam session in January 2021. The final exam will cover all material seen during the semester.
Information about exam organization will be communicated by email a few days before the exam.