AP9, 13 h 45 – 17 h

Slides de la séanceComparer les sujets

Comment suivre la séance

Commencez par la fiche « Choisir un projet », puis le README du squelette choisi. Chaque parcours donne un premier essai, les contrats, les étapes et les commandes de vérification. Pour les types, les quatre carnets accompagnent le projet Mix. Aucun HTML, CSS ou JavaScript n’est à écrire. Un projet comprend du code, des tests personnels et une analyse. La fin de séance sera un point de passage avant la poursuite à la maison.

Sujets au choix

Projet noté à terminer à la maison ; périmètre, barème et échéance seront précisés avant AP9

Choisissez un sujet, puis ouvrez son README après téléchargement. Les parcours marqués « Prototype » sont des premières versions à affiner avant janvier. Les interfaces, données et figures nécessaires sont fournies. Chaque sujet est accompagné d’un petit fascicule d’approfondissement, un cadeau de fin de cours pour les curieux : rien n’y est à rendre.

Langages et machines

Prolonger AP2–AP3 : raisonner sur un programme et le compiler pour une autre machine.

Mini-typeur (inférence de types)

Déduire le type d’un programme de notre langage sans l’exécuter, jusqu’au polymorphisme de let. Quatre carnets guident chaque palier ; le squelette fournit le lexer, le parser et les tests.

Lire le sujetTélécharger le squeletteFascicule d’approfondissement (PDF)

Carnets et repères du sujet

Diaporama de référence

1. Raisonnons avant l’exécution · bronze

Écrivez des règles sur les nombres, les booléens et les branches. Trouvez une erreur de type et une erreur que le typage ne prévient pas.

Slides 6 à 12Elixir : une clause par nœud, with … else · poly, chap. 2 et 5.

Run in LivebookTélécharger le .livemd

2. Résoudre des contraintes · argent

Propagez une substitution, décomposez les types de fonctions et empêchez un type de se contenir lui-même.

Slides 13 à 21Elixir : maps pour la substitution, MapSet · poly, chap. 5.

Run in LivebookTélécharger le .livemd

3. Quel type a cette fonction ? · argent

Créez des inconnues pour les paramètres. Déduisez des contraintes à partir du corps et des appels.

Slides 22 à 29Elixir : un état en map, Enum.map_reduce/3 · poly, chap. 5.

Run in LivebookTélécharger le .livemd

4. Réutiliser une identité · or

Généralisez les bonnes inconnues à let, puis instanciez à chaque usage. Expliquez pourquoi un paramètre reste monomorphe.

Slides 30 à 38Elixir : MapSet.difference/2, Enum.reduce/3 · poly, chap. 5.

Run in LivebookTélécharger le .livemd

IA et apprentissage

Prolonger AP4–AP5 : comprendre les gradients, reconstruire une image ou apprendre avec de l’attention.

Concurrence et systèmes répartis

Prolonger AP6–AP8 : coordonner des calculs, protéger un état partagé et faire converger des copies.

Éditeur concurrent CRDT · version guidée

Insérer, supprimer et fusionner un texte répliqué. Trois fonctions à compléter ; le parcours de la séquence, les GenServers et les tests sont fournis. Une interface web prête à lancer affiche les deux copies et les snapshots. Vous n’écrivez aucun HTML, CSS ou JavaScript.

Lire le sujetTélécharger le squeletteFascicule d’approfondissement (PDF)

Algorithmique et optimisation

Répartir des élèves fictifs selon leurs vœux et comparer les garanties de plusieurs algorithmes.

Organisation du projet

Les repères communs pour démarrer en cours et poursuivre à la maison.

Laboratoires et défis facultatifs

Ces pistes prolongent le sujet choisi, après son socle. Elles ne constituent pas un autre projet à rendre ; le périmètre attendu sera annoncé en cours.

Pour aller plus loin

Après les quatre carnets — Étendre le typeur

Ajoutez des paires, des projections ou un diagnostic localisé, en reprenant votre propre code.

Run in LivebookTélécharger le .livemd

Un bout de syntaxe oublié ?

Le poly reprend le langage aux chapitres 1 à 4, avec ses exemples et leurs résultats.

Retour à l'accueil