Enseigner R, et surtout les services pratiques que R peut rendre, c’est un vrai défi ! L’apprenant doit d’abord installer un environnement logiciel, puis se familiariser avec un langage franchement déroutant[1]. Comment le guider au mieux, surtout en période de confinement, dans un cadre de télé-formation ? Parce que l’on voit plus difficilement ce que font les apprenants, il est plus essentiel encore de simplifier leur entrée en matière.
Appréhender de façon graduée et sécurisée le codage dans R, voilà ce que permettent les tutoriels interactifs learnr : ils mixent exposés narratifs, exemples commentés et exercices pratiques. Ces exercices vont du plus amical (quiz, flash cards, problèmes de Parsons…), au plus engagé (l’apprenant écrit du code à la main !)
Mais dans tous les cas, grâce aux petits soins du concepteur, l’angoisse de la page blanche peut être évitée. Voici quelques procédés pédagogiques intégrés à learnr :
- un bloc de code se présente avec quelques trous seulement à combler ;
- une série de conseils se dévoile à la demande ;
- la solution-même peut, en définitive, être exposée ;
- à la soumission de sa ou ses tentatives, l’élève lira, en cas d’erreur, des messages informatifs calibrés, devinant le raisonnement qu’il a pu suivre, le guidant progressivement vers la bonne réponse.
Dans l’article suivant je détaille la façon de mettre cela en musique[2]. Je présente dans ce premier exposé quelques exemples pratiques. À vous de jouer !
Je programme en R !
Pour bien saisir l’intérêt pédagogique d’un tutoriel de codage, rien ne vaut l’expérimentation par soi-même !
Dans cet exemple à disséquer, Il s’agit de découvrir ou consolider 3 notions importantes dans R :
- la définition d’une variable,
- la notion de vecteur (ou liste de valeurs de même type, par exemple liste de nombres, listes de chaines caractères, liste de dates…),
- la fonction permettant de concaténer les éléments d’un vecteur.
Pour vous guider, 2 mécanismes :
- une série d’indices, progressifs, jusqu’à la solution complète (bouton ‘Indices ?’),
- un process de correction/vérification de votre code (bouton « Soumettre »), qui s’appuie sur une pré-intuition des chemins que vous avez pu emprunter avant de trouver la bonne issue. En fonction de là où vous en êtes, le programme cherche à vous guider par un conseil avisé.
Si « tester le code » ne produit rien de spécial, c’est bon signe, vous n’avez au moins pas commis d’erreur de syntaxe !
Une variante de ce 1er exercice, plus assistée encore, propose une structure de réponse avec simplement quelques blancs (ici soulignés) à remplir. La voici, rendue là encore directement dans cette page, via une iframe :
Anticiper le raisonnement de l'apprenant
Plutôt que m’arrêter à un constat binaire réponse juste / réponse fausse, j’ai envie de valoriser le fait qu’une partie du chemin a été parcourue, qu’un raisonnement pertinent est en train de se construire. Comment guider au mieux l’apprenant vers la bonne issue ? Gardons en tête qu’il peut aussi y avoir plusieurs bonnes façons de répondre à l’exercice.
En aucun cas je n’envisage de confronter la réponse de l’apprenant à un bloc de code « modèle » à reproduire à la virgule près ! Si seule une coquille sépare la réponse du bon résultat, je veux saluer à sa juste valeur la progression de mon élève. Voici quelques « oups » possibles que je m’emploie à repérer, de façon à délivrer un feedback amical :
- le ‘!’ final est oublié dans le vecteur ‘mots’,
- la majuscule de ‘Je’ est omise,
- ‘programme’ a été écrit ‘programe’,
- le vecteur des mots ne s’appelle pas exactement ‘mots’,
- des blancs manquent dans le résultat final, ou sont en excès,
- des __ ont été laissés alors que l’exercice propose de les remplacer.
Je veux aussi saluer les variantes qui donnent le bon résultat, même si elles paraissent moins académiques ou conformes à l’esprit de l’exercice :
- présence de = à la place de <-,
- emploi de str_r à la place de paste, str_r supposant que tidyverse ou stringr soient chargées,
- écriture plus experte, compacte, mais cryptique : exec(« paste », !!!mots).
Dans ces derniers cas, je suis enclin à valider la réponse, tout en glissant le commentaire approprié.
D'où viennent learnr et gradethis ?
Ces tutoriels de codage sont efficaces dès lors qu’ils placent l’apprenant dans une posture de recherche et de construction active. Un support idéal pourra comprendre, par exemple :
- un exposé des concepts,
- un ou des exemples commentés,
- des exercices de contrôle et de renforcement des connaissances sans souci d’évaluation.
Il débouchera si besoin sur un examen final visant à une certification officielle (diplôme, module validé…)
Les packages R learnr et gradethis permettent de réaliser de tels tutoriels de formation et/ou d’évaluation, pour une auto-formation en ligne ou dans le cadre d’une classe (où plusieurs dizaines d’étudiants peuvent travailler en simultané avec l’enseignant).
Développés par l’acteur phare RStudio, sous l’impulsion initiale du fondateur Joseph J. Allaire himself, ils sont le fruit d’une démarche motivée, militante même, et prospective.
L’arrivée récente de nouveaux développeurs en stimule les évolutions, les toutes dernières versions sont encore plus séduisantes : souplesse des fonctions de vérification des exercices, traduction enfin possible des boutons de l’interface.
Avant de présenter plus en détail quelques trucs et astuces dans ce second article, je vous laisse (re)découvrir le tutoriel dont j’ai exposé plus haut quelques extraits, déployé sous les couleurs d’Icem7. Le code est accessible sur ce dépôt Github.
Pour aller plus loin
[1] Pourquoi R est-il si difficile à apprendre ?
[2] Peaufiner ses tutoriels R avec learnr et gradethis (2/2)
Tutoriel présenté dans cet article
Doc et intro learnr
Learnr par ceux qui s’en servent
- Building interactive tutorials in R
- Teach R with learnr: a powerful tool for remote teaching
- Using `learnr’ interactive lessons and tutorials
- Learning learnr
- Tutoriales interactivos
Problèmes de Parsons