XD blog

blog page

ensae


2016-11-06 Entrepreneurs d'Intérêt Général

Le gouvernement lance un programme intéressant : Entrepreneurs d'Intérêt Général. 10 projets à mener par 10 lauréats choisis sur audition, rémunérés par un CDD, ses problématiques liées au numérique. Clôture des candidatures : 21 novmbre 2016.

2016-10-21 J'aimerais avoir le temps de lire

Si j'avais le temps entre la préparation de mes cours et tout le reste, je m'arrêterais une journée pour lire JMLR. J'étais étonné de constater qu'il y a régulièrement des articles sur des librairies de calculs et que celle-ci sont plus souvent en Python. Quelques articles :

Parmi les librairies, la dernière est intéressante. Le calcul GPU cherche encore son standard.

2016-10-18 Regard personnel sur le Big Data

Regard personnel sur le Big Data paru dans Variances.

2016-10-13 Histoire de données et éléments de réflexions pour l'avenir

Lectures intéressantes parues dans Variances.

2016-06-14 Post de Microsoft sur le hackathon avec l'ENSAE et la Croix-Rouge

Je relaie les deux articles publiés par Microsoft à propos de la série de hackathons académiques dont celui organisé à Paris avec l'ENSAE et La Croix-Rouge : Developing the Next Wave of Data Scientists, Firing up next-generation data scientists. Le premier article contient un lien vers les vidéos réalisées pour chaque événement.

J'ai participé à celui-ci.

2016-05-25 2 Challenges Big Data

Data Science Game 2016 C'est une compétition internationale regroupant des équipes de 4 étudiants d'une même école (doctorants inclus !). L'évènement étant en partie créé par l'ENSAE, l'école se doit d'y participer! Princeton, la National University of Singapour, Télécom ou la TSE se sont déjà inscrits... Bref, l'évènement est parrainé par Capgemini et Microsoft, il y aura du beau monde et de la visibilité !

Paris Summer Innovation Fellowship En partie organisé par Data for Good x Bayes Impact, c'est un programme d'innovation intensif de 2 semaines pour vous permettre de développer un projet de data science à impact social. Les participants recevront une bourse de financement et des conseils d'experts tels que Paul Duan (fondateur de Bayes Impact), Rand Hindi (fondateur de Snips) ou Max Song (ex genetic engineer à la NASA). Ça se déroule dans les superbes locaux de FiveByFive (Paris 10ème) avec une présentation prévue à la mairie de Paris en septembre.

A propos des Big Data, Olivier Grisel (un des concepteurs de scikit-learn) est passé sur France Inter dans la tête au carré Nos vies à l'heure des "big data".

2015-11-30 Hackathon ENSAE - Microsoft - Croix-Rouge

Ce hackathon que j'ai contribué à organiser fait partie des moments que je ne pourrai jamais oublier tant il fut incroyable.

Un grand merci à toutes les personnes qui ont participé, en particulier les élèves qui ont montré une détermination sans faille jusqu'à la dernière minute.

2015-06-03 Le chapeau du Petit Prince

L'année scolaire se termine et je suis encore surpris d'être arrivé au bout. J'ai changé tous mes cours, utilisé les notebooks que je ne connaissais pas il y a un an, préparé deux autres cours qui ont quasiment doublé mes heures de présence à l'ENSAE. J'ai passé des heures, souvent nocturnes, à chercher comment lancer facilement des jobs sur des clusters depuis des notebooks. Je regarde un peu effaré le nombre de téléchargements (19.000 durant le dernier mois) d'un des modules que j'ai commencé voici un an et demi pour automatiser la mise à jour de mes cours, la conversion des notebooks en page HTML, en slides, en PDF, la récupération des mails envoyés par les élèves.

Je me suis beaucoup amusé. J'ai aussi été agréablement surpris de voir les élèves inonder les clusters de jobs, se lancer dans des projets de machine learning avec plaisir, se montrer curieux, apprendre la programmation et l'apprécier. Et le dire !

Je me souviens d'un jour où je me suis retrouvé à La Maison des Contes et des Histoires. Une conteuse et des enfants de trois à dix ans, ils étaient tous conquis au bout de vingt minutes. Je n'imaginais pas que je vivrais quelque chose de similaire cette année, des enfants de huit à quatorze ans, tous regroupés autour d'une histoire de données. Et j'ai créé un autre site lesenfantscodaient.fr pour dire que les histoires d'algorithmes ressemblent aussi beaucoup à ça :

Un grand merci à tous ceux qui m'ont permis de faire tout ça.

2015-01-15 Projets informatiques, ENSAE 1A

Liste des sujets suggérés. Le hors piste est encouragé.

2014-09-05 Rentrée scolaire

C'est reparti pour une année et je m'aperçois que beaucoup de choses ont changé en un an. Mes cours ont quitté Latex pour Sphinx et ont trouvé place sur GitHub. Toujours aussi peu désireux de répéter toujours les mêmes tâches, je n'ai que deux scripts à lancer pour compiler les cours et les mettre à jour sur mon site. J'ai testé pas mal de template (intraduisible en français) sphinx pour finalement un choisir un facile à lire sur ordinateur, tablette et téléphone portable : ENSAE - Programmation - Xavier Dupré. J'ai ajouté une présentation au format revealjs : ENSAE 1A - PROGRAMMATION qui passe tout aussi bien sur presque tous les téléphones. L'éditeur SciTE, tellement simple que je n'ai pas encore réussi à m'en passer, a pourtant laissé une grande place aux Notebook. J'ai commencé un module python pyensae afin d'y mettre les bouts de code que je transmets aux élèves. Il inclut une fonction download_data qui télécharge des données directement depuis mon site.

Je me souviens encore d'une discussion voici presque 10 ans avec un ami qui me disait : Il faut arrêter le C++, c'est trop compliqué pour une première découverte de la programmation. Il s'occupait des cours d'informatique à l'ENSAE. Un peu au même moment, un élève m'annonçait fièrement après les examens qu'il avait grandement contribué à sept projets. Mais pourquoi Python, lui demandais-je ? C'est le langage avec la plus petite spec, me répondit-il. Et il n'y a pas de point virgule, c'est l'indentation qui détermine les blocs. C'est vrai qu'un langage à point virgule mène souvent à des poèmes à la Prévert. J'ai acheté un livre et j'ai appris le Python trois semaines avant la rentrée et j'ai préparé mes cours dans le même temps. Plus de C++, voilà Python. Le nom du langage a également disparu de l'intitulé du cours. Il y a dix ans, Python, ça ne faisait pas assez sérieux.

Et aujourd'hui ? Python ne cache plus son nom. Le premier résultat de recherche fait référence au langage et non au serpent. Les chercheurs s'y mettent aussi. En deux ans, le langage s'est beaucoup étoffé. Et l'écart entre ce que j'enseigne et l'usage que j'ai du langage s'est considérablement réduit. Au quotidien, je notebooke beaucoup.

Mais si j'écris aujourd'hui, c'est ce que je suis stressé. C'est la rentrée.

2014-05-14 Deux ou trois choses à vérifier avant de rendre un projet informatique

Avant de remettre un programme informatique à un relecteur, il est deux ou trois petites choses qui facilitent le travail de relecture :

Lorsqu'un programme ne marche pas et qu'on a passé beaucoup de temps à chercher l'erreur, quoi de plus naturel que d'envoyer un mail à son professeur : "Monsieur, je ne comprends pas, ça ne marche pas et ça devrait marcher". Une fois sur deux, je réponds qu'il me serait utile d'en savoir un peu plus :

Bien souvent, le message d'erreur que je peux lire après avoir reproduit l'erreur est une bonne indication pour savoir où chercher. Dans le cas contraire, voici ce par quoi je commence en général : Je conçois qu'un bug récalcitrant titille un peu et suscite l'envoi d'un mail simple et concis traduisant un certain état d'agacement : ça ne marche pas et ça devrait marcher ! En pareil cas, j'ai aussi tendance à réagir de la sorte. Toutefois, étant la source de l'erreur, le programmeur est celui qui dispose des informations les plus détaillées. J'essaye de lui demander tout ce qu'il sait avant de me lancer en conjectures.

Un cas concret : un programme est censé minimiser la longueur du chemin passant par tous les noeuds d'un graphe (problème du voyageur de commerce). L'algorithme implémenté était tout-à-fait correct à ceci près que l'arc liant le dernier noeud au premier était oublié dans le calcul de la longueur du chemin (il ne bouclait pas). Je vous laisse imaginer ce que l'algorithme produisait comme solution et pourquoi ce que j'ai vu au fil des itérations m'a incité à aller inspecter le calcul de cette longueur.

2014-05-04 Données financières

Chaque année, je propose des sujets financiers aux étudiants de l'ENSAE et la question qui revient systématique est celle des données. Jusqu'à présent, j'utilisais Yahoo Finance!. L'inconvénient est qu'on ne peut récupérer que les cours daily des actions. Un ami m'a suggéré le site Quandl. Les historiques ne sont parfois pas aussi conséquent mais ce site aggrège différentes sources de données et les rend disponibles selon la même interface depuis de nombreux langages (Python, R, Julia, Clojure...).

L'interface est vraiment épurée, très réactive et très agréable à utiliser. Outre la multitude de séries financières qui est accessible, le site met à disposition des séries économiques comme le PIB pour de nombreux pays ou encore le cours du Bitcoin.

Le site stipule que l'accès est gratuit. Il faut s'authentifier si on dépasse un quota de 50 requêtes par jour. Le business model n'est pas encore bien défini (coming soon) contrairement à leur concurrent Datamarket. Ma préférence va pour Quandl, simple, accessible, gratuit et des objectifs ambitieux. Si une source de données ne fait pas partie du catalogue, il est même possible de leur demander de l'intégrer.

Quelques articles :

2014-02-12 Travailler à plusieurs sur le même projet informatique

La principale difficulté lorsqu'on travaille à plusieurs sur le même programme survient lorsqu'on doit agréger les modifications de plusieurs personnes. On part d'un même programme, on le modifie chacun de son côté et on essaye quelques jours plus tard de réconcilier les deux versions. C'est souvent laborieux et ça peut introduire quelques erreurs.

Une solution peut déjà être d'avoir un emplacement qui détient toujours la bonne version. Par exemple, hubiC vous propose d'avoir un répertoire distant (donc pas chez soi) synchronisé avec un répertoire local de son ordinateur. Ce même répertoire peut être synchronisé avec un autre répertoire local sur un autre ordinateur. De cette façon, dès que quelqu'un modifie un fichier, les autres contributeurs récupèrent les modifications (à condition d'être connecté).

Même si c'est pratique, ce genre de solution ne permet pas de revenir en arrière ni même de visualiser les modifications de chacun. Pour cela, on peut utiliser un système de suivi de source tel que GitHub, ce que j'ai fait pour pyensae, qui permet de voir les différences. Ce service n'est pas totalement gratuit (voir GitHub Pricing, BitBucket Pricing). Avant d'essayer, il est préférable de lire cette page : Fork A Repo. Si vous n'aimez pas trop les lignes de commande, il est possible de coupler cela avec TortoiseGit.


more...

2013-12-15 Quelques exercices de préparation à l'examen (5)

Lorsqu'on cherche un élément dans un tableau, c'est généralement pour retrouver sa position. Supposons maintenant que cet élément soit présent en plusieurs exemplaires et qu'on veuille toutes les positions où il est présent.

def positions(liste, element) :
    ...
    return une liste
    
l = [ 4,3,3,6,4,3 ]
print ( positions(l, 3) ) # affiche [1,2,5]

Dans un second temps, on veut transformer la liste l en un dictionnaire de sorte que la fonction positions ne contienne plus de boucle. Quelle est la solution la plus rapide ?


more...

2013-12-14 Quelques exercices de préparation à l'examen (4)

On reprend le même texte que celui de l'exercice précédent. On veut connaître le nombre maximum de mots qu'on peut trouver entre deux mots commençant par une voyelle.

# source du texte : http://www.gutenberg.org/files/1567/1567-h/1567-h.htm#link2H_4_0017
texte = """They are rattling breakfast plates in basement kitchens,
And along the trampled edges of the street
I am aware of the damp souls of housemaids
Sprouting despondently at area gates.
The brown waves of fog toss up to me
Twisted faces from the bottom of the street,
And tear from a passer-by with muddy skirts
An aimless smile that hovers in the air
And vanishes along the level of the roofs.""".replace("\n"," ").lower().split()

def nombre_de_mot_maximum(mots) :
    ...
    return un_nombre 

more...
<-- -->

Xavier Dupré