Nathann Cohen
Chercheur CNRS en Informatique

6 Février 1986 – Français – Nice
nathann.cohen@gmail.com
https://www.steinertriples.fr/ncohen/
Français, Anglais (courant)
+33 6 95 78 16 46

Publications scientifiques
https://goo.gl/M9YXJy
En quelques mots

Curieux et motivé, je souhaite m'investir dans le traitement et l'analyse de données publiques.

Je m'intéresse à l'informatique depuis le détail d'implémentation jusqu'à la théorie, aux mathématiques depuis toujours, et aux données en tant que citoyen et en tant qu'ancien étudiant en statistiques.

Je maintiens des jeux de données publiques, traitées et hébergées sur des serveurs que j'administre.

Mes centres d'intérêt
  • La théorie de l'informatique
  • Les mathématiques
  • Les algorithmes
  • Le code source
  • L'optimisation
  • Les données
  • Le mouvement Open Data
  • La Dataviz
  • Le Machine Learning
Compétences
  • Bash, C, Cython, HTML/CSS, Python, JavaScript
  • Outils: Tout ce qui vit dans une console
    (e.g. Git, Emacs, Grep, Jq, ...)
  • Algorithmes et structures de données
  • Habitué aux prises de paroles en public
  • Habitué au développement Open Source (≈ 7 ans)
Parcours professionnel
2014 - Chercheur Associé à INRIA dans l'équipe COATI (Sophia Antipolis)
2012 - Chercheur au CNRS en Informatique / Université Paris Sud
2011 - 2012Post-doctorat en Géométrie Discrète, Université Libre de Bruxelles
2008 - 2011Chargé de TD/TP à l'école d'ingénieur Polytech'Nice
2008 - 2011Doctorat, projet MASCOTTE, I3S/INRIA Labs, Sophia Antipolis (France)
Diplômes
2008 - 2011 Doctorat d'Informatique, Université de Nice-Sophia Antipolis
Titre : Three years of Graphs and music
2006 - 2008 Master ‘Statistiques, Informatique & Techniques Numériques’
2003 - 2006 Licence de Mathématiques
Enseignement (≈ 250 heures)
  • 2017 Algorithmes (2e année)
  • 2017 HTML/CSS (1re année)
  • 2016 Bash (3e année)
  • 2011 Mathématiques Discrètes (3e année)
  • 2010 Algorithmes et introduction à Java (3e année)
  • 2010 Jeux et Stratégies (1re année)
  • 2009 Introduction à UNIX (3e année)

Projets Open Data

Financements de l'Agence Nationale de la Recherche (JavaScript)

Le site de l'Agence Nationale de la Recherche recense en ligne l'historique des projets financés sur des pages individuelles. Ces données méritent cependant d'être ouvertes afin de permettre des analyses statistiques: elles sont maintenant extraites par web scraping et disponibles au format JSON.

https://www.steinertriples.fr/ncohen/data/ANR_archive/
Base de données des Nominations au Journal Officiel (Bash, Makefile, JavaScript)

Les nominations décidées par le Président de la République ou les membres du Gouvernement sont rendues publiques à travers le Journal Officiel. Ces données ne sont malheureusement pas structurées et ne permettent donc pas de traitement automatique.

Pour cette raison, je développe et je mets à jour une base de données qui recense ces nominations (e.g. préfets, ambassadeurs, etc.) et les rend disponibles au format XML:

https://www.steinertriples.fr/ncohen/data/nominations_JORF/

Cette base de données répond à des requêtes nominatives mais également portant sur le type de poste ou sur des dates de nomination. Elle permet, par exemple, de maintenir automatiquement à jour la liste des préfets de départements.

https://www.steinertriples.fr/ncohen/data/prefets_departements/
Projets passés (Python, Perl, Bash, SPARQL)
  • Construction d'une base de données de citations tirées des publications scientifiques du site arXiv.org. Cette extraction se fait à travers des scripts écrits en Python, Perl et en Bash. Elle nécessite la création de bases de données intermédiaires (noms de journaux scientifiques, abbréviations, éditeurs, etc.).
  • Expérimentations sur les Réseaux de Neurones avec TensorFlow afin d'identifier les différentes voix présentes dans un extrait sonore.

  • PDF_table_scraper -- un script python permettant d'extraire des tableaux inclus dans des fichiers PDF. Ce script a été utilisé par l'association Regards Citoyens, qui défend l'utilisation de l'Open Data dans les institutions françaises

    https://github.com/regardscitoyens/PDF_table_scraper

    J'ai également réalisé pour eux en D3.js une page simple permettant de visualiser leur comptabilité, ou le graphique de présence des députés sur https://www.nosdeputes.fr/

  • semantically_augmented_sage -- un brouillon d'interface entre le logiciel SageMath et DBpedia, la base de données sémantiques. Les objets Python de Sage sont associés à un objet DBpedia dont les propriétés sont lues à travers des requêtes SPARQL.

    https://github.com/nathanncohen/semantically_augmented_sage
  • J'héberge également quelques jeux de donnés mineurs au format JSON, mis à jour automatiquement par web scraping comme les agendas du Président de la République et du Premier Ministre, ou la base des études d'impact des lois en préparation.

    Ils sont disponibles à l'adresse suivante:

    https://www.steinertriples.fr/ncohen/data/

Développement logiciel pour la Recherche

SageMath

J'utilise SageMath (un logiciel de mathématiques) pour mon travail de chercheur, et je l'ai enrichi/modifié autant que j'ai pu entre 2009 et 2016. J'ai soumis 650+ jeux de modifications et vérifié 600+ modifications proposées par d'autres contributeurs. J'étais de facto responsable de tout le code lié à la Théorie des Graphes, la Programmation Linéaires et les Designs Combinatoires. J'ai également participé à l'écriture d'un livre expliquant son utilisation à des étudiants de premier cycle universitaire.

Sage est écrit en Python et Cython (=Python+C), afin que les parties critiques du code soient aussi efficaces que du C pur. Je prends un soin particulier à implémenter ses fonctions les plus centrales, et à m'assurer que les algorithmes et les structures de données soient aussi optimisées que possible. Sa bibliothèque de théorie des graphes offre un champ d'expressivité unique.

  • Théorie des Graphes: Sage peut construire plus de 150 graphes connus, ainsi que des familles de graphes d'intérêt théorique. Il contient des centaines de fonctions de graphes représentants les concepts principaux définis par les chercheurs, et inclut des solveurs exacts pour des problèmes NP-Complets. Certaines de ses fonctionnalités ne sont disponibles nulle par ailleurs (en particulier les algorithmes de reconnaissance).

  • Programmation Linéaire: Sage possède sa propre interface avec les solveurs de Programmes Linéaires les pus connus (GLPK, Coin-OR CBC, Gurobi, ou CPLEX). C'est là son atout principal pour résoudre les problèmes NP-Complets que les chercheurs rencontrent chaque jour.

https://www.steinertriples.fr/ncohen/contributions.php
Bases de données mathématiques (Python)

Les Designs Combinatoires et les Graphes Fortement Réguliers sont des objets mathématiques dont les constructions sont éparpillées dans la littérature scientifique. Dans deux bases de données (intégrées à Sage), j'ai tenté de réunir toutes les constructions connues en plus de donner une façon systématiques d'assurer la reproductibilité des constructions.

Ces bases de données sont en réalité une combinaison de données pures et de constructions récursives issues des résultats découverts par les chercheurs.

Designs Combinatoires
https://goo.gl/IMRu5q
Graphes fortement réguliers
https://arxiv.org/abs/1601.00181
Flinders Hamiltonian Cycle Project Challenge (2016)(Python, Cython, C/C++, D3.js)

En équipe avec David Coudert (chercheur INRIA) nous avons remporté en 2016 un concours d'ingéniérie algorithmique organisé par la Flinder University d'Adelaïde (Australie).

Ce challenge international portait sur le problème du Cycle Hamiltonien. Il s'agit d'un problème classique en théorie des graphes, réputé difficile à résoudre. Il est aussi célèbre sous sa variante du problème dit du “voyageur de commerce”, qui doit honorer de nombreux rendez-vous dans des villes éloignées sans jamais retourner sur ses pas.

https://goo.gl/d1udo1