Déroulé type d’une séance de 2 h :
| Temps |
Activité |
| 0:00 à 0:10 |
Questions de récupération sur la séance précédente |
| 0:10 à 0:50 |
Cours : notions et démonstrations en direct |
| 0:50 à 1:50 |
TP guidé, puis étape du fil rouge |
| 1:50 à 2:00 |
Bilan, questions et annonce de la séance suivante |
| Séance |
Titre |
Acquis visés (l’étudiant sait…) |
Fil rouge |
| S01 |
Fondamentaux XML |
écrire un document bien formé ; choisir entre élément et attribut ; utiliser entités, CDATA et espaces de noms ; comparer XML, JSON et HTML |
Rédiger catalogue.xml |
| S02 |
Validation DTD |
écrire une DTD (ELEMENT, ATTLIST, ENTITY) ; exprimer les cardinalités ; utiliser ID/IDREF ; valider avec xmllint |
catalogue.dtd |
| S03 |
XML Schema (XSD) |
définir des types simples et complexes ; poser des restrictions (pattern, enumeration, bornes) ; utiliser xs:key/xs:keyref ; expliquer ce que XSD apporte par rapport à la DTD |
catalogue.xsd |
| S04 |
XPath |
naviguer avec les axes ; filtrer avec des prédicats ; utiliser les fonctions (count, sum, contains…) ; tester des expressions |
15 requêtes sur le catalogue |
| S05 |
XSLT |
écrire des templates ; utiliser apply-templates, for-each, sort, if/choose ; produire du HTML |
catalogue.xsl vers catalogue.html · Jalon 1 |
| Séance |
Titre |
Acquis visés |
Fil rouge |
| S06 |
Node.js (1) |
expliquer le runtime et la boucle d’événements ; utiliser les modules ESM ; gérer un projet npm et ses scripts |
Initialiser bibliotech-api |
| S07 |
Node.js (2) |
écrire du code asynchrone (Promise, async/await) ; lire des fichiers avec fs/promises ; créer un serveur http natif |
Script d’import de catalogue.xml en JSON |
| S08 |
Express et REST |
concevoir une API REST ; écrire routes et middlewares ; centraliser la gestion des erreurs |
CRUD /books en mémoire |
| S09 |
Zod et TypeScript |
valider body, params et query avec Zod ; déduire les types avec z.infer ; exécuter du TS avec tsx |
Validation des entrées de l’API |
| S10 |
Prisma |
modéliser dans schema.prisma ; migrer ; gérer les relations ; faire du CRUD et de la pagination |
Persistance SQLite (livres, auteurs, emprunts) |
| S11 |
React (1) |
créer un projet Vite ; écrire des composants, props et state ; afficher des listes avec des clés |
Composants BookCard et BookList |
| S12 |
React (2) |
utiliser useEffect et fetch ; gérer les états chargement, erreur et vide ; écrire des formulaires contrôlés |
Liste et formulaire reliés à l’API |
| S13 |
React (3) et intégration |
router avec React Router ; configurer CORS et les variables d’environnement ; structurer un projet full-stack |
Jalon 2 : application full-stack |
| Séance |
Titre |
Acquis visés |
Fil rouge |
| S14 |
Pourquoi NoSQL |
citer les limites du SGBDR à grande échelle ; expliquer CAP, ACID et BASE, réplication et sharding ; associer une famille NoSQL à un cas d’usage |
Étude de cas : que faire sortir de SQL ? |
| S15 |
MongoDB (1) |
manipuler des documents BSON dans mongosh ; faire du CRUD et utiliser les opérateurs de requête et de mise à jour |
Collection books |
| S16 |
MongoDB (2) |
choisir entre imbrication et référence ; créer des index et lire explain() ; valider avec $jsonSchema |
Avis imbriqués et index |
| S17 |
MongoDB (3) |
écrire un pipeline d’agrégation ($match, $group, $lookup…) ; utiliser le driver Node dans Express |
Endpoint /stats, module d’avis |
| S18 |
Redis (1) |
utiliser les structures string, hash, list, set et sorted set ; gérer TTL et expiration ; comparer RDB et AOF |
Modélisation dans redis-cli |
| S19 |
Redis (2) |
implémenter cache-aside, rate limiting et sessions ; utiliser pub/sub |
Cache /books, limite de débit |
| S20 |
Graphe et séries temporelles |
modéliser un graphe et écrire des requêtes Cypher simples ; créer une collection time series et agréger par fenêtre |
Recommandations et statistiques d’emprunts |
| S21 |
Vectoriel et synthèse |
expliquer embeddings, similarité et index ANN ; faire une recherche k-NN ; choisir le SGBD adapté à un besoin |
Recherche sémantique · Jalon 3 |
- Module 1 : 5 × 2 h = 10 h
- Module 2 : 8 × 2 h = 16 h
- Module 3 : 8 × 2 h = 16 h
- Total : 42 h
Le contrôle final se passe hors de ces 42 h (ou pendant la dernière demi-séance, au choix de l’établissement).