2021-09-08 Introduction à la programmation (sketch)

Présentation

  • Programmation en classes préparatoires, Informatique en CPGE

    • architecture d’un ordinateur

    • base du langage python

    • arbre binaire, graphes

    • algorithme, parcours de graphe, distance d’édition, diviser pour régner, programmation dynamique

  • Langages haut niveau, bas niveau
    • C/C++

    • Rust

    • Javascript, Python, matlab…

  • Pythonmachine learning
    • datascience, deep learning = python

    • automatisation, site web

    • Python populaire (travails, universités)

    • interfaçage avec C++

  • Pratique
    • 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 ?

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.