Cette page est la page officielle de la partie " Typage " du cours du 1er semestre 2020/2021 intitulé
« Typage et Analyse Statique »
qui s'adresse aux étudiants de master de l'UPMC.
La description de la brochure du module se trouve
ici.
Nouvelles fraîches
- nouvelle date de rendu : synthèse d'article dans la rubrique Examens
- nouvelles dates des rendus : devoir de programmation et synthèse d'article dans la rubrique Examens
- mise à jour de la répartition des articles dans la rubrique Examens
- première répartition des articles dans la rubrique Examens
- consignes dans la rubrique Examens pour le choix d'un article sur le typage
Notes de cours, TD et TME
- 7ème cours
- présentation du typage graduel, tutorial Jeremy Siek à POPL 2017 (lien)
- un mot sur le système de types de Rust, présentation de Testard à l'OSIS 2016, scope sur doc.rust-lang.org
- annales d'examen, voir rubrique Examens
- 6ème cours
- polymorphisme parametrique, lambda-expressions en Java et fusion des modèles fonctionnel et objet en Scala (PDF)
- exercices generics
- faire tourner le programme suivant en java 1.8 TestLambda.java (avec Etudiant.java)
- traduire les fonctions fold_left, fold_right, map2, ..., du module List d'OCaml en java 1.8
- passage du modèle Visiteur en generics (partiel nov2012 (LI314))
- exercices Scala
- faire passer les exemples du cours sur les évaluateurs d'expressions et de termes, et l'itérateur sur les chaines de caractères
- avancer dan sla synthèse d'article
- 5ème cours : surcharge en Java et autres modèles de surcharge (PDF)
- comparaison algorithmes de résolution de la surcharge en Java 1.5 et en java 1.2
- simulation d'algorithme de surcharge en Java 1.5 avec production de code ZAM (projet Potdevin-Vaugon)
(rapport et javaz.tgz)
- simulation d'algorithme de surcharge de Dul et Maslia (rapport et jar)
- présentation de la liste d'articles (voir rubrique Examens)
- Finaliser le typeur "from scratch" (page spip)
- 4eme cours : polymorphisme par sous-typage structurel (OCaml) et nominal (Java) :
(PDF) - cours 7 et 8 de mpil 2017/2018 et chapitre 15 de DA-OC).
- Finaliser le typeur "from scratch" (page spip)
- Adapter le texte du partiel de novembre 2012 de LI314 (cf lien) sur un visiteur paramétré en OCaml
(questions 1 à 4).
- Comment ecrire en Java le code suivant :
let f x = x#toStr() ^"\n";;
- Adapter en Java l'exemple des points (en OCaml) avec méthodes binaires du cours.
- 3eme cours : typage d'un mini-ML PDF)
-
test d'un typeur (cf lien) d'un mini-ML
- version sans analyse syntaxique en OCaml (lien) ou Fsharp (lien).
- suivre le fichier d'exemples (cf lien).
- ajout des traits impératifs à un typeur (cf lien).
- ajout d'une coercition de type : (e : type)
- si vous ne connaissez pas OCAML,
- suivez le cours OUV (ouverture) des M1 STL
- et/ou lisez les 4 premiers cours de L3 suivant : MPIL
- réalisation d'un typeur from scratch, sujet en ligne : TD3
- 2ème cours : lambda-calcul simplement typé
(PDF)
- construire les arbres de typage des termes suivants :
- K I I
- idendité : I I = (\x.x)(\x.x)
- S K K (correction)
- add 2 2 = (\mn. m n) (\fx. f ( f x)) (\fx. f ( f x))
- que déduire des types de I et 2 ?
- lire et tester un typeur en OCAML ou un typeur typeur en F#.
- si besoin de mise à niveau en ocaml :
- comment étendre ce typeur pour introduire le polymorphisme du Let ?
Implanter votre proposition.
- 1er cours : présentation du semestre (PDF) et lambda-calcul pur (transparents : PDF)
-
Programmes et document :
Équipe pédagogique
L'équipe pédagogique est ainsi constituée:
Emmanuel Chailloux (LIP6), Romain Demangeon (LIP6), Antoine Miné (LIP6), Matthieu Journault (LIP6).
Pour envoyer un courrier à l'équipe pédagogique, cliquez ici.
Examens et notation
L'évaluation de ce module comprend :
- partie typage pour 50%
- une réalisation d'un typeur (sujet sur ce lien) comptant pour 15%
- à rendre au plus tard le lundi 16.11.20 à 11h59 (matin) en CLIQUANT ICI
- une synthèse d'article (liste des articles) comptant pour 15%
-
indiquer vos choix en CLIQUANT ICI et en précisant au moins 4 voeux d'articles. Vu les délais courts, on essaiera de valider le choix rapidement.
- à rendre au plus tard le samedi 28.11.20 à 23h59 en CLIQUANT ICI
- répartition des articles au 12.11.20 (10.11.20, 09.11.20)
- exemples de rapports 2011 : Bennater-Couillec, Deharbe-Salvucci
- taille des rapports : entre 10 et 15 pages (hors annexes).
- un examen écrit individuel comptant pour 20%
- sur la partie analyse statique pour 50%
- interrogation(s) ou rendu(s) de TME (10% de la note)
- présentation d'article (20% de la note)
- projet initié en TME (20% de la note)
Langages et environnements de travail
Bibliographie
Quelques lectures autour de la fiabilité logicielle et des langages :
Ouvrages de référence :
- sur le typage
- Types and Programming Languages - B. Pierce - The MIT Press
- sur l'analyse statique
- Principles of Program Analysis - F. Nielson, H. Nielson et C. Hankin - Springer
Autres liens
Remarques?
dernière modification : 25/11/2020