Functional Programming

Fall 2016

Latest news

The midterm will be held on November 11, 2016

Organisation

Functional Programming is divided into 2 parts. The first part is given on the Coursera platform where lectures and assignments are hosted on our Functional Programming course’s Coursera site. The second part will follow a classical lecture structure, with in-person lectures on Wednesday afternoons. The two portions of the course are:

  • Part 1: Functional Programming Principles in Scala (taught by Prof. Odersky, lectures on Coursera).
    You must register on Coursera with your EPFL email address to access the course and to receive credit for the programming assignments! 
  • Part 2: Declarative Programming (taught by Prof. Kuncak, lectures in-person).

Logistics

Part 1: Functional Programming Principles in Scala

For part 1 of the course, you are required to follow the course online on Coursera by watching the videos and completing the weekly programming assignments.

Important: so that we can link your Coursera identity to your EPFL identity (which will enable us to give you grades), please fill in this short form (once you are registered to Coursera): https://docs.google.com/forms/d/e/1FAIpQLScz3eezDC6S6BqN5cAKPEs_IOiIbuC5OtX_X15gsKTxBZYp6w/viewform

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 13h15 and 14h00, and 14h15 and 15h00. You can attend either session. The sessions will take place in the rooms CO2, CO015, CO016, CO017. Registered students are assigned to specific rooms. Room assignments will be provided shortly.

Attention: Prof. Odersky will give the introductory lecture on Wednesday 21th 2016 at 13h15 in CO2.

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

Finally, 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 are required to attend the weekly lectures by Prof. Kuncak, on Wednesdays at 13h15. We will no longer hold recitation sessions during this time slot.

Teaching assistants will still be available on Fridays from 10:15 to 12:00 in CO 021 to answer questions related to the programming assignments (“séance d’exercices”).

Assignments

The programming assignments will be published on the Functional Programming course’s Coursera website.

For all assignments, students must  work alone – working in groups is not allowed!

Grading

The grading of the course is divided between projects, a midterm, and a final exam 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 November 11, 2016.

More information on the dates for the midterm and final exam will come soon(-ish).

 

Evaluation Weight
Projects 30%
Midterm exam 30%
Final exam 40%

Assignments and Projects (CURRENTLY HIDDEN)

Les projets sont faits en groupes de deux. Chaque groupe ne rend qu’une copie, et les deux étudiants reçoivent, sauf cas exceptionnels, la même note. Le rendu des fichiers, ainsi que la consultation des résultats, se fait à l’aide du système Moodle.

Pour pouvoir rendre vos projets, vous devez d’abord vous inscrire dans le cours Moodle avec le enrolment key PROGA. Pour enregistrer vôtre groupe, la procédure est la suivante: Assumons que “Cédric Lanchat” et “Martin Meier” forment un groupe. Actuellement, il existe dans Moodle un groupe pour chaque nom de famille. Les deux étudiants doivent alors s’inscrire dans un des groupes “Lanchat” ou “Muller”. L’autre groupe reste vide.

Nous n’acceptons aucune remise après la deadline. Au cas ou le système Moodle n’est pas accessible, vous pouvez envoyer vos fichiers par E-Mail à Lukas Rytz.

Le nom du fichier soumis doit être préfixé par le nom de votre groupe. Par exemple, si le nom de votre groupe est ‘Jean-Luc’, le nom du fichier peut être ‘Jean-Luc-project2.zip’.

  • Exercice introductif sur les fonctions récursives (donnée, modèle, solution). Cet exercice ne sera pas noté.
  • 1er projet sur les ensembles (donnée, modèle) à rendre avant jeudi 13 octobre à minuit.
  • 2ème projet sur les codes de Huffman (donnée, modèle) à rendre avant jeudi 27 octobre à minuit.
  • 3ème projet sur le traitement de texte (donnée, modèle) à rendre avant jeudi 10 novembre à minuit.
  • 4ème projet sur les simulations temporelles (donnée, modèle) à rendre avant jeudi 1 décembre à minuit.
  • 5ème projet sur les flots et les contraintes (donnée, modèle) à rendre avant jeudi 8 décembre à minuit (une semaine seulement!).
  • 6ème projet sur LISP (donnée, modèle) à rendre avant jeudi 22 décembre à minuit.

 

Informations sur l’examen final (CURRENTLY HIDDEN)

L’examen aura lieu dans la salle CE 6. Notez les points suivants:

  • L’examen commencera le Vendredi, Décembre 23, à 15h15 et durera jusqu’à 17h00.
  • Matériel autorisé: les transparents du cours imprimés et éventuellement annotés, un résumé optionnel d’une page (recto-verso), un stylo.
  • Amenez vôtre carte CAMIPRO.
  • L’examen portera sur tout le matériel du cours, y compris la première partie de Prolog.

 

Informations sur l’examen intermédiaire (CURRENTLY HIDDEN)

L’examen aura lieu dans la salle CE 6. Notez les points suivants:

  • L’examen commencera le Vendredi, Novembre 18, à 15h15 et durera jusqu’à 16h45.
  • Matériel autorisé: les transparents du cours imprimés et éventuellement annotés, un résumé optionnel d’une page (d’un côté), un stylo.
  • Amenez vôtre carte CAMIPRO.
  • L’examen portera sur tout le matériel jusqu’au cours “Fonctions et états” (inclusif).