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
deep learning : pytorch
Code faisant les calculs écrit en C/C++/asm
Déploiement (utilisation des modèles) sur d’autres langages encore (javascript, C#, go, …)
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
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
Evaluation, anciens examens Séances notées
Cours, second semestre
Projet : 1A - Projets informatiques
Ressource, supports pour ce cours
Rappels : Petit voyage au pays du machine learning
Programmation : Apprendre la programmation avec Python
Un peu plus mathématique : Les maths d’abord, la programmation ensuite
Et puis…
Les moteurs de recherche : python + message d’erreur, cheatsheet
A la fin de l’année, vous devriez pouvoir…
Imaginer une stratégie automatique au 2048.
Simuler une épidémie, des régimes de retraites
Supprimer les pesticides en programmant des drones pour couper les mauvaises herbes ou couper les feuilles infectées par le mildiou
Lutter contre les îlots de chaleur dans les villes en verdissant les toits avec un mélange de plantes en fonction de la disposition du toit (Singapour : des gratte-ciels anti-pollution)
Devenir le prochain covidtracker
Calculer l’exposition d’une économie à un certain type de produit… PSA : l’usine de Rennes à l’arrêt par manque de semi-conducteurs Panne Orange : quelles conséquences ?, Xavier Jaravel, meilleur jeune économiste 2021 pour ses travaux sur l’innovation et les inégalités,
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 :
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