Python Programming · Advanced Python
Du fondamental au niveau avancé · LMAD / MDSI · 84h (42 + 42)
Présentation
Deux modules complémentaires créés en 2022–2023 :
- Python Programming (S1, 42h) — initiation et fondamentaux
- Advanced Python Programming (S2, 42h) — patterns avancés et écosystème data
Couverture orientée data science et IA, avec focus sur la reproductibilité (seeds, environnements, packaging).
Espace Blackboard
Espace(s) cours sur Blackboard ESB :
- LMAD L2 — Python 2 : https://esprit.blackboard.com/ultra/courses/_26567_1/outline
- LMAD L2 — Python 3 : https://esprit.blackboard.com/ultra/courses/_26568_1/outline
Acquis d’apprentissage
Python Programming (initiation)
- AA1 — Maîtriser la syntaxe de base (variables, contrôle, fonctions)
- AA2 — Manipuler les structures de données (listes, dicts, sets, tuples)
- AA3 — Comprendre la POO (classes, héritage, polymorphisme)
- AA4 — Lire/écrire des fichiers et utiliser les modules standards
- AA5 — Écrire du code testable (unittest, pytest)
Advanced Python (avancé)
- AA6 — Décorateurs, generators, context managers, descriptors
- AA7 — Programmation fonctionnelle (map, filter, reduce, partial)
- AA8 — Gestion de packages (pip, poetry, virtualenv, pyproject.toml)
- AA9 — Async/await et concurrence (asyncio, threading, multiprocessing)
- AA10 — Performance (profiling, vectorisation NumPy, Cython, Numba)
- AA11 — Écosystème data science (NumPy, Pandas, scikit-learn)
Supports pédagogiques
| Type | Description | Lien |
|---|---|---|
| Polycopié | Cours book avec exercices corrigés | |
| Slides | Beamer Metropolis 16:9 | |
| TPs hands-on | Notebooks Jupyter avec seeds reproductibles | PDF + code |
| Projet | Mini-projet en équipe — outil data science | Sujet |
| Repository | Code source | GitHub |
Plan détaillé
Python Programming (S1)
- Bases du langage : types, opérateurs, contrôle de flux
- Fonctions : arguments, *args, **kwargs, lambdas, scoping
- Structures de données : listes, dicts, sets, tuples, comprehensions
- Modules et packages : import, structure d’un package
- POO : classes, méthodes, héritage, polymorphisme, dunder methods
- Fichiers et exceptions : I/O, gestion des erreurs
- Standard Library : itertools, functools, collections, datetime
- Tests : pytest, fixtures, mocks
Advanced Python (S2)
- Idiomes Python : zen of Python, PEP 8, typage statique
- Décorateurs : fonctions, classes, paramétrés
- Generators et iterators : yield, itertools avancé
- Context managers : with, contextlib, exit stacks
- Programmation fonctionnelle : higher-order functions, currying
- Concurrence : threading, multiprocessing, asyncio
- Performance : profiling, NumPy vectorisation, Numba JIT
- Packaging et déploiement : poetry, Docker, CI/CD
Outils mobilisés
python>=3.10 · numpy · pandas · pytest · mypy · black · ruff poetry · jupyter · numba · asyncio · requests
Reproductibilité
Tous les TPs utilisent des seeds reproductibles garantissant que chaque étudiant obtient les mêmes résultats expérimentaux. Cela facilite le debugging, l’évaluation et la collaboration.
Prolongements
Modules transverses qui sous-tendent Machine Learning, Deep Learning, NLP, Generative Computer Vision et Outillage Machine Learning.