--- description: Programme d'une semaine d'initiation (5 jours de 6 h) pour des élèves de 3e et de Terminale — Linux, terminal, Bash, Python, Git et Forgejo, avec une enquête en fil rouge. --- # Une semaine pour découvrir Linux — 3e et Terminale Cinq journées de six heures pour faire découvrir à des élèves ce qui se cache derrière les serveurs, les sites web et le code : **Linux, le terminal, Bash, Python, Git et la forge Forgejo**. Le même déroulé sert pour les deux niveaux ; ce qui change, c'est la profondeur. !!! warning "Brouillon à valider" Ce programme est une première proposition. Les points encore ouverts sont listés en fin de page, dans [À décider avant la semaine](#a-decider). --- ## Les principes **Alterner toutes les 45 minutes.** Une journée de 6 h devant un écran ne tient pas sans changer de forme. Chaque demi-journée enchaîne un **cours court** (sur le site), un **jeu**, de la **pratique sur un vrai terminal**, et si possible une **activité débranchée**. **Un fil rouge : l'enquête.** Lundi matin, le site du club informatique d'un lycée imaginaire a été modifié pendant la nuit. Chaque après-midi, les élèves avancent dans l'enquête **sur les vrais postes Linux de la salle**, avec les commandes apprises le matin. Vendredi, une épreuve finale en équipes désigne le coupable et remet le site en état. **Les outils :** | Outil | Rôle | |---|---| | [dynamic.alpinux.org](https://dynamic.alpinux.org/jeux/) | Cours avec terminal d'essai intégré, jeux, quiz. Rien à installer. | | Les postes Linux de la salle | La pratique pour de vrai, et l'enquête. | | Ce wiki | Les fiches de référence, et ce programme. | | [La forge d'Alpinux](../guides/git-alpinux.md) | Vendredi : publier son travail et collaborer. | | Un carnet de bord papier | Une page par jour : ce que j'ai appris, une commande à retenir, une question. | --- ## Le déroulé type d'une journée | Horaire | Durée | Activité | |---|---|---| | 9 h 00 | 15 min | Rappel de la veille : quiz éclair au tableau, ou une commande « mystère » à deviner | | 9 h 15 | 45 min | Cours sur le site, avec le terminal d'essai | | 10 h 00 | 30 min | Jeu sur le site | | 10 h 30 | 15 min | Pause | | 10 h 45 | 75 min | Pratique sur le vrai terminal, en binômes | | 12 h 00 | | Repas | | 13 h 30 | 15 min | Activité débranchée, pour se remettre en route | | 13 h 45 | 90 min | Enquête : le chapitre du jour | | 15 h 15 | 15 min | Pause | | 15 h 30 | 45 min | Approfondissement, différent selon le niveau | | 16 h 15 | 15 min | Bilan et carnet de bord | --- ## Lundi — Linux et le terminal **Objectif du jour :** savoir ce qu'est Linux, se repérer dans l'arborescence et s'y déplacer au clavier. - **Accueil (30 min)** : qui est Alpinux, ce qu'est un logiciel libre, où se trouve Linux sans qu'on le voie (téléphones Android, box Internet, serveurs, voitures, la Station spatiale…). - **Débranché — l'arbre humain** : chaque élève porte une étiquette de dossier (`/`, `home`, `alex`, `etc`…) et tient l'épaule de son « parent ». Un élève-curseur se déplace selon les commandes `cd` lancées par la classe. Chemins absolus et relatifs se comprennent dans l'espace avant de se comprendre à l'écran. - **Site** : jeu [Où range-t-on quoi ?](https://dynamic.alpinux.org/jeux/arborescence/), puis cours [Le terminal : se repérer et se déplacer](https://dynamic.alpinux.org/cours/terminal-premiers-pas/) et jeu [Premier jour sur le serveur](https://dynamic.alpinux.org/jeux/terminal-premiers-pas/). - **Vrai terminal** : ouvrir un terminal (Ctrl + Alt + T), les trois défis de fin de cours, explorer son dossier personnel. Fiche : [Le terminal](terminal-se-reperer.md). - **Enquête, chapitre 1 — L'alerte** : le dossier de l'enquête apparaît sur les postes. Le premier message est caché quelque part : `ls -a`, `cd`, `cat`. | | 3e | Terminale | |---|---|---| | Approfondissement | Course d'orientation dans l'arborescence : trouver des fichiers à partir d'indices (« je suis un réglage du réseau… ») | Comment Linux démarre : noyau, `/boot`, `/proc`, PID 1 ; explorer `/proc/cpuinfo` et `/proc/meminfo` | --- ## Mardi — Fichiers, droits et recherche **Objectif du jour :** créer, déplacer et supprimer des fichiers, comprendre les droits, et retrouver une information dans une montagne de texte. - **Site** : jeu [Préparer un déploiement](https://dynamic.alpinux.org/jeux/terminal-fichiers/), puis [rwx : le jeu des permissions](https://dynamic.alpinux.org/jeux/permissions/). - **Vrai terminal** : `mkdir`, `cp`, `mv`, `rm`, les redirections `>` et `>>`, et un premier éditeur de texte dans le terminal, **nano**. - **Débranché — le pipe humain** : une file d'élèves se passe un paquet de cartes. Le premier ne garde que les cartes rouges (`grep`), le suivant les trie (`sort`), le dernier les compte (`wc -l`). C'est exactement ce que fait `|`. - **Enquête, chapitre 2 — Les morceaux** : le message du pirate est découpé en plusieurs fichiers à rassembler (`cat`, `>`), l'un d'eux est verrouillé (`chmod`), et un indice se cache dans un long journal (`grep`). | | 3e | Terminale | |---|---|---| | Approfondissement | Défi « ménage » : ranger un dossier en désordre dans des sous-dossiers par type de fichier | `find`, et les enchaînements `grep … \| sort \| uniq -c \| sort -n` sur un vrai journal | --- ## Mercredi — Bash : faire travailler l'ordinateur à sa place **Objectif du jour :** écrire un script, c'est-à-dire une suite de commandes que l'on peut relancer à volonté. - **Cours** : la ligne `#!/bin/bash`, `chmod +x`, les variables, `echo`, `read`, `if`, `for`. - **Site** : jeux [Sous le capot](https://dynamic.alpinux.org/jeux/noyau-processus/) et, pour les Terminale, [Incident à 3 h du matin](https://dynamic.alpinux.org/jeux/terminal-incident/). - **Débranché — le robot idiot** : un élève joue le robot qui exécute à la lettre un « script » écrit par un autre groupe pour, par exemple, faire un sandwich. Les bugs apparaissent tout seuls, et l'on comprend pourquoi un programme doit être précis. - **Enquête, chapitre 3 — Le script du pirate** : un script laissé sur le serveur. Il faut le lire sans le lancer, comprendre ce qu'il fait, puis écrire son propre script pour décoder le message qu'il a chiffré. | | 3e | Terminale | |---|---|---| | Script du jour | Un quiz interactif en Bash avec `read` et `if`, à faire passer au voisin | Un script de sauvegarde qui prend des arguments (`$1`), vérifie les erreurs (`$?`) et date ses archives | | Approfondissement | Commandes « pour le plaisir » si elles sont installées : `figlet`, `cowsay`, `sl` | Processus et signaux : `ps`, `kill`, `top` ; lien avec le thème « processus » de NSI | --- ## Jeudi — Python **Objectif du jour :** écrire et lancer un programme Python depuis le terminal, puis s'en servir comme outil. Le wiki contient déjà un [cours complet de Python pour débutants](../presentations/Python/README.md) : la journée s'appuie sur ses chapitres plutôt que de tout réécrire. - **Lancer Python** : l'interpréteur interactif `python3`, puis un fichier `.py` écrit avec nano et lancé avec `python3 mon_programme.py`. - **Enquête, chapitre 4 — Les traces** : un journal de connexions de plusieurs milliers de lignes. Écrire un programme Python qui compte les connexions par adresse et par heure, pour trouver quand le pirate est entré. | | 3e | Terminale | |---|---|---| | Notions | Variables, `input`, conditions, boucles : chapitres [01](../presentations/Python/01-variables-types-operateurs.md), [02](../presentations/Python/02-conditions.md) et [03](../presentations/Python/03-boucles.md) | Fichiers, dictionnaires, CSV : chapitres [04](../presentations/Python/04-structures-de-donnees.md) et [07](../presentations/Python/07-fichiers-csv-json.md) | | Projet | Le jeu « devine le nombre », puis des dessins avec `turtle` | Le même comptage qu'en Bash mardi, réécrit en Python : comparer les deux approches | !!! tip "Pour les Terminale NSI" Python est déjà le langage de NSI. L'intérêt de la journée n'est pas d'apprendre la syntaxe, mais de l'utiliser **hors de l'éditeur de l'école** : depuis le terminal, sur de vraies données, avec la bibliothèque standard (`pathlib`, `csv`, `collections`). --- ## Vendredi — Git, Forgejo, et le dénouement **Objectif du jour :** garder l'historique de son travail avec Git, le publier sur une forge, et travailler à plusieurs sur le même code. - **Débranché — la machine à remonter le temps** : un texte écrit à plusieurs sur une feuille, avec une photo prise à chaque étape. Revenir à la photo d'hier, c'est un `git checkout` ; la pile de photos, c'est `git log`. - **Git en local** : `git init`, `git add`, `git commit`, `git log`, `git diff`. Chacun versionne les scripts et programmes écrits pendant la semaine. - **Forgejo** : déposer ce travail sur la [forge d'Alpinux](../guides/git-alpinux.md), en explorer l'interface web, et proposer une modification sur le dépôt d'un camarade. - **Enquête, chapitre 5 — Le dénouement** : épreuve en équipes, chronométrée. Le site du club est versionné avec Git : l'historique des commits révèle qui l'a modifié et quand. Il faut identifier le coupable, croiser avec les indices des jours précédents, puis remettre le site en état en revenant à une version saine. - **Clôture (45 min)** : remise des diplômes, ce qu'on retient de la semaine, et la suite (réunions Alpinux, install parties, spécialité NSI). | | 3e | Terminale | |---|---|---| | Forgejo | Modifier un fichier depuis l'interface web et ouvrir une pull request | Branches, pull request depuis le terminal, résolution d'un conflit provoqué exprès | --- ## Ce qu'il faut préparer **Sur les postes**, à vérifier en amont : - [ ] un terminal accessible aux élèves, et les commandes `git`, `python3`, `nano`, `tree` ; - [ ] facultatif, pour le plaisir : `figlet`, `cowsay`, `sl` ; - [ ] l'accès à `dynamic.alpinux.org` et à `gitea.alpinux.org` depuis le réseau de l'établissement (certains filtres bloquent les forges) ; - [ ] le dossier de l'enquête, installé par un script à lancer sur chaque poste. **Pour la salle** : un vidéoprojecteur, des étiquettes et des cartes pour les activités débranchées, un carnet de bord par élève, des diplômes à imprimer. --- ## À décider avant la semaine {#a-decider} | Question | Pourquoi c'est important | |---|---| | **Les comptes Forgejo des élèves.** Comptes AlpID nominatifs, comptes anonymes de classe (`eleve01`, `eleve02`…), ou forge installée localement pour la semaine ? | Les élèves sont mineurs : la solution la plus simple côté données personnelles est celle des comptes anonymes, créés à l'avance et supprimés après la semaine. | | **Le nombre d'élèves et de postes.** | Le travail en binômes demande un poste pour deux au minimum. | | **La distribution installée et les droits.** Peut-on installer des paquets ? Les élèves ont-ils `sudo` ? | Sans droits d'installation, il faut vérifier toute la liste ci-dessus avant le lundi. | | **Les horaires exacts** de l'établissement. | Le déroulé type se décale facilement, mais les pauses et le repas sont imposés. | | **Les scores sur le site.** | Ils ne s'enregistrent qu'avec un compte AlpID. Sans compte, on peut faire un classement par équipe à la main, à partir des écrans de fin de partie. |