Ce CV synthétique présente les éléments principaux de mon parcours universitaire et professionnel avec les domaines de recherche abordés et les enseignements réalisés.
Parcours académique (Université Paris-Est Marne-la-Vallée)
- 2010 : thèse de doctorat en informatique (rapporteurs : Thierry Lecroq, Didier Parigot, examinateur : Julien Allali)
- 2006 : début de doctorat consacré à la recherche de similarité dans du code source, thèse dirigée par Gilles Roussel
- 2005→2006 : seconde année de master informatique (spécialisation recherche) avec mention TB; thèmes principaux : logiciels des réseaux, algorithmique des séquences
- 2003→2005 : licence et première année de master informatique
Postes d'enseignement et de recherche
- 2011→... : enseignant contractuel, vacataire et auto-entrepreneur (Université Paris-Est Marne-la-Vallée puis Gustave-Eiffel et Greta93)
- 2009→2011 : attaché temporaire d'enseignement et de recherche (Université Paris-Est Marne-la-Vallée)
- 2006→2009 : moniteur allocataire de recherche (Université Paris-Est Marne-la-Vallée)
Recherche
Chercher, modéliser et catégoriser les similarités dans le code source est mon principal thème de recherche. Parmi les applications des techniques étudiées nous pouvons citer la gestion de clones pour une meilleure fiabilité et maintenance du code ainsi que l'analyse de sources pour la mise en évidence de procédés de plagiat. Cela requiert notamment de pouvoir contrer de nombreuses tactiques d'obfuscation (addition, suppression, substitution, développement et factorisation de code notamment).
Je m'intéresse particulièrement à la génération d'empreintes de code source à partir d'arbres de syntaxe. Un axe de recherche est d'améliorer le rappel de telles empreintes par l'usage de multiples niveaux d'abstraction d'arbres de syntaxe. Il s'agit également de chercher à optimiser le stockage et l'indexation de ces empreintes et à les utiliser judicieusement pour inférer des zones de similarité sur le code source. À cet effet nous explorons différentes techniques algorithmiques dont certaines basées sur des structures d'indexation de suffixes.
Un autre point d'intérêt est la qualification et la quantification des correspondances relevées ainsi que leurs relations mutuelles afin d'offrir des moyens de visualisation de similarités qui soient plus agréables pour un usage humain.
Une sélection de mes publications peut être trouvée sur ma page consacrée à la recherche.
Enseignement
Principaux domaines d'enseignement (cours et TD/TP) :
- Algorithmique générale (niveau licence): structures de données (tableaux, listes, arbres, graphes, automates...) et algorithmes afférents
- Bases de réseau (niveau master) : Ethernet, protocoles de transport IP et applicatifs (UDP, TCP, HTTP, DNS...)
- Programmation Java (niveau master et licence) : introduction au langage, utilisation de la bibliothèque standard, bibliothèque graphique Swing, programmation réseau, problématiques de concurrence, applications web (servlets), Java Enterprise Edition (CDI, JPA...)
- Programmation mobile Android (niveau licence et master) : utilisation de l'API Android pour la programmation d'applications (activités, services, fournisseurs de contenu, bibliothèque Jetpack Compose...)
- Frontend web (niveau licence et master) : technologies web (HTML/CSS, JavaScript, TypeScript), frameworks JavaScript (Angular, React)
- Programmation C et C++ (niveau licence et master) : principalement dans le champ de l'algorithmique et de la programmation système
- Compilation et génération de code (niveau master) : analyses lexicale, syntaxique et sémantique du code, génération de code depuis des arbres de syntaxe abstraits
Formations :
- Licence maths-info 2ème année (programmation C)
- DUT informatique 2ème année (programmation Java, développement mobile Android et frontend web)
- Master informatique 1ère année (programmation réseau Java)
- Formation d'ingénieur ESIPE informatique 2ème année (interfaces graphiques sous Android)
- Master informatique 2ème année (programmation Android, frontend web)
- Master technologies et réseaux des télécommunications (TRT) 2ème année (programmation Android, backend web Java, programmation C++)
- Formation d'ingénieur ESIPE Electronique Informatique Systèmes Communiquants (EISC) 3ème année (programmation Java réseau, Android)
Plus d'informations concernant mes activités d'enseignement peuvent être trouvées dans la section enseignement de mon site.
Volume horaire d'enseignement sur l'année 2021-2022 (340h ETD) :
- DUT 2 informatique : 140 heures ETD
- Master informatique et télécoms 2ème année : 100 heures ETD
- Formations d'ingénieurs ESIPE informatique 2ème année et EISC 3ème année : 100 heures ETD
Volume horaire d'enseignement sur l'année 2022-2023 (380h ETD) :
- DUT 2 informatique : 189 heures ETD
- Master informatique et télécoms 2ème année : 101 heures ETD
- Formations d'ingénieurs ESIPE informatique 2ème année et EISC 3ème année : 90 heures ETD
Activités de développement
J'interviens en tant que développeur informatique indépendant pour :
- la réalisation de sites web (compilation statique, backend et frontend)
- la réalisation d'applications mobiles Android
- le conception et l'implantation de logiciels et bibliothèques Open Source ou non (principalement en Java/Kotlin et Python)
Compétences générales en informatique
Langages (et écosystèmes de développement) pratiqués
-
Langages régulièrement pratiqués :
- Java et Kotlin : langage, API standard Java (entrées/sorties, concurrence, réseau...), API JEE, API Android, machine virtuelle Java, Eclipse, bibliothèques annexes
- C(++) : langage, bibliothèque standard, appels systèmes
- Python : langage, bibliothèque standard, diverses bibliothèques annexes (numpy, aiohttp...)
- JavaScript et TypeScript (et HTML/CSS) : Vanilla JavaScript, frameworks JavaScript (Angular, VueJS, React...)
-
Langages moins pratiqués :
- OCaml : langage, bibliothèque standard
- Scala : langage, bibiothèque standard
Systèmes d'exploitation
- GNU/Linux (différentes distributions : Debian, ArchLinux...) et Android : usage quotidien
- FreeBSD : usage occasionnel
- Windows : usage occasionnel
Divers
- Langages naturels : français (langue maternelle), anglais (usage régulier), allemand (non pratiqué depuis le lycée)... et des milliers d'autres langues jamais pratiquées (telles que le Tagalog ou le Navajo).
- Autres intérêts : électronique, domotique...