XD blog

blog page


2014-09-13 La programmation à l'école

J'écoutais l'émission Le téléphone sonne sur France Inter à propos du contenu des enseignements. Je faisais autre chose à côté donc je ne me souviens pas de tout et puis le ton du dialogue nous amène un peu partout sans vraiment construire une réflexion. Toutefois, au milieu de l'émisssion, Cédric Villani prend la parole pour dire que les enfants devraient pratiquer un sport, jouer d'un instrument de musique, apprendre un langage de programmation et puis l'anglais pour voyager.

Le plus étrange est qu'il a pris le temps de préciser que l'anglais était indispensable pour voyager sans justifier les autres ingrédients de la liste. En guise de réponse, je citerais une conférence de François Elie qu'un élève m'a fait découvrir.

Pourtant dans l'article Ces branchés qui débranchent (voir aussi La soeur du patron de Facebook conseille aux enfants de se déconnecter), on y apprend que les patrons des startups les plus célèbres désirent une éducation presque sans écran pour leurs enfants.

Peut-être faut-il en déduire que le numérique à l'école ne passe pas nécessairement par un écran.

2014-09-09 How to get version and license for installed modules

I run into the package license-info. It did not work as it is but after a couple of modifications, it gives:

sphinxjp.themes.revealjs==0.2.0 #MIT
tessera-client==0.4.1 #Apache
antlr4-python3-runtime==4.4.1 #BSD
basemap==1.0.8 #OSI Approved
cvxopt==1.1.6 #GNU GPL version 3
Cython==0.20.2 #Apache Software License
Flask==0.10.1 #BSD
numpy==1.8.1 #BSD
openpyxl==1.6.2 #MIT/Expat
pymc==2.3.3 #Academic Free License
pywin32==219 #PSA
pyzmq==14.3.0 #LGPL+BSD
selenium==2.42.1 #Apache Software License
Sphinx==1.2.2 #BSD
sphinxcontrib-fancybox==0.3.4 #BSD
spyder==2.3.0 #MIT
statsmodels==0.5.0 #BSD License
tables==3.1.1 #http://www.opensource.org/licenses/bsd-license.php
tornado==3.2.1 #http://www.apache.org/licenses/LICENSE-2.0

The code follows.


more...

2014-09-08 Chercher, essayer, apprendre

On parle beaucoup des nouveaux horaires à l'école. Il n'est pas facile de savoir quoi en penser. Tout au plus, je me dis qu'il y a des sujets plus intéressants et puis qu'un professeur passionné et intéressant est sans doute plus important que l'horaire auquel il officie. Quand je raconte ma scolarité, j'ai souvent tendance à citer les professeurs qui m'ont marqué. Je regardais la vidéo sur TED liée à cet article Histoire : Bill Gates a réussi à changer les programmes scolaires. Je me demandais si cette façon d'aborder l'histoire lui était venue jeune ou si elle était issue d'une forme de recherche pédagogique continue. L'article suivant m'a fait un peu sourire Prof, je suis prêt à être évalué par mes élèves. Je pense que si cela était plus répandu, il n'y aurait plus d'appréhension. L'article suivant fait un peu peur : Pourquoi une petite ville du Tennessee a l'Internet le plus rapide du monde. Je me demande à quoi correspond le prix que je paye pour Internet. Et puis je suis tombé sur cet article : Céline Alvarez, une institutrice révolutionnaire. Je me suis demandé comment les écoles du type Montessori, Freinet, Steiner-Waldorf appréciaient ce genre d'expérience puisqu'apparemment il est possible d'appliquer Montessori à l'école publique. Satisfaction ? Concurrence ? Amusement ? Je suis surpris qu'avec le temps les frontières entre ces différentes pédagogies ne soient pas plus poreuses. Je me suis retrouvé Wanda écouter une histoire à La Maison des Contes et des Histoires. Si seulement les cours de maths pouvaient ressembler à ses histoires, je serais comblé.

2014-09-07 Four issues I had when using IPython, R and rmagic

I wanted to use R through IPython notebook to mix Python and R. I did it on Windows and I guess it requires to be more careful. I went through four issues.


more...

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-09-01 Henri IV

Un jour, j'aurais le temps de regarder tout ça : Henry VI par Thomas Jolly au Festival d'Avignon 2014 - Épisode 1.

2014-08-27 Manipulate Data Cubes in Python

I used to work on Lotus Improv to compute predictions based on retirement systems. The mortality table was modelled as a data cube. The software was quite intuitive and easy to use. It was just a cube, a way to visualize data aggregations and formulas to populate cells beyond the current date (= the prediction). When I looked for a replacement for this software, I was surprised to discover many dead initiatives included Improv itself. I guess not so many people need that kind of functionalities even though some people find it very useful. One possible replacement (and still alive) is Quantrix. But to avoid the same end of many other softwares, the tool provides many more functionalities other than just being able to visualize the data. I was curious to see if somebody started something with Python. I found cubes and cubesviewer. I did not try yet but I'll keep that in mind.

2014-08-26 string.format

It is just a trick about reducing the number of parameters to send to function format. Let's assume we have a class like the following:

class Entity:
    def __init__(self, name, city):
        self.name = name
        self.city = city
school = Entity("ENSAE", "Paris")

And we want to build a string like the following:

message = "school:{0} city:{1}".format(school.name, school.city)
# two parameters

But it could be rewritten as:

# one parameter
message = "school:{0.name} city:{0.city}".format(school)

2014-08-24 Graphiques avec Python, R

R reste la référence en matière de statistiques mais pour tout un tas de raisons, je choisis Python dès que je peux. Je travaille beaucoup avec les notebooks que je trouve très agréables, plutôt robustes et simples à partager. Je me suis penché sur les graphiques en Python, matplotlib, des cartes et des graphiques interactifs qui s'intègrent particulièrement bien avec les notebooks : visualisation des données. Et si Python ne suffit pas, il est facile de revenir à R dans les notebooks avec rmagic que je trouve plus faciles à utiliser que shiny ou knitr - les notebooks sous R. Voici un notebook mêlant R et Python : Rmagic Functions Extension.

2014-08-20 Python, Annotation, Type Checking, mypy

Python is interpreted at runtime. Variables types are discovered during the execution. That is also why it is so slow. It is difficult to anticipate what the type of variable will be even though projects such as pypy or nuitka aims at compiling a python script by doing so. They must do type infering. Python 3 has introduced a nice feature which helps doing that: function annotations. It specifies a static type to the parameters and/or the returned result. By doing this, it is easier to check types at runtime (with module typecheck-decorator):


more...

2014-08-19 Diversité et optimisation

J'ai passé quelques jours au bord de la mer et j'ai inévitablement mangé des huîtres. Il y a quelques années, ces huîtres d'été étaient laiteuses. Je devais être un des rares à les apprécier car elles ne le sont plus depuis 10 ans. Bien que je les aime moins, il y a 10 ans, il était plus avantageux économiquement de les remplacer par des huîtres non laiteuses : Huîtres en voie d'extinction, La surmortalité des coquillages inquiète les producteurs, Les éleveurs d'huîtres et de moules crient leur désarroi. La nouvelle huître grandit également en deux ans au lieu de quatre pour la diploïde. Mais si son taux de mortalité dépasse les 50% par rapport à celui de l'autre espèce, cet avantage disparaît et c'est bien ce qui est en train de se produire. La nouvelle huître est triploïde et ne peut plus se reproduire seul. La reproduction en écloserie a sans aucun doute réduit la diversité génétique des huîtres et leur capacité à trouver une parade à toute nouvelle agression. Tout s'est passé en dix ans, de quoi garder le souvenir de l'ancienne façon de faire et de retrouver la cause.

Inventer une nouvelle huître n'était sans doute pas la seule façon de contourner le problème de l'huître laiteuse. On aurait peut-être pu réinventer la façon de les manger. Il n'y a finalement qu'une idée qui est restée. C'est peut-être aussi notre façon de fonctionner que nous devrions ajuster : ne pas jeter toutes nos idées pour ne garder que la meilleure. C'est peut-être l'appauvrissement de notre imagination que nous aurions à subir.

2014-08-09 L'informatique et Wikipedia

Je référence souvent Wikipedia dans mes cours, le plus souvent possible la page française quand elle existe mais force est de constater qu'elle n'existe pas toujours. C'est le cas de celui-ci Longest increasing subsequence qui est un problème classique mais pas si évident que cela (voir plus grande séquence croissante). Il faudrait que je regarde de façon statistique quels sont les domaines les mieux représentés selon les différentes langues. De mémoire, il existe toujours une version anglaise, sans doute parce que cette langue est devenue la langue scientifique. En ce qui concerne les algorithmes, les pages françaises sont souvent moins fournies, et on voit plus souvent des versions russes ou polonaises : Reservoir Sampling, Johnson's algorithm. Travaillant pour une multinationale, je constate que les ingénieurs des pays de l'Est découvrent beaucoup plus tôt l'informatique et sont plus cultivés dans ce domaine. Les deux faits sont-ils liés ?

2014-08-05 Custom completion for IPython

Autocompletion is a nice feature quite useful when typing very long names. It is implemented by modules such as IPython, bpython or DreamPie. I'm quite a big fan of a the first one, the notebooks to be precise. However, it did not seem quite easy to add my custom autocompletion. I tried some search queries but I was only able to find Integrating your objects with IPython or IPEP 11: Tab Completion System Refactor.


more...

2014-08-03 Customize IPython notebooks

If you want to customize your notebooks and finds a style which suits you better, you can look into these links and try one of these options:

2014-08-01 Un livre sur Javascript

Je suis tombé là-dessus aujourd'hui : Eloquent JavaScript. Pas mal du tout.


<-- -->

Xavier Dupré