2022-09-07 Introduction à la programmation (sketch)#

Xavier Dupré - http://www.xavierdupre.fr

Présentation

  • Avant l’ENSAE, programmation en classes préparatoires, Informatique en CPGE

    • concepts de base, tests, boucles, fonctions

    • calcul matriciel

    • notion de quelques algorithmes

    • langage python

  • Après l’ENSAE

    • réalisation de nombreux projets en python

    • plus grande culture algorithmique, graphes, algorithmes probabilistes

    • notion d’ingénierie logicielle

    • tests unitaires

    • notion de processeur, CPU, GPU

    • manipulations des données

  • Selon les options

    • langages plus bas niveau C/C++

    • autres langages, javascript pour les sites web, SQL pour les bases de données, R pour les statistiques

    • SAS…

  • Python à l’ENSAE depuis 2005

    • beaucoup de choses ont changé depuis, le langage python s’est largement répandu dans le monde professionnel

    • Mon boulot en 2005

    • Mon boulot aujourd’hui

    • Même si la plupart des ingénieurs savent programmer, peu savent très bien programmer

    • La double compétence mathématiques / informatique est rare.

  • Python : le langage du machine learning

    • numpy, scikit-learn, pandas, matplotlib, jupyter

    • deep learning = python

    • automatisation, site web

  • Python : langage commun à toutes les universités de par le monde

    • facile, travail plus facile pour les professeurs également

    • interfaçage avec C++

Assembler des algorithmes existants

  • Trouver le plus court chemin d’une station de métro à une autre ? –> plus court chemin dans un graphe

  • Même question en tenant compte des temps de changement de ligne ?

  • Optimiser la tournée d’un camion poubelle

Automtiser

  • Lancer tous les matins la récupération automatiques de données épidémiologiques pour construire un rapport de suivi

Machine learning aujourd’hui

  • Apprentissage fait avec python

  • Code faisant les calculs écrit en C/C++/asm

  • Déploiement (utilisation des modèles) sur d’autres langages encore (javascript, C#, go, …)

    • Python très lent malgré et difficile à maintenir d’une version de python à une autre

    • Le Cloud AWS, Azure

  • Démocratisation dans de nombreux pays

Deep Learning

  • Le deep learning envahit la vie quotidienne

    • santé (aide au diagnotisque)

    • sécurité (vidéo surveillance),

    • automatisation (voiture)

    • publicité, objets connectées

  • Besoin de calculs, besoin de codes rapides

    • CPU, GPU, TPU

    • NVIDIA A100, innovation matérielle et logicielle

    • recherche très active dans ce domaine

  • Modèles de plus en plus gros

  • Il ne suffit plus d’être bon en maths, ou bon en informatique, il faut être les deux

Ingéniérie logicielle

  • Le point faible des ingénieurs français

    • On commence l’informatique avant la prépa dans d’autres pays

    • Pas assez de pratique, un bon codeur a beaucoup codé.

  • tests unitaires : à connaître avant d’aller passer un entretien d’embauche

  • intégration continue

    • A chaque modification, on vérifie que les tests unitaires passent.

  • documentation

    • C’est fastidieux mais indispensable dans un monde open source.

    • Les projets qui ont réussi ont toujours une bonne documentation.

  • culture algorithmique

    • un produit matriciel n’est pas aussi simple qu’on le dit quand on veut qu’il soit rapide

    • Survol algorithmique

  • git

    • Un outil injustement méconnu des juristes.

Thèse…

  • C/C++ : même si vous n’en avez pas besoin tous les jours, on code mieux en python quand on connaît un langage bas niveau car on comprend mieux tout ce que le langage nous cache

  • linux

Cours, premiere semestre

Cours, second semestre

Ressource, supports pour ce cours

Et puis…

A la fin de l’année, vous devriez pouvoir…

Tout est sur GitHub.

Culture algorithme et informatique

Connaissez-vous ?

  • Debian ?

  • git ?

  • github ?

  • les exceptions ?

  • les expressions régulières ?

  • json ?

  • les graphes ?

  • une table de hashage ?

  • Comment résoudre un sudoku avec un programme ?

  • Un algorithme de streaming ?

  • Le problème du postier chinois ?

  • Un problème d’appariement ?

  • Un problème NP-complet ?

  • la librairie openmp ?

  • Un cache ?

  • un float, un double ?

  • un test unitaire ?

  • ADA ?

  • John Von Neumann ?

  • Guido van Rossum ?

  • INRIA ?

Programme :

Feuille de route 2022 (1A)

Notions à connaître

Algorithmes, structure de données

  • Dictionnaires

  • Tri bulle, tri fusion

  • Recherche dichotomique

  • Graphe, prédécesseur, successeur, composante connexe dans un graphe

  • Plus court chemin dans un graphe, distance d’édition

  • Plus court chemin passant par tous les points d’un graphe

Techniques

  • expression régulière

  • profiling

  • JSON, sérialisation avec pickle

  • numpy, pandas, matplotlib

  • tests unitaires