Programmation Avancée

ENS Paris-Saclay, L3, 2023-2024

Les cours sont donnés par Jacques-Henri Jourdan et Armaël Guéneau, et les TPs par Arnaud Golfouse.

Informations pratiques

Les cours et TP se passent le vendredi . Les cours sont de 11h15 à 13h15 en salle 1Z61 et les TPs de 14h15 à 16h15 en salle 1S53 (cf l'emploi du temps).

Afin de simplifier l'installation des outils nécessaires à ce cours, il est conseillé de suivre les instructions décrites sur cette page.

Évaluation

L'évaluation de ce cours se fait avec un examen final (40%), un projet (40%) et le contrôle continu des TPs à rendre (20%: 6 meilleures notes retenues sur 12 TPs).

La seconde session (rattrapage) est un oral, dont la note compte pour 40%, les notes du projet (40%) et du contrôle continu (20%) étant reportées.

Projet

Le projet est disponible ici : sujet et code de démarrage.

Le projet est à rendre avant dimanche 19 mai 2024, à 23h59, par email aux deux intervenants du cours.

Erratum : dans tests/runtests.ml, l'implémentation de la fonction test_file est à modifier par :


let test_file test_file =
  if not (Filename.check_suffix test_file ".co.lua") then (
    Printf.printf "============== Running interpreter written in OCaml  ==============\n";
    test_long run_ocaml_interp_on_file test_file;
    Printf.printf "\n============== Running interpreter written in Rust ==============\n";
    test_long run_rust_interp_on_file test_file;
  );
  Printf.printf "\n============== Running interpreter written in OCaml (CPS variant) ==============\n";
  test_long run_ocaml_cps_interp_on_file test_file
     

Examen final

L'examen final est prévu le vendredi 31 mai 2024, de 11h15 à 13h15.

Sujets d'examen des années précédentes : 2022, 2023

Cours 0 (26 janvier) : présentation, installation des machines

Cours 1 (2 février) : OCaml : modèle d'exécution et représentation des valeurs

Cours 2 (9 février) : modules

Cours 3 (16 février) : introduction à Rust (types, propriété, emprunts et durées de vie)

Vacances (23 février)

Cours 4 (1 mars) : surcharge

Cours 5 (8 mars) : programmation orientée objet

Cours 6 (15 mars) : programmation avancée en Rust

Cours 7 (22 mars) : GADTs

Cours 8 (29 mars) : gestion mémoire

Cours 9 (5 avril) : effets et monades

Cours 10 (12 avril) : fonctions comme valeurs de première classe

Vacances (19 avril)

Cours 11 (26 avril) : pratique de Rust

Semaine d'aide au projet (3 mai)

Vacances (10 mai)

Cours 12 (17 mai) : parallélisme et concurrence

Examen le 31 mai (horaires du cours habituelles)