Feuille de route 2018 (1A)#

Page principale du cours

Plan#

Séance

Notes

  1. 4/9 amphi court et TD

Présentation/rappel du langage Python sur les élements du langage, (type de variables, tests, fonctions), présentation de l’environnement à l’ENSAE, installation de Python sur Windows, Linux, Mac, installation de modules, présentation des notebooks, Séance 1

  1. 11/9 TD

Premiers algorithmes simples, intégrale de Rienmann, 2048, deviner la langue d’un texte, pyramide bigarrée, Séance 2

  1. 18/9 TD

Classes, expression régulières, templating, fichiers, Séance 3

  1. 25/9 TD

Graphes et distance d’édition, notions de coût algorithmique, Séance 4, 2018-09-25 - Distance entre mots

  1. 2/10 TD

Création d’un module Python avec des tests unitaires, un setup, une documentation, pour ceux qui veulent : mise en ligne sur github, bitucket, gitlab, … et mise en place de l’intégration continue, notion de git, outil de profilage, Séance 5

  1. 9/10 TD

Manipuler les matrices, les données sous Python, numpy, pandas, Séance 6

  1. 16/10 TD

Visualisation, statique et javascript, module matplotlib, bokeh, pyecharts, réalisation de cartes avec cartopy, création d’un site web avec flask, Séance 7

  1. 23/10 TD

Module numba, mélanger du code C++ avec Cython, pybind11, optimisation quadratique pour ceux que le C++ rebute, algorithme de streaming, Séance 8

Prérequis#

La programmation fait maintenant partie du programme des classes préparatoires. Ce cours suppose que les types du langage, sa syntaxe sont connus tout comme quelques algorithmes de tri comme le tri bulle et le tri fusion.

Version de Python#

Les exercices et notebooks sont testées sur la version Python 3.9. Ils fonctionneront également sur les versions 3.5 et 3.6. Le plus simple pour installer Python est d’utiliser la distribution Anaconda. La distribution standard fonctionne également en s’aidant ce cette page Archived: Unofficial Windows Binaries for Python Extension Packages pour Windows et de celle-ci pour la distribution Debian 9 (*Ubuntu est très similaire) : Install Python 3.7 and many packages on Linux Debian 9.

Notes#

Liens, notebooks prévus pour les séances pratiques.

Séance 1#

Les premiers notebooks de cette section.

Séance 2#

Les notebooks correspondant aux premiers algorithmes :

Autres algorithmes, résolution d’un sudoku (Résolution d’un sudoku), d’une puzzle ou coloriage (module special.puzzle_girafe) :

Séance 3#

Notebooks sur les classes et les expressions régulièrs, dans la section qui suit :

Pour le templating, il faut voir les modules jinja2 ou mako. Le principe est assez simple et plutôt bien documenté. Indispensable pour concevoir des sites web. TemPy est aussi à regarder car le design est différent.

Séance 4#

Notion de graphes, un algorithme sur les graphes, un autre sur la distance d’édition,

Jeter un oeil sur la liste Catalogue d’algorithmes.

Séance 5#

Sur github : td1a_unit_test_ci.

Séance 6#

Premiers notebooks sur les dataframes et les matrices avec les modules numpy et pandas.

Séance 7#

Derniers notebooks sur les dataframes et les matrices avec les modules matplotlib, bokeh, cartopy.

Sur Flask :

Séance 8#

La connaissance du C++ est un plus pour ceux qui souhaitent faire une thèse ou qui souhaitant écrire une librairie de calcul numérique.

Voir aussi cpyquickhelper qui illustre plusieurs techniques d’optimisation. Pour l’optimisation et les algorithmes de streaming (BJKST), voir les notebooks reliés dans la section :