Skip to content

Gérer l'hétérogénéîté ne signifie pas individualiser. On peut ainsi proposer une progressivité des apprentissages différentes mais dont le but est le même. On présente ici un exemple permettant de travailler la partie du programme de terminale NSI traitant la notion de structure de données abstraites et de leurs implémentations possibles.

Temps 1 -- Travail avec l'interface d'une structure de données abstraites : l'exemple de la Pile

Positionnement dans la progression annuelle : Le travail qui est présenté s'inscrit dans le choix (bien évidemment discutable) de la progressivité suivante : * Pile * File * Liste / interface itérative * Liste / interface récursive * Arbre * Graphe

La POO a déjà été introduite préalablement.

C'est donc la première fois que les élèves vont rencontrer de manière très explicite la distinction entre interface et implémentation. Ce travail a bien sûr été préparé en première avec les p-uplet et les tableaux non dynamiques (implémentés en général avec une "list" en Python) ainsi qu'avec les p-uplet nommés et les dictionnaires (implémentés en général avec un dict en "Python")

La séquence commence avec un corpus d'activités sur les piles : voir fichier d'activité sur les piles.

Ce premier temps voit la manipulation de l'interface des piles "papier-crayon". Les élèves sont incités à s'en emparer, la manipuler en écrivant leur script sur feuille blanche. Ils ne sont ainsi pas en échec devant des problèmes de syntaxe Python. L'objectif est de prendre en main une interface et de créer le questionnement :

  • Comment on fait en Python ?
  • Les fonctions de l'interface existent-elles en Python?
  • Y a-t-il une bibliothèque ?

Les élèves avancent ainsi à leur rythme, le but est qu'ils se saisissent de la structure fondamentale permettant de traiter les Piles (que l'on retrouvera plus tard avec les Files) : "Tant que la Pile n'est pas vide, je traite la tête".

Temps 2 -- Implémentation de la structure de données abstraite en Python

Après avoir passé deux à quatre heures à manipuler cette nouvelle structure abstraite sur feuille, les élèves sont invités à passer sur machine pour implémenter les fonctions de l'interface des piles.

C'est dans ce temps que la gestion de l'hétérogénéité prend tout son sens. En effet, il existe principalement deux moyens :

  • implémentation par un tableau sur-dimensionné
  • implémentation par un principe de chaînage.

Ces deux concepts seront retrouvés et retravaillés toute l'année (File, Liste, Arbre, Graphe), il n'est ainsi pas obligatoire que tous les élèves sachent les implémenter à leur première rencontrer avec les Piles.

Le questionnnement de "la meilleur implémentation" est construit tout au long de l'année en interrogeant la complexité en opérations des fonctions construites en Python. Ainsi, il est possible de leur proposer à ce moment de l'année trois activités de technicité différents :

  • Activité 1 (niveau *) : L'implémentation avec la "list" Python -> image mentale contigue des données

  • Activité 2 (niveau ***) : L'implémentation avec un tableau surdimensionné -> image mentale contigue des données

  • Activité 3 (niveau **) : L'implémentation avec le principe de chaînage avec le "dict" Python -> image mentale éparpillée des données

  • Activité 4 (niveau **) : L'implémentation avec le principe de chaînage en POO -> image mentale éparpillée des données