108 lines
4.9 KiB
Markdown
108 lines
4.9 KiB
Markdown
# Révisions de rentrée : PERRIAND-7
|
|
|
|
Activités de reprise pour la rentrée de Terminale, après la coupure estivale.
|
|
Fil rouge unique : le réveil d'une station orbitale après deux mois d'hibernation.
|
|
|
|
| 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 (`EXCLUDE_FILES`, il contient le corrigé) |
|
|
|
|
Notebooks ouvrables sur [Basthon](https://basthon.fr), Jupyter ou VS Code.
|
|
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
|
|
python3 _generateur.py
|
|
```
|
|
|
|
Modifier un exercice dans `_generateur.py` puis relancer met à jour les deux notebooks.
|
|
|
|
Attention : `_generateur.py` contient le corrigé en clair, et `build_docs.py` publie les
|
|
fichiers `.py` comme ressources téléchargeables. Il est explicitement exclu du build
|
|
(`EXCLUDE_FILES`), tout comme le présent fichier. Ne pas le renommer sans mettre à jour
|
|
cette exclusion côté serveur.
|
|
|
|
---
|
|
*Lycée Charlotte Perriand, NSI Terminale, Licence CC BY-SA 4.0*
|