Jour 1
Langage
- Appel de fonctions aspects avancés : *args, **kvargs
- Lambda, filter et map
- Utilisation avancée des modèles de données : list, dic, stack, queue
- Utilisation avancée des fonctions : passages d’arguments
- Aspects avancés de la Programmation Orientée Objets (POO)
Exemples de travaux pratiques (à titre indicatif)
- Création d’un programme avec exploitation avancée des collections de Python
- Changement des types de passage d’argument
Programmation multithread
- Concepts de bases : programme, thread, synchronisation
- Gestion de threads : modules thread, threading
- Threads et la Programmation Orientée Objets
- Gestion des aspects concurrentiels : lock, mutex, sémaphores…
- Threads et échanges de données
- Notion de pool de threads
Exemples de travaux pratiques (à titre indicatif)
- Création d’un programme lançant plusieurs threads
- Synchronisation de ces threads pour obtenir un résultat dépendant de traitements parallèles
- Protection des données globales du programme écrit grâce aux mutex et lock
- Ajout d’un sémaphore pour l’accès à des ressources en nombre restreint
- Echange de données entre threads lancés
- Travail sur la notion de pool de threads disponibles
Programmation réseau avec les sockets
- Rappels sur le TCP/IP et concepts de base de l’API socket
- Utilisation du module socket
- Socket en mode connecté : TCP ou stream
- Socket en mode non connecté : UDP ou datagram
- Les sockets et la Programmation Orientée Objets
- Combinaison des sockets et des threads
Exemples de travaux pratiques (à titre indicatif)
- Création d’un programme serveur puis client échangeant des données via les sockets en TCP puis UDP
- Démonstration de l’avantage du multithreading dans ce cas pour les serveurs
Jour 2
Python et XML
- Concepts de base
- DOM (Document Object Model)
- SAX (Simple API for XML)
- Parser…
- Gestion de fichiers XML selon SAX et selon DOM
- Requêtage Xpath et transformation avec XSL
Exemples de travaux pratiques (à titre indicatif)
- Création d’un programme de lecture d’un flux de données de taille importante via SAX
- Mise à jour d’une structure via DOM
Programmation graphique
- Concept de programmation événementielle
- Tkinter : présentation et mise en oeuvre
- Les widgets standards
- Mise en page avec grid et pack
- Présentation d’autres bibliothèques graphiques : PyGTK, PyQT
Exemples de travaux pratiques (à titre indicatif)
- Ecriture d’un programme utilisant Tkinter d’échange utilisateur avec l’interface graphique
Persistance de données
- Concepts de base : sérialisation / désérialisation
- Différents modèles de persistance : Pickle
- Persistance texte avec JSON et XML
Les bases de données
- Concepts de base : SQL, tables, curseur
- Gestion de la base de données SQLite et MySQL
- Présentaion du NoSQL
Exemples de travaux pratiques (à titre indicatif)
- Création d’un programme qui sérialise un flux JSON
- Ecriture d’un programme d’accès à une base de données MySQL
- Mise au point de requêtes de lecture, inertion, mise à jour depuis Python
Jour 3
Intégration Python/C et Python/Java
- Présentation générale et mise en oeuvre de SWIG
- Python/C et les packages
- Natifs C
- Natifs Java
Exemple de travaux pratiques (à titre indicatif)
- Création d’un programme interfaçant avec des API écrites en C et en Java
Mise au point de programme
- Débogage : exécution pas à pas
- Modes : verbose et trace
- Analyse des performances et profiling
Le contenu de ce programme peut faire l’objet d’adaptation selon les niveaux, prérequis et besoins des apprenants.

