Python dans tous ses états

Contenu des séances de travaux pratiques en programmation que je dispense à l”ENSAE. Ces cours s’appuient principalement sur le langage Python. Le contenu est librement disponible sur GitHub/ensae_teaching_cs gitlogo et permet à quiconque de contribuer à ce cours. Il existe deux formats disponibles : mobile/PC ou plus large. Les changements importants sont notés sur le blog associé à ce cours, certains modifications prévues sont notés sur Waffle/ensae_teaching_cs.

Ce site est principalement un site d’exercices. D’autres contenus sont disponibles sur des éléments de machine learning, la programmation avec Python, des jeux autour d’algorithmes, des présentations, conférences, ou encore des sujets de compétitions, hackathons.

Avant-propos

Les langages R et Python sont devenus incontournables dans le domaine des statistiques. Ils sont simples, open source, s’apprennent rapidement, sont utilisés par beaucoup et disposent de nombreuses pages, blogs, listes de diffusions qui leur sont dédiées. R est le terrain de jeu préféré des chercheurs mais il est peu pratique pour développer un site web ou un jeu. Python est beaucoup plus polyvalent et de plus en plus populaire. Il est enseigné à l”ENSAE depuis 2004. Les premiers pas sont parfois rebutants mais on arrive vite à quelque chose à condition d’y passer un peu de temps au démarrage. La programmation est indispensable pour traiter les données, les visualiser, automatiser les tâches les plus répétitives, et s’amuser (voir lesenfantscodaient.fr).

3 niveaux

Les cours proposés sont de difficultés croissantes et orientés pour un statisticien ou un data scientist. La pratique est un élément essentiel de l’apprentissage de la programmation. Quoi qu’on en dise, il faut aussi être créatif.

  • 1A : syntaxe de langage, premiers algorithmes, programmation dynamique, Data Frame, premiers graphes
  • 2A : python pour un statisticien, Data Frames, calcul matriciel, machine learning, exercices d’algorithmie
  • 3A : calculs distribués, Map/Reduce, Hadoop, PIG, Spark, depuis un notebook

Le blog associé à ce site publie des liens vers des vidéos, des données, met en valeur certaines mises à jour, aborde des sujets connexes aux enseignements proposés. Chaque cours est validé par un projet et c’est principalement durant cet exercice qu’on apprend et qu’on exprime ses idées. Dire qu’on sait programmer simplement parce qu’on a réussi les exercices du cours serait un peu comme prétendre savoir jouer aux échecs après avoir pris connaissance des règles et sans avoir jamais joué une partie.

Getting Started - Démarrer

L’immense majorité des langages de programmation est de langue anglaise. La documentation de tous les logiciels partagés est en anglais. Certains paragraphes y sont souvent présents comme Getting Started. Les résultats des recherches sur internet sont très souvent plus intéressants lorsqu’elles sont libellées en anglais.

Notebooks

Les séances utilisent les notebooks Jupyter. C’est le support privilégiés des chercheurs lors des conférences scientifiques. Il offre un espace de travail réactif, agréable et très pratique quand il s’agit de partager son travail. Chaque séance mélange notions et exerices qu’on peut faire directement dans le notebook une fois téléchargé. La correction est également rédigée sous forme de notebook afin de pouvoir aisément jouer avec la solution mais elle fonctionnera dans n’importe quel autre environnement.

Démarrage / Installation

Voir En résumé : Anaconda pour des instuructions détaillées sous Windows, Linux et MacOS.

Le langage est devenu populaire aussi parmi les data scientists grâce à un ensemble de librairies qui ont offert un service équivalent à ce que propose R. pandas, numpy, matplotlib, scikit-learn ont élevé le niveau de fonctionnalités, les notebooks Jupyter ont changé la façon de travailler. Les modules les plus utilisés sont maintenant fournis sur toutes les plate-formes avec la distribution Anaconda. Sous Windows, le site Unofficial Windows Binaries for Python Extension Packages proposent de nombreux modules qui nécessitent un compilateur C++. On les repère car l’installation pip install <module> échoue à moins de savoir bidouiller sa machine.

Dépendences et automatisation

Ces cours représentent plus de 60 heures de cours et travaux pratiques suivis par plus de 200 élèves de l”ENSAE répartis sur trois années, la réception d’une centaine de projets. Cela nécessite un peu d’automatisation implémentée en Python mise à disposition sous forme de modules (voir listes des dépendances).

Contributions

Le cours est open source et disponible sur GitHub. N’hésitez pas à contribuer en m’envoyant des pull requests sans même avoir à récupérer tous les fichiers sur votre ordinateur : Editing files in your repository.

Modules Functions Classes Methods Static Methods Properties
Index du module Collection d’examples Page de recherche License Changes README
Index FAQ Galleries de notebooks Getting started Statistics on code Unit Test Coverage
Build status Build Status Windows https://circleci.com/gh/sdpython/ensae_teaching_cs/tree/master.svg?style=svg https://badge.fury.io/py/ensae_teaching_cs.svg MIT License https://codecov.io/github/sdpython/ensae_teaching_cs/coverage.svg?branch=master GitHub Issues Waffle Codacy Badge Notebook Coverage