Adjectif : analyses et recherches sur les TICE

Revue d'interface entre recherches et pratiques en éducation et formation 

Barre oblique

Une stratégie explicite pour l’enseignement de la programmation : les exemples résolus avec objectifs étiquetés

dimanche 12 novembre 2023 Olivier Goletti ; Kim Mens

Olivier Goletti

ICTEAM/INGI, UCLouvain

Kim Mens

ICTEAM/INGI, UCLouvain

Numéro thématique 3 / 2023 - T3

RÉSUMÉ Trop souvent, on attend de nos élèves qu’ils soient capables de lire du code ou d’en écrire, sans prendre le temps de leur expliciter les étapes clés qui permettent d’y arriver. Dans cet article, on vous propose de découvrir une stratégie explicite supportée par la recherche qui va aider les élèves à apprendre à écrire du code via une stratégie simple à mettre en œuvre de manière plus systématique. Une fois intégrées dans vos pratiques, cette stratégie permet aux élèves qui en ont besoin d’être plus guidés dans leur apprentissage.

MOTS-CLÉS • Stratégie explicite – Instruction – Subgoal learning – Exemples résolus

Sous-étapes à gauche et Exemple résolu étiqueté à droite

Objectif

L’apprentissage par subgoals, ou sous-étapes, améliore les performances de résolution de problèmes des novices. Les worked examples, ou exemples résolus, permettent d’exemplifier une stratégie de résolution de problèmes au travers d’exemples. En annotant les exemples résolus avec des labels, ou étiquettes, qui correspondent aux sous-étapes, on combine ces deux outils pour mettre en évidence les sous-étapes génériques et fonctionnelles que les novices ont du mal à identifier seuls.

Description de l’activité

Cette approche se base sur les recherches de Catrambone [3] sur l’utilisation d’exemples résolus avec identification des sous étapes. En particulier, un protocole a été développé pour analyser des résolutions de problèmes faites par des experts pour identifier ses étapes souvent implicites quand maîtrisées. L’idée est donc d’expliciter ses étapes pour que les apprenants puissent utiliser une bonne stratégie de résolution. Cette technique a été utilisée dans le cadre de l’enseignement de l’informatique (avec le langage Java) par Lauren Margulieux et ses collègues [1] puis adapté à Python [2,4]. Ce travail a été présenté à la neuvième édition de Didapro dans un article et un atelier.

L’idée de cette stratégie est donc d’utiliser systématiquement des mots clés ou étiquettes correspondant aux différentes étapes de résolution d’un problème de programmation qui utilise un concept défini. Pour ce faire, il s’agit d’expliquer les différentes étapes et de noter les étiquettes correspondantes au tableau. Ensuite ou au fur et à mesure de l’écriture de la mention des étapes, résoudre l’exercice en expliquant à voix haute la réflexion ou les décisions qui amènent à produire le code correspondant à l’étape. Finalement, nous nous retrouvons avec un exemple de résolution du problème, annoté (avec des couleurs éventuellement) des étapes qui ont mené à son écriture.

Une fois les étapes illustrées par un exemple, des exercices sont proposés aux élèves. Si un élève est bloqué dans la résolution d’un exercice mettant un œuvre le même concept nous pouvons lui demander à quelle étape il en est. On peut aussi identifier les étapes dans une résolution au tableau pour les mettre en évidence et accentuer l’assimilation.

Exemple de la lecture et du traitement d’un fichier en Python

Un exemple est proposé ici pour illustrer la stratégie, mais plus d’exemples sont disponibles dans les documents liés à l’atelier Didapro (Section 5). La Figure 1 donne un exemple des étapes pour la lecture et le traitement d’un fichier en Python. La Figure 2 montre un rendu possible de l’annotation avec ces étiquettes d’un exemple résolu. L’objectif serait que l’élève associe « lecture de fichier » et la succession d’étapes « ouverture, traitement, fermeture, exceptions » de sorte qu’il sache comment démarrer la résolution d’un tel exercice.

Figure 1 : Les étapes de résolution d’un problème de lecture de fichier en Python

Avantages  de l’approche de : l’apprentissage par sous-étapes  :

  • facilite l’automatisation d’une stratégie de résolution de problèmes, au travers de sous-étapes bien définies  ;
  • aide au transfert et à l’organisation des apprentissages grâce aux étiquettes, en identifiant les sous-étapes génériques dans les exemples résolus  ;
  • allège la charge cognitive, en mettant en avant les sous-étapes génériques, au lieu des détails spécifiques au contexte de l’exemple ;
  • tend à homogénéiser les performances entre les étudiants  ;
  • diminue le taux d’abandon des étudiants.

    Figure 2 : Exemple résolu étiqueté d’un exercice de lecture de fichier

Quand mobiliser cette stratégie ? 

  • dès l’introduction d’un nouveau concept de programmation  ;
  • avec des étudiants ayant peu de connaissances en programmation  ; 
  • avec des étudiants rencontrant des difficultés à identifier les étapes à suivre pour lire et utiliser ces concepts de programmation  ;
  • particulièrement efficace pour les structures de données. 

Comment la déployer ? 

  • expliquer la stratégie de résolution  ; 
  • exemplifier la stratégie de résolution  ;
  • utilisation systématique des bonnes étiquettes en fonction du concept de programmation en jeu  ;
  • simplifier si nécessaire, avec moins de sous-étapes (un exemple moins complexe) ou plus de sous-sous-étapes (en donnant plus de détails) ;
  • alterner entre présentation d’exemples résolus et résolution d’exercices. 

Expérimentations réalisées

Cette approche a été expérimentée avec des étudiants de première année dans le cadre d’un cours d’initiation à la programmation avec le langage Python. Voici les principales observations qui sont détaillées dans les publications référencées ensuite :

  • «  Les débutants résolvent mieux les problèmes de programmation lorsqu’ils apprennent explicitement les sous-étapes d’un concept de programmation, car ils ne reconnaissent souvent pas ces éléments fonctionnels par eux-mêmes.  » [3]
  • «  Les automatismes des formateurs ne sont pas toujours évident à transmettre à leurs étudiants, parce qu’ils pensent que c’est une connaissance commune ou parce qu’ils pensent que c’est intuitif.  » [1]
  • «  Les étiquettes des sous-étapes mettent en évidence la structure du concept de programmation et la façon de les résoudre. Ce qui permet aux élèves de plus facilement reconnaître les similitudes entre les solutions.  » [1]
  • «  L’apprentissage des sous-étapes s’est avéré efficace car il aide les élèves à reconnaître les structures abstraites des concepts de programmation, et cela avant d’avoir suffisamment de connaissances pour les reconnaître par eux-mêmes. » [1]

Liens avec la recherche

Catrambone. R. (1998). The Subgoal learning model : Creating better examples so that students can solve novel problems. Journal of Experimental Psychology : General, 127(4), 355.

Goletti, O., Mens, K.,& Hermans, F. (2021). Tutors’ Experiences in Using Explicit Strategies in a Problem-Based Learning Introductory Programming Course. In Proceedings of the 26th Annual Conference on Innovation and Technology in Computer Science Education (ITiCSE ’21), 2021.

Goletti, O., De Pierpont, F.,& Mens, K. (2022). Création d’exemples résolus avec objectifs étiquetés pour l’apprentissage de la programmation avec Python. Didapro 9 – DidaSTIC.

Margulieux, L., Morrison, B. B., & Decker, A (2019). Design and Pilot Testing of Subgoal Labeled Worked Exemples for Five Core Concepts in CS1. In Proceedings of the 24th Annual Conference on Innovation and Technology in Computer Science Education (ITiCSE’19).

Liens vers les ressources et points de contact

L’atelier présenté à Didapro et les ressources liées : http://hdl.handle.net/2078.1/263637
Olivier Goletti (olivier.goletti@uclouvain.be)
Kim Mens (kim.mens@uclouvain.be)


 

Accueil | Abonnement | Contact | | Statistiques du site | Mentions légales | Accessibilité

ISSN : 2610-1920 - Site réalisé avec SPIP 4.2.2