Files

163 lines
8.2 KiB
Markdown
Raw Permalink Normal View History

2026-09-07 01:03:32 +02:00
# Révisions de rentrée : notes de séance
2026-09-06 21:35:04 +02:00
2026-09-07 01:03:32 +02:00
Deux activités de reprise pour la rentrée de Terminale, après la coupure estivale.
Elles couvrent les mêmes notions et sont interchangeables : Z-Event (marathon caritatif de
streaming) et PERRIAND-7 (station orbitale en avarie).
## Z-Event
| Fichier | Pour qui | Publié sur hub-docs |
|---|---|---|
| `TP_ZEvent.md` | Élèves | oui |
| `TP_ZEvent.ipynb` | Élèves | seulement si ajouté à `NOTEBOOK_ALLOWLIST` |
| `Corrige_TP_ZEvent.md` | Professeur | **oui par défaut** (c'est un `.md`), voir ci-dessous |
| `_generateur_zevent.py` | Professeur | non (préfixe `_`) |
2026-09-07 01:03:32 +02:00
Écrit au gabarit de tes TP : `## Contexte`, `## Objectifs pédagogiques`, `## Partie N`,
`**Question N.M**`, sorties attendues en commentaire à droite des `print`, `## Barème
indicatif` sur 20, auteur et licence. Cinq parties, dix-huit questions, environ deux heures.
**Le contexte factuel est volontairement prudent.** Le TP ne dit rien de l'édition en cours :
ni montant, ni association, ni participants réels. Seuls figurent des éléments stables
(l'événement existe depuis 2016, créé par ZeratoR et Dach). Toutes les données manipulées
sont inventées, et un encadré le dit explicitement aux élèves dès le contexte. Les streamers
cités ne servent que de noms dans un jeu de données fictif.
**Deux décisions de publication à prendre** avant de pousser :
- `Corrige_TP_ZEvent.md` sera publié automatiquement sur hub-docs, comme tous tes autres
`Corrige_TP_*.md`. Le `robots.txt` le désindexe des moteurs de recherche, mais il reste
accessible depuis la navigation du site. Si tu ne veux pas ça pour demain, il faut soit
l'ajouter temporairement à `EXCLUDE_FILES`, soit ne pas le pousser tout de suite.
- `TP_ZEvent.ipynb` ne sera **pas** publié tant qu'il n'est pas dans
`NOTEBOOK_ALLOWLIST["terminale"]`. Sans ça, les élèves n'auront que la version Markdown
en ligne, et le choix de format annoncé dans le README n'existera pas.
### Points de vigilance
- **Question 1.3** : `"25" + "40"` donne `"2540"`. Leur faire exécuter avant d'expliquer.
- **Question 3.2** : l'initialisation de l'accumulateur avec `liste[0]` et non `0` est le
point qui coince le plus. C'est la question 2 de la synthèse.
- **Question 5.1** : le créneau de Baghera Jones est à cheval sur minuit, donc `debut > fin`.
C'est volontaire, et c'est le seul endroit du TP qui demande de distinguer deux cas.
- **Question 5.2** : parcours d'une liste d'adjacence. La question 4 de la synthèse pose le
problème du cycle sans demander de le résoudre, c'est le pont vers le chapitre Graphes.
### Barème
Réparti sur 20 dans l'énoncé. Les parties 1 à 3 pèsent 13 points : un élève qui a décroché
pendant l'été peut valider la moitié du TP sans toucher aux dictionnaires.
---
## PERRIAND-7
2026-09-06 21:35:04 +02:00
| Fichier | Pour qui | Publié sur hub-docs |
|---|---|---|
| `README.md` | Élèves | oui (page d'index de la section) |
| `PERRIAND-7_Reveil_des_systemes.ipynb` | Élèves | oui (`NOTEBOOK_ALLOWLIST`) |
| `PERRIAND-7_CORRIGE.ipynb` | Professeur | non (aucun notebook Terminale hors allowlist) |
| `NOTES_PROF.md` | Professeur | non (`EXCLUDE_FILES`) |
| `_generateur.py` | Professeur | non (préfixe `_`, il contient le corrigé) |
2026-09-06 21:35:04 +02:00
2026-09-08 20:31:00 +02:00
Notebooks ouvrables sur [notebook.florianmathieu.prof](https://notebook.florianmathieu.prof) (instance Basthon du cours), sur [Basthon](https://basthon.fr), ou dans VSCodium.
2026-09-06 21:35:04 +02:00
Aucune bibliothèque externe, aucun fichier annexe.
---
## Intention
Ces activités ne révisent **pas** le programme de Première pour lui-même : chaque notion
est choisie et cadrée pour ce qui arrive derrière en Terminale.
| Module | Notion révisée | Prépare |
|---|---|---|
| 1, Le réacteur | affectation, mutabilité, aliasing de listes | POO (attributs), listes chaînées |
| 2, Les protocoles | `return` vs `print`, paramètres, portée | **Récursivité**, Modularité |
| 3, Le balayage | `for` / `while`, accumulateur, `range(len(...))` | parcours d'arbres et de graphes |
| 4, La soute | indices, tranches, listes de listes, compréhensions | structures linéaires, tri fusion |
| 5, L'équipage | dictionnaires, `.get()`, dict de listes | **graphes** (liste d'adjacence), mémoïsation |
| 6, Sortie d'orbite | synthèse : parcours avec une pile, pile d'appels | Pile/File, **Récursivité** |
Le module 6 se termine sur un compte à rebours récursif à tracer à la main : c'est le
raccord direct avec le chapitre en cours.
---
## Parti pris pédagogique
**Lire et réparer avant d'écrire.** Après deux mois d'arrêt, la page blanche bloque. Chaque
module suit donc la même montée : *diagnostic* (prédire la sortie sans exécuter), puis
*réparation* (code cassé à corriger), puis *production* (écrire), puis *bonus*.
Les diagnostics donnent aussi un repérage rapide de qui a réellement décroché.
**La difficulté monte, comme au bac.** Les derniers exercices de chaque module, et le
module 6 dans son ensemble, sont volontairement plus exigeants. C'est annoncé aux élèves
dès l'introduction du notebook : les dernières questions servent à voir jusqu'où vont les
meilleurs, ne pas les terminer n'est pas un échec.
**Auto-correction par `assert`.** Chaque production est suivie d'une cellule de tests qui
affiche `OK`. Les élèves avancent sans file d'attente devant le bureau, et ça amorce le
chapitre Modularité (jeux de tests). Tous les `assert` du corrigé ont été exécutés et
passent.
**Modules indépendants.** Chaque module s'ouvre sur une cellule **SECOURS** qui redéfinit
ses données. Un élève bloqué au module 2 peut sauter au module 5 sans rien casser : le fil
rouge est narratif, pas technique.
---
## Conduite de séance
Compter **2 h** pour le parcours complet bonus inclus. Sur **1 h**, le noyau utile est :
- Module 1 : diagnostics 1.1 et **1.2** (l'aliasing, celui qui rapporte le plus)
- Module 2 : diagnostic 2.1 et réparation 2.2 (`print` vs `return`)
- Module 3 : production 3.4 (maximum à la main)
- Module 5 : production 5.3 (dictionnaire de comptage)
Les bonus (1.5, 2.5, 3.6, 4.5, 5.5) sont là pour occuper les rapides. 4.5 (fusion de deux
listes triées) et 6.1 (parcours en profondeur) sont les deux vrais morceaux.
**À faire au tableau plutôt qu'en autonomie :**
- **1.2 (aliasing)** : un schéma mémoire de deux flèches vers la même liste vaut mieux
qu'une explication écrite.
- **6.2 (compte à rebours)** : à tracer collectivement, c'est le pont vers la pile d'appels.
**Points de vigilance :**
- Le diagnostic **3.2** contient une boucle infinie. Elle est en bloc Markdown non
exécutable et signalée comme telle, mais prévenir à l'oral évite un Basthon figé.
- Le diagnostic **2.3** provoque volontairement une `UnboundLocalError`. Insister sur le
fait que la bonne réponse est le passage en paramètre, **pas** `global`.
- La réparation **4.2** (suppression pendant l'itération) est le plus difficile des
exercices non-bonus : leur faire d'abord exécuter le code cassé pour constater.
---
## Régénérer les notebooks
Les deux notebooks sont produits par un script unique (énoncé et corrigé partagent la
même source, ce qui évite qu'ils divergent) :
```bash
2026-09-07 01:03:32 +02:00
python3 _generateur.py # PERRIAND-7
python3 _generateur_zevent.py # Z-Event
2026-09-06 21:35:04 +02:00
```
2026-09-07 01:03:32 +02:00
Pour Z-Event, les sorties attendues affichées en commentaire ne sont pas écrites à la main :
le générateur exécute les solutions de référence et injecte les valeurs obtenues. Modifier
un montant dans le jeu de données met donc à jour tous les résultats de l'énoncé.
2026-09-06 21:35:04 +02:00
Modifier un exercice dans `_generateur.py` puis relancer met à jour les deux notebooks.
Attention : les deux générateurs contiennent le corrigé en clair, et `build_docs.py` publie
les fichiers `.py` comme ressources téléchargeables. Depuis le 7 septembre 2026, **tout
fichier dont le nom commence par `_` est exclu du build**, quel que soit son type. C'est une
règle de préfixe et non une liste de noms : un nouveau fichier de travail est couvert
d'office. Le nommage `_quelquechose` est donc la convention à respecter pour tout ce qui ne
doit pas partir en ligne. `NOTES_PROF.md`, lui, reste exclu par son nom (`EXCLUDE_FILES`).
2026-09-06 21:35:04 +02:00
---
*Lycée Charlotte Perriand, NSI Terminale, Licence CC BY-SA 4.0*