← Parcours académique

Master Informatique — Parcours STL

Sorbonne Université · LIP6 / CNRS2023 — 2025120 ECTS · M1 + M2Paris (Jussieu)

Formation en ingénierie logicielle adossée au LIP6, l'un des plus grands laboratoires d'informatique universitaires associés au CNRS. Le cursus forme des ingénieurs capables de raisonner formellement sur le logiciel, de concevoir des systèmes complexes et de comprendre ce qui se passe sous les abstractions — théorie des langages, algorithmique avancée, systèmes distribués, génie logiciel. Chaque module se concrétise par un projet substantiel codé et documenté.

Ce qui a été maîtrisé

Théorie des langages et compilation — implémentation complète d'un langage en 4 niveaux successifs (ILP1→ILP4) : noyau fonctionnel, boucles, exceptions, classes et objets. Analyseur ANTLR4, interprète Java, compilateur Java→C. Prolongé par un évaluateur-typeur pour le lambda-calcul en Scala (alpha-conversion, inférence de types par unification, polymorphisme) et la compilation de closures vers machines virtuelles.

Algorithmique avancée — ROBDD (Diagrammes de Décision Binaires réduits et ordonnés), clone partiel d'egrep avec pipeline NDFA→DFA→mDFA (Aho-Ullman et KMP), complexité paramétrée via k-Vertex Cover : kernelization, décomposition en couronne, branch-and-reduce, speedup jusqu'à 5 000× démontré sur graphes denses.

Programmation concurrente et systèmes distribués — réseau de capteurs BCM4Java, modèles mémoire partagée, Go-routines, Lustre/Esterel, model-checking SPIN. Moteur de recherche LIBSEARCH sur 1 800 livres Gutenberg en Scala/Play + Vue.js : indexation O(1), Jaccard, closeness centrality. Noyau de langage impératif en OCaml/Prolog (APS0→APS2).

Génie logiciel et sûreté applicative — modernisation d'un système legacy PHP (+440% perf, élimination injections SQL), plateforme TalenSwipe en équipe de 6 (Next.js / Spring Boot / Docker / Agile), cartes à collectionner décentralisées sur Ethereum (ERC-721, Solidity, MetaMask), analyse de 82 466 inspections NYC avec Elasticsearch et Kibana.

Projet de recherche PSTL au LIP6 — immersion en laboratoire : rétro-ingénierie du générateur DataGen, benchmark sur 6 099 instances JSON Schema issues de 6 datasets réels, caractérisation formelle des limites des générateurs optimistes. Rapport en continuité des publications de l'équipe BD (EDBT 2021, arXiv 2021-2022).

Contact référence

Jacques Malenfant

Professeur, LIP6 — Sorbonne Université · Référent académique

Jacques.Malenfant@lip6.fr

Stack maîtrisée

Java
ScalaScala
OCamlOCaml
PythonPython
CC
PHPPHP
TypeScriptTypeScript
SoliditySolidity
JavaScriptJavaScript
Spring BootSpring Boot
Next.jsNext.js
Vue.jsVue.js
ReactReact
Play FrameworkPlay Framework
DockerDocker
PostgreSQLPostgreSQL
MySQLMySQL
ElasticsearchElasticsearch
KibanaKibana
GitHubGitHub
Théorie des langages & compilation
Lambda-calcul & typage
Complexité paramétrée (FPT)
Automates (NFA/DFA/mDFA)
Algorithmique des graphes
Programmation concurrente
Blockchain / Smart Contracts
Kernelization
Model-checking (SPIN)

Projets

  • Moteur complet sur 1 800 livres Gutenberg (18M+ mots). Recherche par mots-clés, regex et KMP, indexation O(1), pipeline NFA→DFA→mDFA, similarité Jaccard, closeness centrality. Recherches sub-seconde.

  • Kernelization, décomposition en couronne, noyau polynomial 3k, algorithme branch-and-reduce VCB. Speedup démontré jusqu'à 5 000× sur graphes denses, évalué sur instances aléatoires G(n,p).

  • Application full-stack en équipe de 6. Matching bidirectionnel, authentification JWT, messagerie intégrée, Docker. Gestion de projet Agile/Scrum avec Jira.

  • Migration PHP legacy → PDO avec requêtes préparées. Élimination complète des vulnérabilités SQL injection. Gain de performance +440% validé par tests de charge Siege.

  • Alpha-conversion, substitution, inférence de types par unification, polymorphisme faible. Compilation avancée de closures et d'exceptions vers machines virtuelles.

  • NFTs ERC-721 sur blockchain Ethereum. Smart contracts Solidity, interface React/MetaMask, optimisation gas avec OpenZeppelin.

  • Pipeline complet : regex → arbres syntaxiques → NDFA → DFA → minimisation (Aho-Ullman, Rabin-Scott, Brzozowski). Algorithme KMP pour les motifs exacts. Validation sur corpus Gutenberg.

  • 11 requêtes DSL complexes sur 82 466 inspections. Analyse géospatiale, agrégations temporelles, dashboard opérationnel. Mapping optimisé pour l'analyse temps réel.

  • Système de supervision distribué pour alertes environnementales (détection de feux). Architecture à base de composants BCM4Java, gestion de la concurrence et décentralisation.

  • Langage fonctionnel puis impératif : affectation, structures de contrôle, passage par valeur/référence, gestion des tableaux, mémoire dynamique.

  • Langage ILP1→ILP4sept. – déc. 2022

    Conception et implémentation d'un langage en 4 niveaux successifs : noyau fonctionnel → boucles → exceptions → classes et objets. Analyseur ANTLR4, interprète Java, compilateur Java→C, bibliothèque d'exécution C.

  • Génération, réduction, ordonnancement de ROBDD. Comparaison expérimentale rigoureuse avec l'article Newton & Verna.

  • Rétro-ingénierie du générateur DataGen. Benchmark sur 6 099 instances JSON Schema issues de 6 datasets réels (Snowplow, Kubernetes, GitHub, WashingtonPost…). Caractérisation formelle des limites des générateurs optimistes. Rapport en continuité des publications de l'équipe BD (EDBT 2021).