Academic curriculum (Université Paris-Est Marne-la-Vallée)
- 2010 : computer science PhD defense (reporters : Prof. Thierry Lecroq, Dr. HDR Didier Parigot, examiner : Dr. Julien Allali)
- 2006 : beginning of a computer science PhD thesis "Research of similarity in source code" supervised by Prof. Gilles Roussel
- 2005→2006 : second year of computer science master (specialized in research) with honors; main themes: network software, sequence algorithmics
- 2005→2006 : first year of computer science master (maîtrise) with honors
- 2004→2005 : computer science "licence" (bachelor) with honors
University positions (Université Paris-Est Marne-la-Vallée)
- 2010→... : contractual teaching assistant
- 2008→2010 : "attaché temporaire d'enseignement et de recherche" (temporary position for teaching and research)
- 2006→2009 : "moniteur allocataire de recherche" (French governmental PhD grant for research and teaching)
Research
Finding, modeling and categorizing similarities inside source code is my main area of research. Among the applications of the studied techniques are the management of clones of codes to improve its maintenance and reliability, and the analysis of software programs to highlight plagiarism. This latter case implies to address the problem of the numerous obfuscation patterns that may be encountered (addition, removal, substitution, inlining, outlining...).
I'm mostly interested in fingerprinting source code represented by syntax trees. A direction of research is to improve the recall offering by such fingerprints by multiple forms of abstract syntax trees. Representation is one of the problems to address; among the others are the optimization of the storage and indexation of fingerprints and the algorithmic techniques to gather similarities hint by equal fingerprints. Some of these techniques relies on the use of suffix indexation structures.
Another point of interest is the qualification, quantification of matches of source code and the relationships that can be infered in order to offer a more friendly view of the similarities hidden in a source code for a human reviewer.
Selected publications can be found on my research page.
Teaching
Main teaching fields (lectures and tutorials) :
- General algorithmics (bachelor level): structures like arrays, lists, trees, graph and afferent algorithms
- General networking (master level) : Ethernet, IP transport and applicative protocols (UDP, TCP; HTTP, DNS, ...) for master level
- Java programming (bachelor and master level): beginner lessons, standard API use, Swing UI library, network programming, concurrency, servlets
- C programming (bachelor level) : mainly to illustrate algorithmics and operating system classes
- Compilation and code generation (master level) : lexical, syntactic and semantic analysis of code, code generation from abstract syntax trees
Further information about teaching activities (with the exhaustive list of classes) can be found in the teaching section of my site.
Computer science skills
Practised languages (and their ecosystems)
- Java : language, standard API (IOs, concurrency, net...), virtual machine, Eclipse, some miscellaneous libraries
- C(++) : language, standard library, POSIX system calls
- Python : language, library
- (O)Caml : language, library
Operating systems
- GNU/Linux (daily use)
- FreeBSD (sometimes)
- Windows (occasionnaly)
Sundries
- Language skills : French (mother thongue), English (mainly scientific), German (some notions)