Par Hugo G. Lapierre, chargé de cours en intégration des technologies à la pratique enseignante à l’Université du Québec à Montréal
La programmation est une discipline qui occupe une place de plus en plus importante au sein du cursus des écoles primaires et secondaires du Québec, que ce soit sous la forme de concentrations, d’activités parascolaires, ou encore, de manière plus indirecte, par l’utilisation de la robotique pour contextualiser des apprentissages en mathématiques ou en sciences.
Toutefois, bien que la programmation gagne en popularité, son enseignement demeure méconnu et peut s’avérer un réel défi pour les enseignants. À ce titre, l’article de Brown et Wilson (2018) met en lumière des conseils pratiques, issus d’une revue de la littérature scientifique du domaine de la didactique de la programmation.
Ces conseils, somme toute assez simples, sont susceptibles de favoriser l’apprentissage des élèves. Parmi l’ensemble des conseils que proposent ces auteurs, les cinq plus essentiels ont été retenus et sont ici présentés.
1- Croire en la capacité de tous ses élèves d’apprendre à programmer
La programmation est un apprentissage réputé comme étant difficile et souvent associé à des performances très contrastées chez les élèves, ce qui peut laisser croire que certains auraient des aptitudes innées pour la programmation et d’autres non.
Il a même été proposé qu’un « gène de la programmation » (“geek gene”) puisse expliquer la facilité de certains élèves pour la programmation (et, à l’inverse, la difficulté des autres qui seraient dépourvus de ce gène). Or, cette hypothèse n’a reçu aucun soutien scientifique à ce jour et a même été fortement critiquée en raison de son caractère simpliste et déterministe : il s’agit selon plusieurs auteurs du mythe le plus durable, le plus répandu et le plus nuisible à l’apprentissage de l’informatique.
En ce sens, le premier conseil est simplement de croire en la capacité de tous les élèves d’apprendre à programmer. L’apprentissage de la programmation n’est pas inné et, comme pour tout apprentissage, les habiletés en programmation peuvent se développer et s’améliorer par la pratique.
Il apparaît donc risqué de croire que « certains enfants peuvent réussir et d’autres non », car adhérer à cette fausse croyance peut malheureusement influencer négativement les interventions pédagogiques destinées aux élèves qui éprouvent plus de difficulté, et même nuire à leur apprentissage.
2- Ne pas seulement travailler le volet « écriture » de la programmation
Le deuxième conseil renvoie à l’importance de ne pas seulement travailler les habiletés liées à l’écriture de la programmation. En effet, bien que la littérature mette en évidence des défis importants liés à la syntaxe, à la sémantique et à la conception de lignes de code fonctionnelles et efficaces, il importe également de développer les compétences des apprenants en lecture de code ainsi qu’en débogage (debugging), deux compétences trop souvent négligées dans les premiers apprentissages des novices, mais pourtant essentielles.
Pour ce faire, il est nécessaire de développer et de prévoir des activités où les élèves lisent et commentent des lignes de code non-fonctionnelles ou non-optimales en vue de les corriger, en parallèle à des activités plus traditionnelles où les élèves rédigent du code.
3- Prévoir des séances de programmation avec un pair
La programmation avec un pair est une pratique de programmation où deux programmeurs partagent un même ordinateur. Ce type de programmation en dyade est non seulement une pratique de la programmation souvent employée sur le marché du travail, mais les recherches indiquent qu’il s’agit également d’une bonne façon d’apprendre.
En effet, les élèves qui travaillent en dyade peuvent coopérer pendant les exercices pratiques, ce qui est de nature à les encourager davantage. Ils peuvent, en plus, s’entraider pour clarifier les incompréhensions de l’autre durant la tâche. Cela a pour effet de contribuer à l’apprentissage des deux parties : l’élève le plus faible peut bénéficier des explications individuelles reçues de la part du plus fort, tandis que l’élève le plus fort consolide son apprentissage en devant expliciter sa pensée, ce qui nécessite qu’il réactive des notions auxquelles il n’a peut-être pas pensé depuis longtemps.
Brown et Wilson (2018) indiquent également que lorsque la programmation en dyade est utilisée, il est important que tous les élèves soient placés en dyade, et non seulement les apprenants qui ont des difficultés, afin que personne ne se sente isolé.
D’un point de vue pratico-pratique, ce conseil est d’autant plus intéressant, car il réduit du même coup la quantité de matériel nécessaire en salle de classe, ce qui représente souvent une contrainte importante. Il n’est cependant pas recommandé de mettre en équipe trois apprenants par ordinateur ou robot, car le troisième membre s’en trouve souvent isolé et ne prend pas part activement à la tâche.
4- Utiliser le codage en direct
En complément à la présentation de lignes de codes pré-produites via des diapositives ou au sein d’un cahier pédagogique, les enseignants devraient aussi essayer, le plus souvent possible, de rédiger en temps réel des lignes de code devant leurs élèves. Cette stratégie pédagogique permet ainsi aux apprenants d’observer comment un expert diagnostique et corrige ses erreurs au fur et à mesure, ce que les novices ont énormément besoin de faire, mais qui est malheureusement absent de la plupart des manuels scolaires.
Cette stratégie présente aussi l’avantage de ralentir les enseignants qui ont souvent tendance à présenter le code trop rapidement, ce qui peut provoquer le désengagement de leur auditoire. Cela permet en plus de susciter des questions précises chez les élèves qui pourraient, par exemple, chercher à comprendre en temps réel le raisonnement derrière l’utilisation d’une fonction plutôt qu’une autre.
5- S’en tenir à un seul langage de programmation durant l’apprentissage
Enfin, le dernier conseil s’arrime à un principe de base en éducation qui s’applique à plusieurs domaines : le transfert ne se fait qu’avec la maîtrise. Ainsi, il apparaît préférable que l’enseignant sélectionne un seul langage de programmation et s’en tienne à celui-ci jusqu’à ce que les apprenants aient suffisamment progressé avant d’en introduire un deuxième ou même de changer de langage. La littérature semble en effet indiquer que le transfert d’un langage de programmation à l’autre, lorsqu’introduit trop tôt dans le processus d’apprentissage, est susceptible de désorienter les élèves et de contribuer à éroder leur confiance.
Vous faites de la programmation avec vos élèves ou vous utilisez la robotique pour contextualiser des apprentissages? Partagez votre expérience et vos projets avec nous en écrivant à info@ecolebranchee.com.
Référence complète du texte vulgarisé : Brown, N. C., & Wilson, G. (2018). Ten quick tips for teaching programming. PLoS computational biology, 14(4), e1006023.
En complément : Lisez l’article Intégrer la robotique éducative à la salle de classe de Hugo G. Lapierre, paru dans Spectre, le magazine de l’Association pour l’enseignement de la science et de la technologie au Québec.