Classe : Terminale
Spécialité : Numérique et Sciences Informatiques
Professeur : M. MICHEL
Année scolaire : 2025 / 2026

 

nsi.gecif.net

Rappel du règlement et des objectifs pour lesquels on vient en classe

Rappel des horaires des séances de la spécialité Numérique et Sciences Informatiques en terminale (6 H par semaine) :

Pour les séances de N.S.I. il faut venir en classe :

Travail à faire systématiquement à la maison :

Le classeur de N.S.I. est structuré en 5 intercalaires :

Sur tous les documents présents dans le classeur, l'intercalaire et la date doivent être inscrites dès la distribution de la photocopie. Dans chaque intercalaire les documents sont rangés par ordre chronologique en utilisant l'information "date".

En cas d'absence à une évaluation, un zéro provisoire est inscrit sur Pronote jusqu'à ce que l'élève rattrape l'évaluation en classe.

 

Contenu du cahier de texte

Le cahier de texte ci-dessous rappelle, pour chacune des séances de N.S.I., le travail qui a été fait en classe. Il permet également de connaître pour chaque document distribué en classe sa date et son intercalaire (inscrite entre parenthèses ci-dessous) afin de le ranger dans le classeur.

Le cahier de texte de la classe de première NSI de l'an dernier est disponible en cliquant ici.

Pour accéder à une séance précise saisissez une date :

  Aller directement à la séance choisie

DateTravail fait en classe durant cette séance
vendredi 5 septembre 2025
Encodage des caractères : SÉANCE 1/2

Accueil des élèves et rappel des horaires en terminale

Précisions sur le programme et l’organisation de l’année de terminale pour la spécialité N.S.I.

COURS (N) : Encodage des caractères Unicode en UTF-8

- principe de l'encodage en UTF-8 sur 2, 3 ou 4 octets
- exercices pages 2 sur l'encodage et le décodage en UTF-8

Travail à faire à la maison : réviser tous les thèmes du QCM transversal de N.S.I. de fin de première et s'entraîner en particulier sur le thème "L'encodage des caractères"
mardi 9 septembre 2025
Encodage des caractères : SÉANCE 2/2

Il existe 3 représentations différentes pour décrire un caractère, et donc 6 transformations possibles :

- convertir un caractère en point de code
- convertir un caractère en séquence UTF-8
- convertir un point de code en caractère
- convertir un point de code en séquence UTF-8
- convertir une séquence UTF-8 en caractère
- convertir une séquence UTF-8 en point de code

Distribution du document complet "Jeux de caractères et encodage"

Révision de la partie découverte "L'encodage des caractères en Python" avec consultation des prises de notes réalisées l’an dernier en première.

Fin de la partie application "L'encodage des caractères en Python" avec prise de notes :

- Application 8 : conversion unicode dans tous les sens
- Application 9 : recherche de caractères unicode
mercredi 10 septembre 2025
Accès aux fichiers en Python : SÉANCE 1/4

Correction des 6 transcodages en Python entre point de code, séquence UTF-8 et caractère.

Partie DECOUVERTE de l'accès aux fichiers en Python
vendredi 12 septembre 2025
Accès aux fichiers en Python : SÉANCE 2/4
- Cours "Accès aux fichiers en Python" (L)
- précision sur le chemin d'accès à un fichier sur le disque dur et sur le nom des fichiers
- précisions sur certaines fonctions ou méthodes Python relatives à l'accès aux fichiers :

open() read() readlines() write() seek() tell() close() getcwd() chdir()

- fin de la partie DECOUVERTE de l'accès aux fichiers en Python
- début de la partie APPLICATION de l'accès aux fichiers en Python
mardi 16 septembre 2025
Accès aux fichiers en Python : SÉANCE 3/4

Précisions sur le BOM ("Byte Order Mark" en anglais, soit "indicateur d'ordre des octets" en français), caractère unicode de point de code U+FEFF enregistré sur 3 octets au début d’un fichier UTF-8 et servant de marqueur pour confirmer l’encodage du fichier.

Suite de la partie APPLICATION de l'accès aux fichiers en Python
mercredi 17 septembre 2025
Accès aux fichiers en Python : SÉANCE 4/4

Rappel de la méthode d'apprentissage des cours et de l'auto-évaluation en utilisant l'ENT nsi.gecif.net :
- PHASE 1 : disposer d'un cours complet, proprement rédigé, et l'apprendre en se remémorant les exemples donnés en classe
- PHASE 2 : découvrir les thèmes des QCM indiqués dans le cahier de texte, et faire le lien avec les méthodes données en cours en répondant à 25 questions par thèmes
- PHASE 3 : refaire le QCM en augmentant la note jusqu'à dépasser 15/20 et en se passant progressivement du cours papier
- PHASE 4 : une évaluation en classe fera le bilan de l'apprentissage du chapitre avec un système de points bonus/malus sur la note finale

Fin de la partie APPLICATION de l'accès aux fichiers en Python

Application 7 : traitement d'un fichier CSV

Notions abordées dans cette application :
- organisation des données en table
- enregistrement des données dans un fichier au format CSV (Comma-Separated Values)

Les applications non finies en classe sont à finir à la maison.
vendredi 19 septembre 2025
ÉVALUATION

Évaluation sur tous les thèmes du QCM transversal de N.S.I. de fin de première :

- Nombre de thèmes : 18
- Nombre de questions : 200
- Temps maximal : 2 heures
- Coefficient : 1
- Barème : +1 point par question juste et 0 point par question fausse ou nulle
- Documents et logiciels interdits
- Brouillon et calculatrice autorisés

Travail à faire dans le temps restant : poursuivre les applications sur les fichiers en Python
mardi 23 septembre 2025
Les structures de données : SÉANCE 1/8
COURS (D) : "Les structures de données linéaires"

Entraînement sur le QCM "Les structures de données"

Découverte du thème "Les structures linéaires" (25 questions)

Objectif à atteindre : 50 questions consécutives sans aucune erreur en utilisant la version « STOP à la première erreur » du QCM

En cas d'erreur on recommence à zéro la série de 50 questions jusqu'à atteindre l'objectif de travail demandé. Si l'objectif de travail n'est pas atteint en classe il est à finir à la maison.
mercredi 24 septembre 2025
Les structures de données : SÉANCE 2/8
COURS (D) : "Les graphes"

Entraînement sur le thème "Les graphes" du QCM "Les structures de données"

Découverte du thème "Les graphes" (25 questions)

Objectif à atteindre : 50 questions consécutives sans aucune erreur en utilisant la version « STOP à la première erreur » du QCM

En cas d'erreur on recommence à zéro la série de 50 questions jusqu'à atteindre l'objectif de travail demandé. Si l'objectif de travail n'est pas atteint en classe il est à finir à la maison.
vendredi 26 septembre 2025
Les structures de données : SÉANCE 3/8
COURS (D) : "Les arbres" (pages 1 à 3)

Entraînement sur les 2 thèmes suivants du QCM "Les structures de données" :
- Les arbres
- Qu’ai-je retenu de tous mes cours

Objectif à atteindre : 50 questions consécutives sans aucune erreur en utilisant la version « STOP à la première erreur » du QCM

En cas d'erreur on recommence à zéro la série de 50 questions jusqu'à atteindre l'objectif de travail demandé. Si l'objectif de travail n'est pas atteint en classe il est à finir à la maison.
mardi 30 septembre 2025
Les structures de données : SÉANCE 4/8
Fin du COURS (D) : "Les arbres" (page 4)
- Parcours d'un arbre
- Les arbres binaires de recherche

Exercice sur le thème "Les arbres binaires de recherche" du QCM "Les structures de données" (25 questions)

Exercice sur le thème "Parcours d'un arbre" du QCM "Les structures de données" (25 questions)

Entraînement sur les 3 thèmes suivants du QCM "Les structures de données" :
- Les arbres
- Les arbres binaires de recherche
- Parcours d'un arbre

Objectif à atteindre : 50 questions consécutives sans aucune erreur en utilisant les 3 thèmes dans la version « STOP à la première erreur » du QCM

En cas d'erreur on recommence à zéro la série de 50 questions jusqu'à atteindre l'objectif de travail demandé. Si l'objectif de travail n'est pas atteint en classe il est à finir à la maison.
mercredi 1 octobre 2025
Les structures de données : SÉANCE 5/8
Définitions affinées concernant les arbres :
- définition du nœud racine
- définition des nœuds internes
- définition des feuilles

Précisions sur :
- l’arbre nul (le seul arbre possédant aucun nœud et de hauteur 0)
- l’arbre unitaire (le seul arbre possédant un seul nœud et de hauteur 1)
- l'algorithme de parcours d'un arbre en largeur utilise une file
- l'algorithme de parcours d'un arbre en profondeur utilise une pile

L'arbre nul a une taille de 0 et une hauteur de 0 : pour l'arbre nul la taille est égale à la hauteur.

L'arbre unitaire a une taille de 1 et une hauteur de 1 : pour l'arbre unitaire la taille est égale à la hauteur. De plus, l'unique nœud de l'arbre unitaire est à la fois racine (il n'a pas de parent) et feuille (il n'a pas de fils).

Remarque : tous les arbres dégénérés ont leur taille égale à leur hauteur.

Entraînement sur tous les thèmes du QCM "Les structures de données" avec validation des points bonus.

Les points bonus sont élaborés en fonction du nombre maximal de bonnes réponses consécutives atteint en utilisant tous les thèmes de la version « STOP à la première erreur » du QCM selon le barème suivant (tous documents autorisés) :
- moins de 20 réponses consécutives justes : -2 points
- entre 20 et 39 réponses consécutives justes : -1 point
- entre 40 et 59 réponses consécutives justes : 0 point
- entre 60 et 79 réponses consécutives justes : +1 point
- 80 réponses consécutives justes ou plus : +2 points
vendredi 3 octobre 2025
Les structures de données : SÉANCE 6/8
Remarques sur les structures de données :

Rappel du nombre total de nœuds, du nombre de feuilles et du nombre de nœuds internes pour un arbre binaire complet de hauteur n, sachant que 2n - 2n-1=2n-1 :

- nombre total de nœuds (taille de l'arbre) : 2n - 1
- nombre de feuilles : 2n-1
- nombre de nœud racine : 1

Comme le nombre de nœuds internes = taille – nombre de feuilles - 1 on en déduit que, pour un arbre binaire complet :

nombre de nœuds internes = 2n - 1 - 2n-1 - 1 soit 2n - 2n-1 - 2 et comme 2n - 2n-1=2n-1 on trouve 2n-1 - 2

Conclusion : dans un arbre binaire complet de hauteur h il y a 2h-1 - 2 nœuds internes

- Structure Linéaire ou non linéaire : Lorsque les éléments sont ordonnés (liste) on
parle de structure linéaire. Un dictionnaire est une structure non linéaire.
- Structure homogène ou non : Les éléments sont tous du même type ou non. En Python
on peut mettre n’importe quel type dans des listes, donc la structure sera non
homogène.
- Structure Statique ou Dynamique : La taille est fixée et ne peut être modifiée en
fonction des besoins. Une liste est une structure dynamique, mais un tuple est une structure statique.
- Structure hiérarchique : les données sont organisées avec la notion de hiérarchie père/fils (un arbre)
- Structure relationnelle : en plus des données, cette structure possède les liaisons entre les données (un graphe)

Termes anglais liés aux structures de données :

- un tableau : array
- une pile : stack
- une file : queue
- le sommet : peek
- empiler : push
- dépiler : pop
- enfiler : enqueue
- défiler : dequeue

Entraînement sur tous les thèmes du QCM "Les structures de données" avec validation des points bonus.

Les points bonus sont élaborés en fonction du nombre maximal de bonnes réponses consécutives atteint en utilisant tous les thèmes de la version « STOP à la première erreur » du QCM durant les séances d'entraînement en classe selon le barème suivant (tous documents autorisés) :
- moins de 20 réponses consécutives justes : -2 points
- entre 20 et 39 réponses consécutives justes : -1 point
- entre 40 et 59 réponses consécutives justes : 0 point
- entre 60 et 79 réponses consécutives justes : +1 point
- 80 réponses consécutives justes ou plus : +2 points

Ceux qui ont atteint au moins 40 questions consécutives sans erreur (et qui n'ont donc plus de malus) ont le choix entre deux activités à réaliser :

- soit poursuivre l'entraînement sur tous les thèmes du QCM "Les structures de données" afin de gagner des points bonus (objectif à atteindre : répondre à plus de 60 questions consécutives sans erreur)
- soit commencer l'Application 6 du module Turtle de Python : le tracé d'un graphe décrit par sa matrice d'adjacence
mardi 7 octobre 2025
Les structures de données : SÉANCE 7/8
Rappels sur les graphes :
- graphe simple = ni boucle ni arrêtes parallèles
- graphe orienté = les arrêtes sont en forme de flèche
- graphe pondéré = les arrêtes sont étiquetées par un nombre
- graphe complet = chaque sommet est adjacent à tous les autres
- graphe connexe = il existe toujours un chemin pour aller d'un sommet à un autre

On en déduit que :
- un graphe complet est forcément connexe
- un graphe non connexe est forcément non complet

Remarques sur les arbres :
- la racine du SAG = le fils gauche
- la racine du SAD = le fils droit
- un nœud N qui n'a pas de fils = une feuille
- un nœud N dont le SAG et le SAD sont des arbres nuls = une feuille
- un nœud N dont le SAG et le SAD sont des arbres de hauteur 0 = une feuille
- un nœud N dont le SAG et le SAD sont des arbres de hauteur 1 = le père d'une feuille
- un nœud N dont le SAG et le SAD sont des arbres de hauteur 2 = le grand-père d'une feuille
- racine du SAG = fils gauche donc Fils de la racine du SAG = petit-fils gauche

Entraînement sur tous les thèmes du QCM "Les structures de données" avec validation des points bonus.

Les points bonus sont élaborés en fonction du nombre maximal de bonnes réponses consécutives atteint en utilisant tous les thèmes de la version « STOP à la première erreur » du QCM durant les séances d'entraînement en classe selon le barème suivant (tous documents autorisés) :
- moins de 20 réponses consécutives justes : -2 points
- entre 20 et 39 réponses consécutives justes : -1 point
- entre 40 et 59 réponses consécutives justes : 0 point
- entre 60 et 79 réponses consécutives justes : +1 point
- 80 réponses consécutives justes ou plus : +2 points

Ceux qui ont atteint au moins 40 questions consécutives sans erreur (et qui n'ont donc plus de malus) ont le choix entre deux activités à réaliser :

- soit poursuivre l'entraînement sur tous les thèmes du QCM "Les structures de données" afin de gagner des points bonus (objectif à atteindre : répondre à plus de 60 questions consécutives sans erreur)
- soit poursuivre l'Application 6 du module Turtle de Python : le tracé d'un graphe décrit par sa matrice d'adjacence
mercredi 8 octobre 2025
Les structures de données : SÉANCE 8/8
Remarques sur les arbres binaires de recherche (ABR) :

- si un nœud possède ses 2 fils (racine ou nœud interne) alors sa valeur est comprise entre ses 2 fils
- si un nœud interne possède un seul fils alors il faut consulter l’arbre vers ses ascendants pour connaître son intervalle de valeur
- si un nœud possède aucun fils (c'est donc une feuille) alors il faut consulter l’arbre vers ses ascendants pour connaître son intervalle de valeur
- si on ajoute une nouvelle valeur dans l’ABR c’est forcément une feuille
- si les valeurs entrées dans l’ABR sont déjà triées (ex : dans l’ordre croissant) alors on obtient un arbre binaire dégénéré
- par défaut il n’y a pas de doublon dans un ABR (sauf avis contraire dès la construction de l'ABR)

Entraînement sur tous les thèmes du QCM "Les structures de données" avec validation des points bonus.

Les points bonus sont élaborés en fonction du nombre maximal de bonnes réponses consécutives atteint en utilisant tous les thèmes de la version « STOP à la première erreur » du QCM durant les séances d'entraînement en classe selon le barème suivant (tous documents autorisés) :
- moins de 20 réponses consécutives justes : -2 points
- entre 20 et 39 réponses consécutives justes : -1 point
- entre 40 et 59 réponses consécutives justes : 0 point
- entre 60 et 79 réponses consécutives justes : +1 point
- 80 réponses consécutives justes ou plus : +2 points

Ceux qui ont atteint au moins 40 questions consécutives sans erreur (et qui n'ont donc plus de malus) ont le choix entre deux activités à réaliser :

- soit poursuivre l'entraînement sur tous les thèmes du QCM "Les structures de données" afin de gagner des points bonus (objectif à atteindre : répondre à plus de 60 questions consécutives sans erreur)
- soit poursuivre l'Application 6 du module Turtle de Python : le tracé d'un graphe décrit par sa matrice d'adjacence
vendredi 10 octobre 2025
ÉVALUATION

Évaluation sur tous les thèmes du QCM "Les structures de données" :

- Nombre de thèmes : 6
- Nombre de questions : 150
- Temps maximal : 2 heures (48 secondes par question en moyenne)
- Coefficient : 1
- Barème : +1 point par question juste et 0 point par question fausse ou nulle
- Documents, logiciels et calculatrice interdits
- Brouillon autorisé

Liste des 6 thèmes :
- Les structures linéaires
- Les graphes
- Les arbres
- Les arbres binaires de recherche
- Parcours d'un arbre
- Qu'ai-je retenu de tous mes cours ?

Travail au choix dans le temps restant :
- suite du programme en Python pour tracer un graphe avec le module Turtle
- validation définitive des points bonus avec les 6 thèmes du QCM "Les structures de données"

Les points bonus sont élaborés en fonction du nombre maximal de bonnes réponses consécutives atteint en utilisant tous les thèmes de la version « STOP à la première erreur » du QCM selon le barème suivant (tous documents autorisés) :
- moins de 20 réponses consécutives justes : -2 points
- entre 20 et 39 réponses consécutives justes : -1 point
- entre 40 et 59 réponses consécutives justes : 0 point
- entre 60 et 79 réponses consécutives justes : +1 point
- 80 réponses consécutives justes ou plus : +2 points

Exemples de sujets de bac à voir : les exercices 1 des sujets 3, 10, 11 et 14 de l'épreuve écrite de NSI de 2022.

Voici des exemples de sujets du BAC 2025 de l'épreuve écrite de NSI traitant des structures de données : sujet 1 exercice 1 et exercice 3, sujet 2 exercice 1 et exercice 2, sujet 3 exercice 2, sujet 4 exercice 2, sujet 7 exercice 3, sujet 9 exercice 1, sujet 11 exercice 3, et sujet 13 exercice 3.
mardi 14 octobre 2025
TP1 : SÉANCE 1/3

Implémentation des arbres en Python sans utiliser la programmation orienté objet

TP1 Les arbres binaires en Python (sans POO) : représentation avec matplotlib, ABR, codage de Huffman

- définition récursive des arbres binaires
- implémentation d'un nœud avec un tuple (racine,fils gauche,fils droit)
- l’arbre vide est représenté par None
- codage d'un arbre binaire avec des tuples de tuples
- par exemple : arbre=(2,(1,(0,None,None),None),(5,(4,(3,None,None),None),(12,(9,(8,(6,None,(7,None,None)),None),(10,None,(11,None,None))),(13,None,(14,None,(18,(17,(15,None,(16,None,None)),None),(19,None,None)))))))
- affichage du nombre de nœuds, du nombre de feuilles, de la liste de feuilles et de la hauteur de l'arbre binaire
- appels récursifs des fonctions pour visiter automatiquement tous les nœuds de l’arbre
- tracé graphique de l'arbre binaire en utilisant la bibliothèque matplotlib
mercredi 15 octobre 2025
TP1 : SÉANCE 2/3

Suite du TP1 Les arbres binaires en Python (sans POO) : représentation avec matplotlib, ABR, codage de Huffman

- implémentation d'un arbre binaire de recherche (ABR) avec des tuples de tuples
- recherche récursive d'une valeur dans l'ABR
- recherche du minimum (on va à fond à gauche) et du maximum (on va à fond à droite) dans l'ABR
- modification de l'ABR : ajout et suppression d'une valeur
- génération d'un ABR aléatoire à partir d'une liste aléatoire
- implémentation des différents types de parcours d'un arbre
- le parcours en largeur (parcours niveau par niveau)
- distinction entre les 3 parcours en profondeur :
• le parcours préfixe : R,G,D
• le parcours infixe : G,R,D (donne une liste triée des nœuds de l’ABR)
• le parcours suffixe : G,D,R
- utilisation d'un ABR pour trier une liste aléatoire : on range la liste dans un ABR puis on donne son parcours infixe
vendredi 17 octobre 2025
TP1 : SÉANCE 3/3

Explication du travail à faire à la maison durant les vacances de Toussaint.

Fin du TP1 Les arbres binaires en Python (sans POO) : représentation avec matplotlib, ABR, codage de Huffman

- rappel de la création d'une liste par compréhension : [2*k for k in range(8)] donne [0, 2, 4, 6, 8, 10, 12, 14]
- codage d'un texte en binaire en utilisant les codes ASCII des caractères : fonction ord()
- décodage d'un message binaire pour retrouver les codes ASCII : fonction chr()
- notion de code-préfixe (aucun mot du code préfixe ne peut se prolonger pour donner un autre mot du code)
- codage de Huffman pour la compression de données : il génère pour chaque caractère un code-préfixe à taille variable en utilisant un arbre binaire
- utilisation d'un file de priorité (file auto-triée lors de l'ajout d'un élément) avec le module heapq de Python
- estimation du taux de compression obtenu avec le codage de Huffman par rapport au codage ASCII
Vacances de ToussaintTravail à faire pendant les vacances de Toussaint :

- réviser tout le chapitre sur les structures de données (cours, exemples, et TP Python)
- terminer l'Application 6 du module Turtle qui trace un graphe d'ordre 9 en fonction de sa matrice d'adjacence
- terminer le TP1 sur l’implémentation et l’utilisation des arbres binaires en Python
- exemples de sujets de bac 2025 à voir : sujet 1 exercice 1 et exercice 3, sujet 2 exercice 1 et exercice 2, sujet 3 exercice 2, sujet 4 exercice 2, sujet 7 exercice 3, sujet 9 exercice 1, sujet 11 exercice 3, et sujet 13 exercice 3.
mardi 4 novembre 2025
Introduction à la Programmation Orientée Objet (POO)
Création de la fiche pratique "La programmation orientée objets (POO)" afin de prendre des notes régulièrement.

Introduction à la Programmation Orientée Objet (POO) :
  • distinction entre attribut et méthode
  • distinction entre classe et instance
  • création et amélioration de la classe Perso :
    • ajout d'un nouvel attribut ami et création d'une liste chaînée
    • ajout de 2 nouveaux attributs parent1 et parent2 pour implémenter un arbre généalogique
  • création et amélioration de la classe Pion :
    • ajout d'un attribut rayon
  • notion d'héritage
Travail à faire à la maison : résumer le principe de la création d'objets en Python sur la fiche pratique "La programmation orientée objets (POO)".
mercredi 5 novembre 2025
TP2 : SÉANCE 1/2

TP2 : Implémentation d'un arbre binaire en Python en utilisant la POO

Rappel de l'implémentation d'un arbre binaire par liste de liste (sans POO)

Création d'une classe Arbre possédant les méthodes suivantes :
- __init__(self, val)
- ajout_gauche(self, val)
- ajout_droit(self, val)

Création des fonctions suivantes externes à la classe :
- vide(arbre) renvoyant True si l'arbre est vide
- gauche(arbre)
- droit(arbre)
- taille(arbre)
- hauteur(arbre)

Ajout des méthodes suivantes à la classe Arbre :
- taille(self)
- hauteur(self)
- vide(self) renvoyant True si l'arbre est vide

Distinction entre les fonctions externes à la classe (elles attendent en paramètre un arbre) et les méthodes internes à la classe Arbre (elles agissent directement sur l'arbre lui-même : self).

Distinction entre l’arbre a (liste de liste) et l’arbre b (définit par les objets).
vendredi 7 novembre 2025
TP2 : SÉANCE 2/2

Correction de la première activité :
- implémentation d'une liste chaînée en POO
- implémentation d'un arbre généalogique en POO

Fin du TP2 : Implémentation d'un arbre binaire en Python en utilisant la POO

Création de 3 fonctions externes à la classe Arbre prenant en paramètre un objet "arbre" de classe Arbre et affichant chacune un parcours en profondeur sur une ligne dans la console :
- parcours_prefixe(arbre)
- parcours_infixe(arbre)
- parcours_suffixe(arbre)

Enrichissement de la classe Arbre en créant 3 nouvelles méthodes qui affichent chacune un parcours en profondeur de l'arbre lui-même sur une ligne dans la console :
- parcours_prefixe(self)
- parcours_infixe(self)
- parcours_suffixe(self)
mardi 11 novembre 2025Armistice 1918
mercredi 12 novembre 2025
TP3 : SÉANCE 1/3

Correction du TP 2 : explication de la solution optimisée des 3 méthodes parcours_prefixe(self), parcours_infixe(self) et parcours_suffixe(self) de la classe Arbre.

TP3 : Implémentation des structures de données linéaires en Python en utilisant la POO

- rappel des bases de la POO : classes, attributs et méthodes
- rappel sur les structures de données (linéaire ou non linéaire, homogène ou non, statique ou dynamique)
- création et test de la classe Perso (avec nom, prénom, statut, date de naissance et nationalité)
- test de la méthode info()
- ajout des méthodes age() et majeur() à la classe Perso
- ajout de l’attribut classe et de la méthode est_eleve_de() à la classe Perso
vendredi 14 novembre 2025
TP3 : SÉANCE 2/3

Suite du TP3 : Implémentation des structures de données linéaires en Python en utilisant la POO
- création d'un classe Tableau avec les méthodes insert et supprime (programme de base à compléter puis solution finale donnée)
- création d'un classe Pile (programme de base à compléter puis solution finale donnée)
- création d'un classe File (programme de base à compléter puis solution finale donnée)
- création d'un classe Maillon pour implémenter une liste chaînée (programme de base à compléter puis solution finale donnée)
mardi 18 novembre 2025
TP3 : SÉANCE 3/3

Remarque sur l'implémentation rapide des piles et des files en Python :
- une simple liste peut servir de pile : méthode append() pour empiler et méthode pop() pour dépiler
- le module queue implémente facilement une file : méthode put() pour enfiler et méthode get() pour défiler

- Fin du TP3 : Implémentation des structures de données linéaires en Python en utilisant la POO
- Terminer le TP2
- Terminer le TP1
- Faire les exercices suivants de l’épreuve écrite de NSI avec validation dans Python:
• BAC 2025 Sujet 1 Exercice 1
• BAC 2025 Sujet 2 Exercices 1 et 2
• BAC 2025 Sujet 3 Exercice 2
• BAC 2025 Sujet 4 Exercice 2
mercredi 19 novembre 2025
Les bases des algorithmes : SÉANCE 1/4
Cours "Premiers pas en algorithmique" :
- pseudo code
- complexité temporelle et spatiale
- variant et invariant de boucle
- distinction entre un algorithme itératif et un algorithme récursif
- distinction entre un algorithme et un algorigramme

Application : comparaison de 2 implémentations en Python de la fonction factorielle :
- algorithme itératif
- algorithme récursif
- comparaison des complexités temporelle (mesure du temps d'exécution) et spatiale (limite du nombre d'appel récursif)

Création de la fiche pratique vierge "Algorithmes et algorigrammes" sur une copie double afin de prendre des notes concernant les différents thèmes lors de l'entraînement sur le QCM ou en cas de questions. Elle est structurée en 4 paragraphes :
- Les algorithmes
- Les algorithmes de compression
- Les algorithmes de tri
- Les algorigrammes

Explication du nouveau barème pour le QCM : -1 point en cas d'erreur (et non 0).

Découverte du thème "Analyse d'algorithmes" du QCM "Algorithmes et algorigrammes" en s'aidant d'une calculatrice programmable ou de Python pour les algorithmes itératifs

Travail à faire à la maison : s'entraîner sur le thème "Analyse d'algorithmes" du QCM "Algorithmes et algorigrammes" en s'aidant d'une calculatrice programmable ou de Python pour les algorithmes itératifs

Objectif à atteindre : dépasser une note de 10/20 avec 50 questions
vendredi 21 novembre 2025
Les bases des algorithmes : SÉANCE 2/4
COURS : Les algorithmes de compression
- compression RLE
- la codage de Huffman

Distribution de l'exemple "La codage de Huffman" donnant la solution pour coder le mot "anticonstitutionnellement"

Application : découverte du thème "Les algorithmes de compression" du QCM "Algorithmes et algorigrammes" avec prise de notes sur la nouvelle fiche pratique "Algorithmes et algorigrammes" (dans le paragraphe "Les algorithmes de compression")

Application pratique du codage de Huffman page 16 du TP1 "Représentation des arbres binaires en Python (sans POO)"

Travail à faire à la maison : s'entraîner sur le thème "Les algorithmes de compression" du QCM "Algorithmes et algorigrammes" en prenant des notes sur la fiche pratique "Les algorithmes de compression"

Objectif à atteindre : dépasser une note de 10/20 avec 50 questions
mardi 25 novembre 2025
Les bases des algorithmes : SÉANCE 3/4
COURS : Les algorithmes de tri

- le tri par sélection
- le tri par insertion
- le tri à bulles
- le tri fusion (basé sur le principe 'Diviser pour régner')

Illustration de la fusion de deux listes triées.

Découverte des applications interactives illustrant les différents algorithmes de tri :
- le tri par insertion
- le tri par sélection
- le tri bulle
- le tri fusion

Découverte des 6 cartes virtuelles (complétant les 12 cartes en papier) pour simuler et analyser un algorithme de tri.

Création sur la fiche pratique "Algorithmes et algorigrammes" (paragraphe "Les algorithmes de tri") du tableau donnant le nombre de comparaisons et de déplacements pour les tris par insertion, par sélection et à bulles dans différentes situations (pire des cas et meilleur des cas)

Recherche expérimentale des solutions pour remplir le tableau :
- utilisation des cartes pour simuler un algorithme de tri en particulier
- consultation du site avec les animations des tris
- prise de notes en utilisant le thème "Les algorithmes de tri" du QCM "Algorithmes et algorigrammes"

Application : découverte du thème "Les algorithmes de tri" du QCM "Algorithmes et algorigrammes" avec prise de notes sur la fiche pratique "Algorithmes et algorigrammes" (dans le paragraphe "Les algorithmes de tri")

Travail à faire à la maison : s'entraîner sur le thème "Les algorithmes de tri" du QCM "Algorithmes et algorigrammes" en prenant des notes sur la fiche pratique "Les algorithmes de tri"

Objectif à atteindre : dépasser une note de 10/20 avec 50 questions
mercredi 26 novembre 2025
Les bases des algorithmes : SÉANCE 4/4
Précisions sur les 3 points suivants :
- recherche dichotomique dans un tableau trié
- distinction entre les algorithmes de tri itératifs (sélection, insertion et bulle) et récursif (fusion)
- niveau de complexité d'un algorithme

Mesure et notation de la complexité de différents algorithmes :

- taille d'un tableau : O(1)
- recherche linéaire dans un tableau non trié : O(n)
- tri par sélection, tri par insertion et tri à bulles : O(n²)
- recherche dichotomique dans un tableau trié : O(log(n))
- tri fusion : O(n.log(n))

Entraînement sur les 3 premiers thèmes du QCM "Algorithmes et algorigrammes" avec prise de notes sur les fiches pratiques.

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 3 thèmes à la fois.

Travail à faire à la maison : s'entraîner sur les 3 premiers thèmes du QCM "Algorithmes et algorigrammes" en recherchant une solution pour résoudre les algorithmes les plus complexes avec la calculatrice

Liste des 3 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 3 thèmes à la fois
vendredi 28 novembre 2025
ÉVALUATION
Évaluation sur les 3 premiers thèmes du QCM "Algorithmes et algorigrammes" :

- Nombre de thèmes : 3
- Nombre de questions : 100 (33 questions par thème en moyenne)
- Temps maximal : 2 heures (72 secondes par question en moyenne)
- Coefficient : 1
- Barème : +1 point par question juste et -1 point par question fausse ou nulle
- Documents et logiciels interdits
- Brouillon et calculatrice autorisés

Liste des 3 thèmes :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes

Dans le temps restant, découverte des algorigrammes en utilisant la page d'aide du QCM "Algorithmes et algorigrammes" avec prise de notes sur la fiche "Algorithmes et algorigrammes" (paragraphe "Les algorigrammes") et en s'entraînant sur le thème "Analyse d'algorigrammes NIVEAU 1".

Si le temps restant est suffisant, possibilité de refaire une seconde fois l’évaluation : on gardera alors la meilleure des deux notes obtenues.

Travail à faire à la maison : continuer à s'entraîner sur les 3 premiers thèmes du QCM "Algorithmes et algorigrammes" en recherchant une solution pour résoudre les algorithmes les plus complexes avec la calculatrice

Liste des 3 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 3 thèmes à la fois, puis dépasser 40 questions consécutives sans erreur avec la version « STOP à la première erreur » avec les 3 thèmes
mardi 2 décembre 2025
Expérimentation des algorithmes de tri : SÉANCE 1/2
Comparaison de 2 implémentations en Python de la fonction factorielle :
- algorithme itératif
- algorithme récursif
- comparaison des complexités temporelle (mesure du temps d'exécution) et spatiale (limite du nombre d'appel récursif)

Expérimentation des 3 algorithmes de tri classiques avec des cartes :
- le tri par insertion
- le tri par sélection
- le tri à bulles

Rappel et description de chacun des ces 3 algorithmes de tri.

Comparaison des 3 algorithmes de tri en terme de nombres de permutations dans le pire des cas en comptant le nombres d'échanges avec les cartes.

Remarques sur les possibilités d'amélioration du tri à bulles : tri à peigne et bidirectionnalité

Test et comparaison de la complexité temporelle de 6 algorithmes de tri en Python en utilisant la version 1 du programme en Python disponible sur nsi.gecif.net :

- le tri par sélection
- le tri par insertion
- le tri à bulles
- le tri fusion
- le tri rapide
- le tri natif utilisé dans les méthodes des listes de Python

Amélioration du programme en y ajoutant 3 nouveaux algorihmes de tri :
- Le tri shaker (tri à bulles bidirectionnel)
- le tri à peigne (tri à bulles à pas variable)
- le tri par extraction du parcourt en profondeur dans l'ordre infixe d'un arbre binaire de recherche

Classement de ces 9 algorithmes de tri en fonction de leur complexité temporelle (du plus rapide au plus lent).

Découverte des algorigrammes en utilisant la page d'aide du QCM "Algorithmes et algorigrammes" et en s'entraînant sur le thème "Analyse d'algorigrammes NIVEAU 1".

Travail à faire à la maison : continuer à s'entraîner sur les 3 premiers thèmes du QCM "Algorithmes et algorigrammes" en recherchant une solution pour résoudre les algorithmes les plus complexes avec la calculatrice

Liste des 3 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 3 thèmes à la fois, puis dépasser 40 questions consécutives sans erreur avec la version « STOP à la première erreur » avec les 3 thèmes
mercredi 3 décembre 2025
Expérimentation des algorithmes de tri : SÉANCE 2/2
Explication et comparaison des différentes variantes des algorithmes de tri en utilisant les applications interactives.

Présentation de la version 2 du programme en Python qui compare 14 algorithmes de tri permettant d'estimer leur complexité temporelle :
- tri par sélection
- tri par insertion
- tri à bulles
- tri à bulles bidirectionnel (tri "shaker", ou tri "Cocktail", ou tri "Shuttle")
- tri à peigne
- tri à peigne bidirectionnel (tri "oyelami" : mélange de tri à peigne et tri shaker)
- tri shell (une variante du tri par insertion : on trie séparément des sous-suites)
- tri gnome (tri par insertion avec des permutations comme dans le tri à bulles)
- tri fusion (diviser pour mieux régner)
- tri rapide (utilise un pivot)
- tri avec la fonction sorted() de Python (algorithme Timsort)
- tri natif avec la méthode sort() des listes de Python (algorithme Timsort)
- tri par extraction du parcourt en profondeur dans l'ordre infixe d'un arbre binaire de recherche
- tri maximier ou "tri par tas" (création d'un arbre binaire dont le parcourt en largeur donne les noeuds dans l'ordre croissant)

Remplissage expérimental du tableau donnant la complexité temporelle des 13 algorithmes dans les 3 cas suivants :
- le meilleur des cas
- en moyenne
- le pire des cas

Conclusion et classement des algorithmes de tri en fonction de leur complexité temporelle tous en O(n.log(n)) en moyenne :

1 : algorithme Timsort utilisé par Python : fonction sorted() et méthode sort()
2 : tri rapide
3 : tri fusion
4 : tri à peigne
5 : tri par tas
6 : tri par ABR
7 : tri Shell

Loin derrière, les 6 autres en O(n²) en moyenne :

shaker, Oyelami, Gnome, bulles, insertion et sélection

Recherche expérimentale de l'algorithme en O(n.log(n)) capable de trier la plus grande liste (avec plusieurs millions d'éléments) sans atteindre la limite de la complexité spatiale.

Travail à faire à la maison : continuer à s'entraîner sur les 3 premiers thèmes du QCM "Algorithmes et algorigrammes" en recherchant une solution pour résoudre les algorithmes les plus complexes avec la calculatrice

Liste des 3 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 3 thèmes à la fois, puis dépasser 40 questions consécutives sans erreur avec la version « STOP à la première erreur » avec les 3 thèmes
vendredi 5 décembre 2025
Les algorigrammes : SÉANCE 1/3

Distribution du cours "Recherche dichotomique" : à lire et à tester dans Python à l'occasion.

Découverte des algorigrammes en utilisant la page d'aide du QCM "Algorithmes et algorigrammes" avec prise de notes sur la fiche "Algorithmes et algorigrammes" (paragraphe "Les algorigrammes") :
- allumage des LED avec un bloc sortie (puissances de 2)
- récupération de l'état des 8 interrupteurs dans un bloc entrée (binaire naturel)
- affectation d'une valeur à une variable dans un bloc calcul
- utilisation d'un bloc condition pour faire un test
- boucle x fois pour réaliser une itération
- boucle tant que avec le test en début ou en fin de boucle
- boucle jusqu'à avec le test en début ou en fin de boucle

Application : entraînement sur les thèmes "Analyse d'algorigrammes NIVEAU 1" et "Analyse d'algorigrammes NIVEAU 2" du QCM "Algorithmes et algorigrammes" recherche expérimentale pour certaines réponses et avec prise de notes sur la fiche "Les algorigrammes".

Utilisation d'EduPython pour résoudre les algorigrammes les plus complexes ou pour observer leur évolution en mode pas à pas.

Objectif à atteindre : dépasser une note de 12/20 avec 50 questions en utilisant les 2 thèmes "Analyse d'algorigrammes" à la fois (après découverte séparée de chacun des thèmes).

Travail à faire à la maison : s'entraîner sur les 5 premiers thèmes du QCM "Algorithmes et algorigrammes" avec prise de notes sur les fiches pratiques et en recherchant une solution pour résoudre les algorigrammes les plus complexes avec la calculatrice.

Liste des 5 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes
- Analyse d'algorigrammes NIVEAU 1
- Analyse d'algorigrammes NIVEAU 2

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 5 thèmes à la fois, puis dépasser 40 questions consécutives sans erreur avec la version « STOP à la première erreur » avec les 5 thèmes
mardi 9 décembre 2025
Les algorigrammes : SÉANCE 2/3
Explication sur les différents types d'algorigrammes :
- conditionnels (blocs tests)
- itératifs (boucles)
- séquentiels (succession d’affectations)
- principe de la bascule (une valeur parmi deux à chaque affectation)

Découverte du thème "Analyse d'algorigrammes NIVEAU 3" du QCM "Algorithmes et algorigrammes".

Application : entraînement sur les 3 thèmes "Analyse d'algorigrammes NIVEAU 1", "Analyse d'algorigrammes NIVEAU 2" et "Analyse d'algorigrammes NIVEAU 3" du QCM "Algorithmes et algorigrammes" recherche expérimentale pour certaines réponses et avec prise de notes sur la fiche "Les algorigrammes".

Utilisation d'EduPython pour résoudre les algorigrammes les plus complexes ou pour observer leur évolution en mode pas à pas.

Objectif à atteindre : dépasser une note de 12/20 avec 50 questions en utilisant les 3 thèmes "Analyse d'algorigrammes" à la fois (après découverte séparée de chacun des thèmes).

Travail à faire à la maison : s'entraîner sur les 6 premiers thèmes du QCM "Algorithmes et algorigrammes" avec prise de notes sur les fiches pratiques et en recherchant une solution pour résoudre les algorigrammes les plus complexes avec la calculatrice.

Liste des 6 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes
- Analyse d'algorigrammes NIVEAU 1
- Analyse d'algorigrammes NIVEAU 2
- Analyse d'algorigrammes NIVEAU 3

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 6 thèmes à la fois, puis dépasser 40 questions consécutives sans erreur avec la version « STOP à la première erreur » avec les 6 thèmes
mercredi 10 décembre 2025
Les algorigrammes : SÉANCE 3/3
Validation des points bonus sur les 6 premiers thèmes du QCM "Algorithmes et algorigrammes" :
- tous documents autorisés
- calculatrice autorisée
- EduPython autorisé

Les points bonus sont élaborés en fonction du nombre maximal de bonnes réponses consécutives atteint en utilisant les 6 premiers thèmes de la version « STOP à la première erreur » du QCM durant les séances d'entraînement en classe selon le barème suivant :
- moins de 20 réponses consécutives justes : -2 points
- entre 20 et 39 réponses consécutives justes : -1 point
- entre 40 et 59 réponses consécutives justes : 0 point
- entre 60 et 79 réponses consécutives justes : +1 point
- 80 réponses consécutives justes ou plus : +2 points

Liste des 6 thèmes :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes
- Analyse d'algorigrammes NIVEAU 1
- Analyse d'algorigrammes NIVEAU 2
- Analyse d'algorigrammes NIVEAU 3

Travail à faire à la maison : continuer à s'entraîner sur les 6 premiers thèmes du QCM "Algorithmes et algorigrammes" avec prise de notes sur les fiches pratiques et en recherchant une solution pour résoudre les algorithmes et les algorigrammes les plus complexes avec la calculatrice.

Liste des 6 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes
- Analyse d'algorigrammes NIVEAU 1
- Analyse d'algorigrammes NIVEAU 2
- Analyse d'algorigrammes NIVEAU 3

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 6 thèmes à la fois, puis dépasser 40 questions consécutives sans erreur avec la version « STOP à la première erreur » avec les 6 thèmes
vendredi 12 décembre 2025
Les autres types d'algorithmes : SÉANCE 1/4
Découverte des autres types d'algorithmes :
- l'algorithme par force brute
- l'algorithme glouton

COURS "Les algorithmes gloutons" :
- le rendu de monnaie
- problème du sac à dos

Pour le problème du sac à dos, comparaison des performances de l'algorithme glouton en choisissant soit la meilleure valeur, soit la meilleure valeur massique à chaque étape pour différentes données du problème.

TP "Le problème du sac à dos"

Programmation des algorithmes gloutons en Python.

Comparaison avec l'algorithme par force brute pour le problème du sac à dos.

Travail à faire à la maison : continuer à s'entraîner sur les 6 premiers thèmes du QCM "Algorithmes et algorigrammes" avec prise de notes sur les fiches pratiques et en recherchant une solution pour résoudre les algorithmes et les algorigrammes les plus complexes avec la calculatrice.

Liste des 6 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes
- Analyse d'algorigrammes NIVEAU 1
- Analyse d'algorigrammes NIVEAU 2
- Analyse d'algorigrammes NIVEAU 3

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 6 thèmes à la fois, puis dépasser 40 questions consécutives sans erreur avec la version « STOP à la première erreur » avec les 6 thèmes
mardi 16 décembre 2025
Les autres types d'algorithmes : SÉANCE 2/4
Découverte d'autres types de problèmes à résoudre : des problèmes avec contraintes.

Exercice "Exemples de problèmes logiques".

Travail à faire :
1 - résoudre ces problèmes de tête sur la papier : réflexion et intelligence humaine
2 - quel algorithme permettrait de résoudre automatiquement ces problèmes ?
3 - comment Python peut-il solutionner ces problèmes ?

Fin du TP "Le problème du sac à dos" pour résoudre le problème des 7 vidéos :
- les 3 solutions gloutonnes ne donne pas la solution optimale
- seule la recherche par force brute donne la solution optimale
- en utilisant la fonction permutations(P,n) du module itertools l'implémentation de la force brute est simple

Travail à faire à la maison : continuer à s'entraîner sur les 6 premiers thèmes du QCM "Algorithmes et algorigrammes" avec prise de notes sur les fiches pratiques et en recherchant une solution pour résoudre les algorithmes et les algorigrammes les plus complexes avec la calculatrice.

Liste des 6 thèmes à travailler :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes
- Analyse d'algorigrammes NIVEAU 1
- Analyse d'algorigrammes NIVEAU 2
- Analyse d'algorigrammes NIVEAU 3

Objectif à atteindre : dépasser une note de 12/20 avec 100 questions en utilisant les 6 thèmes à la fois, puis dépasser 40 questions consécutives sans erreur avec la version « STOP à la première erreur » avec les 6 thèmes
mercredi 17 décembre 2025
ÉVALUATION
Évaluation sur les 3 premiers thèmes du QCM "Algorithmes et algorigrammes" :

- Nombre de thèmes : 6
- Nombre de questions : 150 (25 questions par thème en moyenne)
- Temps maximal : 2 heures (48 secondes par question en moyenne)
- Coefficient : 1
- Barème : +1 point par question juste et -1 point par question fausse ou nulle
- Documents et logiciels interdits
- Brouillon et calculatrice autorisés

Liste des 6 thèmes :
- Les algorithmes de compression
- Les algorithmes de tri
- Analyse d'algorithmes
- Analyse d'algorigrammes NIVEAU 1
- Analyse d'algorigrammes NIVEAU 2
- Analyse d'algorigrammes NIVEAU 3

Dans le temps restant : validation définitives des points bonus ou suite des activités en Python du cours "Recherche dichotomique" ou des algorithmes de tri.
vendredi 19 décembre 2025
Les autres types d'algorithmes : SÉANCE 3/4

Explication du travail à faire à la maison durant les vacances de Noël.

Utilisation de la page "Implémentation en Python de la force brute" sur nsi.gecif.net pour expérimenter dans Python les différentes résolutions de problèmes suivantes :

- Recherche d'un code secret ou d'un mot de passe par force brute
- Tri d'une liste par force brute
- Le problème du sac à dos par force brute
- Résolution d'un carré magique par force brute
- Résolution d'un problème logique par force brute

Résolution du problème "Qui a le zèbre ?" par force brute en Python.

Comparaison pour les 5 problèmes de logiques des solutions données par Python avec les solutions trouvées sur le papier.

Choix de l'ordre des conditions dans le programme pour diminuer la complexité temporelle.

Implémentation en Python de l'algorithme par force brute pour résoudre de nouveaux problèmes logiques en utilisant le paragraphe "Nouveaux problèmes à résoudre" en bas de la page "Implémentation en Python de la force brute" sur nsi.gecif.net
Vacances de Noël

Travail à faire pendant les vacances de Noël :

Lire et expérimenter dans Python le cours "Recherche dichotomique".

Rédiger au propre les fiches brouillonnes avec les prises de notes relatives aux activités sur les algorithmes réalisées en classe (compression, tri, complexité, algorigrammes, etc.).

Consulter les sujets du bac (épreuves écrites et épreuves pratiques) et faire quelques exercices relatifs aux algotihmes (tri, glouton, force brute, compression, ou autres) en faisant le lien avec les activités réalisées en classe.

Ranger le classeur et se remémorer son contenu depuis de début de l'année.

Relire l'intégralité du cahier de texte depuis le début de l'année, s'auto-évaluer sur tous les savoir-faire acquis, et réviser, rattraper ou refaire éventuellement les activités concernant des connaissances oubliées (cours, TP, QCM, pratique de Python, etc.).

Objectif : revenir en janvier en ayant en tête tous les éléments du programme vus dans les différentes activités réalisées depuis le début de l'année et rappelés ci-dessus dans le cahier de texte.
mardi 6 janvier 2026
Les autres types d'algorithmes : SÉANCE 4/4
Résolution du problème "Qui a le zèbre ?" par force brute en Python en optimisant le programme pour diminuer la complexité temporelle :
- choix de l'ordre des conditions dans le programme
- préremplissage de 3 ou 5 cases dans le tableau à analyser

Quelles sont les 5 cases (1 case par ligne) les plus simples à trouver d'après l'énoncé du problème ?
- une nationalité
- une couleur
- une boisson
- une profession
- un animal

Si Python doit tester toutes les cases d'un tableau vide il teste 120**5=24 milliards de tableaux en 120 heures environ (5 jour).

Si on fournit 5 cases préremplies à Python (1 case par ligne) il teste 24**5=7 millions de tableaux en 3 minutes environ : en divisant le nombre de tableaux par 3000 on a divisé la complexité temporelle par 3000.

Solution définitive du problème "Qui a le zèbre ?" par force brute en Python en 3 versions :
- version 1 lente : teste 24 milliards de tableaux en 120 heures environ
- version 2 moyenne : teste 200 millions de tableaux en 1 heure environ (en remplissant 3 cases)
- version 3 rapide : teste 7 millions de tableaux en 3 minutes environ (en remplissant 5 cases)

Application avec les autres problèmes logiques similaires au zèbre : "Où est le kangourou ?", ainsi que les problèmes n°1 à n°6 et n°9

Comparaison des résultats obtenus par Python avec les solutions trouvées par une (ou plusieurs) intelligence artificielle, et par une (ou plusieurs) intelligence humaine sur le papier.
mercredi 7 janvier 2026
Les bases de données et le langage SQL : SÉANCE 1
Introduction aux bases de données relationnelles.

Découverte du langage SQL en testant des requêtes de recherche en ligne sur le site fxjollois.github.io/cours-sql : Requêtage simple

Distribution de la fiche pratique "Le langage SQL"

Test puis rédaction sur la fiche du rôle et de la syntaxe des mots clé SQL suivants :
- SELECT
- FROM
- LIMIT
- ORDER BY
- DESC
- WHERE
- AND
- UPPER
- IS NOT
- NULL
- BETWEEN
- IN
- LIKE
- DISTINCT
- AS

Expérimentation puis prise de notes pour les différentes options du tri (ORDER BY) et du filtrage (WHERE).

Remarque sur les acronymes :
- SQL signifie Structured Query Language, soit « langage de requêtes structurées »
- SGBD signifie Système de Gestion de Bases de Données (désigne le logiciel serveur)

Remarque sur le langage SQL : pour mettre en commentaire une ligne il faut l'encadrer entre /* et */

Distribution du cours "BASES DE DONNÉES RELATIONNELLES ET SQL" à lire pour la prochaine séance.

Travail à faire à la maison : terminer le premier module de découverte (1 :Requêtage simple) en faisant les exercices du niveau 5 et lire l'intégralité du cours "BASES DE DONNÉES RELATIONNELLES ET SQL".
vendredi 9 janvier 2026
mardi 13 janvier 2026
mercredi 14 janvier 2026
vendredi 16 janvier 2026
mardi 20 janvier 2026
mercredi 21 janvier 2026
vendredi 23 janvier 2026
mardi 27 janvier 2026
mercredi 28 janvier 2026
vendredi 30 janvier 2026
mardi 3 février 2026
mercredi 4 février 2026
vendredi 6 février 2026
mardi 10 février 2026
mercredi 11 février 2026
vendredi 13 février 2026
mardi 17 février 2026Pas cours de NSI : semaine blanche
mercredi 18 février 2026Pas cours de NSI : semaine blanche
vendredi 20 février 2026Pas cours de NSI : semaine blanche
Vacances d'Hiver
mardi 10 mars 2026
mercredi 11 mars 2026
vendredi 13 mars 2026
mardi 17 mars 2026
mercredi 18 mars 2026
vendredi 20 mars 2026
mardi 24 mars 2026
mercredi 25 mars 2026
vendredi 27 mars 2026
mardi 31 mars 2026
mercredi 1 avril 2026
vendredi 3 avril 2026
mardi 7 avril 2026
mercredi 8 avril 2026
vendredi 10 avril 2026
mardi 14 avril 2026
mercredi 15 avril 2026
vendredi 17 avril 2026
Vacances de Printemps
mardi 5 mai 2026
mercredi 6 mai 2026
vendredi 8 mai 2026Victoire 1945
mardi 12 mai 2026
mercredi 13 mai 2026
vendredi 15 mai 2026Pont de l'Ascension
mardi 19 mai 2026
mercredi 20 mai 2026
vendredi 22 mai 2026
mardi 26 mai 2026
mercredi 27 mai 2026
vendredi 29 mai 2026
mardi 2 juin 2026
mercredi 3 juin 2026
vendredi 5 juin 2026
mardi 9 juin 2026
mercredi 10 juin 2026
vendredi 12 juin 2026
mardi 16 juin 2026
mercredi 17 juin 2026
vendredi 19 juin 2026
mardi 23 juin 2026
mercredi 24 juin 2026
vendredi 26 juin 2026
mardi 30 juin 2026

nsi.gecif.net

© Août 2025