Mes enfants ont 8 ans et 11 ans, garçons et filles (oui, j’ai des multiples…). Je tiens à ce qu’ils apprennent la culture et les bases du code informatique car je crois que le code modèle en partie la société et que ceux qui s’en sortiront le mieux seront ceux qui sauront « bidouiller » (hacker) la société et non ceux qui se feront bidouiller par elle. Bref. Comment leur donner les moyens et l’envie d’apprendre à bidouiller du code ?
Après réflexion, examen des solutions populaires sur le Net et quelques tests avec mes enfants, en me basant également sur mes propres souvenirs d’enfance (j’ai commencé à coder à 8 ans), je crois que l’approche et les outils à privilégier dépendent grandement de l’âge. Et qu’il ne s’agit pas uniquement de choisir un langage de programmation pour en enseigner les bases mais plutôt de trouver un environnement d’apprentissage adapté à l’âge, motivant et ludique pour créer de l’engagement, du plaisir et de l’effort. En résumé, je pense que, jusqu’à 11 ans, l’environnement idéal est Scratch, ou les jeux blockly. De 11 ans à 14 ans, l’environnement idéal me semble Minecraft. Au-delà, des environnements plus « sérieux », probablement autour du langage python pourraient être plus appropriés.
En plus de cette approche « par âge », j’ai été séduit par ce que peuvent apporter les activités d’apprentissage :
- autour de l’écriture de « fictions interactives » (livres dont vous êtes le héro) qui tirent partie de l’interdisciplinarité entre la littérature, les arts et le code,
- autour du matériel informatique (Arduino, Raspberry Pi, Lego Mindstorms ou tout simplement assembler un ordinateur)
- mais aussi en « mode débranché » pour découvrir l’algorithmie théorique, sans matériel informatique, avec du papier, un crayon, des allumettes, etc.
Je me dis que ce qui manque aussi probablement, étant données les tendances technologiques de fond, ce sont des activités pour faire découvrir le machine learning aux enfants, les bases de la probabilité appliquée à la résolution automatisée de problèmes (raisonnement bayésien, etc.).
Enfin, quel que soit l’âge ou les types d’activités, se pose un défi pédagogique : comment animer ces activités lorsqu’on a soi-même peu de temps (ou beaucoup d’enfants…) ? Pour répondre à cela, deux pistes se dégagent :
- les ateliers animés par des professionnels (mais il y en a peu sur le territoire français, en dehors de Paris et quelques grandes villes)
- ou bien les mécanismes de jeu qui, avec le bon scénario et la bonne plate-forme éducative, guident la progression des apprenants avec moins de dépendance à un animateur (donc de manière moins coûteuse en temps et en argent).
Les mécanismes de jeu (le gameplay, règles, système motivationnel de quêtes et badges) et le scénario (imaginaire adapté et motivant) sont importants, mais la richesse visuelle du jeu importe presque autant (on ne refait pas nos vieux cerveaux…). Le fait de pouvoir changer le personnage d’un jeu en un petit panda a fait un gros effet (positif) sur ma fille… Presqu’autant que si elle avait pu le transformer en pingouin tux.
Voici donc, en vrac, une sélection de ressources pour illustrer sur quoi s’appuient mes croyances actuelles.
Autour de Scratch
- des bouquins réputés comme « Scratch pour les Kids : dès 8 ans ».
- de la documentation en français, comme celle des Magic Makers ou le manuel de référence et les ressources pédagogiques associées
- des ateliers animés par des professionnels comme Claude Terosier et les Magic Makers ou Les Savoirs Numériques
- pour ceux qui maîtrisent déjà la programmation sous Scratch et ont grandi (12 ans ?), la transition vers la programmation en langage JavaScript semble possible avec S2JS (in English, sorry…)
- mon expérience, anecdotique : de 9 à 11 ans, mes enfants n’ont pas été « jusqu’au bout » de Scratch, ils sont restés sur l’idée que c’est une plate-forme amusante pour créer des cartes postales animées, mais ça ne leur a pas permis d’apprendre à coder par eux-même ; seuls ceux de mes enfants qui sont les plus intéressés par la création graphique continuent à l’utiliser occasionnellement
Autour de Blockly
- les jeux Blockly proposent une bonne progression pour découvrir les bases de l’algorithmie (boucles, branchements conditionnels et variables), c’est ce que j’ai pu vérifier avec ma fille (11 ans), mais on est vite frustrés par la raideur de certaines étapes de cette progression : soit on maîtrise déjà les concepts et ça passe très vite, soit réussir à franchir certaines étapes ressemble à un casse-tête assez douloureux ; j’aurais aimé voir une progression plus longue, plus variée et plus « pas à pas » parfois
- RapidRouteur est une progression ludo-éducative basée sur blockly, avec plus de 100 niveaux de jeu et qui mène peu à peu à découvrir Python (malheureusement seulement en anglais)
- pencilcode ressemble à blockly et propose des tutoriels mais reste en anglais seulement pour le moment
- Code4Kids est une solution française d’animation pédagogique proposée pour les écoles du premier degré par Catchu, autour d’un environnement Blockly
- Sur une logique Blockly mais sur téléphone, l’appli iOS HopScotch propose un environnement pour apprendre à programmer des jeux mobiles ; mais est-ce vraiment du blockly là-dessous ? je n’ai pas vérifié
Autour de Minecraft
- avec les super « Guides officiels » (débuter, construction, combat, Redstone, …) pour découvrir toutes les arcanes du jeu
- l’intérêt pédagogique de Minecraft est démultiplié si on utilise les bons serveurs, « mods » et leurs tutoriels, mais cela implique d’accéder à un serveur adapté voire de se créer son propre serveur :
- Gnancraft est créé et utilisé par Raphaël Pierquin et l’équipe des Coding Goûters
- ThoughtStem propose des ateliers de programmation avec Minecraft pour les enfants dans la Silicon Valley mais également quelques activités en ligne
- LearnToMod est une plate-forme payante pour apprendre la programmation à travers la modification de minecraft
- ComputerCraft est un mod minecraft destiné à la découverte de la programmation et qui permet d’apprendre à scripter en langage LUA
- Avec Minecraft, vous l’aurez compris, on est dans un environnement très immersif et très bidouillable alors pourquoi ne pas enseigner les mathématiques via Minecraft ?
Autour de Python :
- Parmi les langages de programmation généralistes qui ont un véritable usage industriel, python est sans doute le plus utilisable pour l’apprentissage de la programmation car il combine une syntaxe très lisible et un modèle exemplaire de programmation orientée objet ; il ne lui manquerait plus qu’une syntaxe en français pour faire fureur dans les bacs à sable des lycées… En attendant, faut-il imaginer faire découvrir la programmation au collège ou au lycée en utilisant pygame et piglet comme environnements ? sans doute serait-ce un choix plutôt risqué car on peut lire des doutes crédibles sur la vivacité de la communauté pyglet, sur son usage des decorators qui est difficile à expliquer pour des débutants et ressemble donc à une magie arbitraire et fort peu éducative…
- Etant donné la popularité et la richesse de la communauté python, de bons livres existent certainement en français pour pour apprendre la programmation avec python,
- Checkio est un jeu en ligne très séduisant pour apprendre à programme avec python
Autour de JavaScript
Quand on devient plus grand et qu’on veut manipuler du code « pour de vrai », python est une excellente solution mais JavaScript s’étant imposé partout sur le Net ces dernières années comme langage généraliste, y compris côté serveurs, il n’est pas idiot d’apprendre la programmation avec JavaScript, même si ça a un petit côté maso et casse-cou. Alors pourquoi ne pas découvrir carrément la programmation par ce biais, avec par exemple Code Monster (en anglais). JSWarrior fait pâle figure à côté d’autres plate-formes ludo-éducatives et place la barre un peu haut pour les débutants : animateur indispensable.
Avec des fictions interactives ?
Les « Livres dont vous êtes le héro » (également appelés « Livres-jeux », « Choose Your Own Adventure », « CYOA » ou « gamebooks), sous forme numérique, sont des contenus interactifs qui permettent de visiter sous une forme créative et motivante des concepts simples d’algorithmie (branches conditionnelles, variables, voire conception objet), de programmation (compilation, exécution) mais aussi de design de jeu. Bien sûr, on peut faire une fiction interactive avec de simples liens hypertextes dans un wiki, mais les logiciels pour écrire les fictions interactives sont devenus très sophistiqués en s’inspirant des premiers jeux textuels en liens (les muds) et en introduisant donc des possibilités algorithmiques amusantes et créatives. Je n’ai pas cherché de proposition de progression pédagogique pour découvrir l’algorithmie à travers l’écriture de fictions interactives mais je suis à peu près sûr que ça existe. Cet angle de découverte de la programmation pourrait très bien convenir aux enfants les plus férus de lecture, d’écriture… et d’aventure. De nombreuses solutions logicielles très éprouvées et plus ou moins faciles à prendre en main existent pour créer des fictions interactives plus ou moins sophistiquées informatiquement. Parmi les logiciels de création les plus connus, on peut citer Twine, le vénérable Inform7, TADS, ADRIFT, ALAN mais aussi, avec un côté plus récent, squiffy et QuestKit. Il faudrait y regarder de plus près. Des bibliothèques en ligne permettent ensuite de partager et découvrir les créations, pour les lire et s’y plonger sur ordinateur ou sur smartphone.
Avec du matériel bidouillable
Pour les enfants et parents qui n’ont pas peur de leurs doigts…
Bien sûr, on doit citer les vénérables mais toujours d’actualité Lego Mindstorms, pour les plus familles qui en ont les moyens. Mais on regardera surtout du côté de :
- La Picademy aide les enseignants à exploiter les Raspberry Pi
- Canopé Versailles publie un cours de 3ème sur Arduino
- On peut aussi découvrir la logique algorithmique avec du matériel non informatique (papier, crayon, allumettes, …). On parle alors de découverte « débranchée » de l’algorithmie.
Autour de plate-formes ludo-éducatives « tout-intégré »
Il existe des sites Web proposant des progressions ludiques pour apprendre la programmation. La plupart sont fondés sur des logiciels dits privateurs. Vous n’avez pas le droit de les utiliser comme vous voulez, de les étudier, de les partager, bref de les bidouiller, ce qui est un peu paradoxal. Mais l’avantage de ces plates-formes peut résider dans leur caractère « intégrée » : elles pourraient offrir une expérience ludique plus agréable et pédagogiquement plus efficace si elles accompagnent de A à Z les programmeurs en herbe. Mais au risque de disparaître corps et âme en cas de faillite commerciale. Quelques-unes de ces plate-formes utilisent du libre, mais ce ne sont pas forcément les meilleures pédagogiques.
- Autour de C++ : quitte à être maso, pourquoi ne pas apprendre la programmation avec un langage beaucoup compliqué à apprendre que python ou même JavaScript, c’est le défi que propose pourtant codowl.io (ah tiens, c’est en français ?)
- Code.org propose des progressions en français sous forme de sélection d’activités débranchées, de jeux algorithmiques et d’activités de programmation. C’est un peu la Khan Academy de la programmation : une association américaine à but non lucratif fait vivre cette plate-forme, à grands renforts de dons de Microsoft, Facebook et autres Google. Très Silicon Valley. Le code qui fait tourner la plate-forme est libre mais pas les contenus des activités pédagogiques qu’elle héberge. La richesse et la qualité des activités proposées semble pertinente. Hum… Pas mal.
- Codecombat.com vous embarque dans un vrai jeu vidéo pour apprendre à programmer, avec des contenus graphiques et sonores de qualité. Le joueur a le choix du langage de programmation qu’il veut apprendre (au moins au niveau de la syntaxe) : python, coffescript, clojure, … le choix est vaste. Et franchement, c’est du joli ! Ca donne envie de jouer et d’apprendre… A signaler encore quelques bugs et défauts de traduction en français.
- Blackvoxel est un jeu en logiciel libre, pour apprendre le C++, l’assembleur et le graphisme 3D. On dirait bien là un jeu pour apprendre à programmer des jeux « à la dure » plutôt qu’avec des progressions pédagogiques pour débutants. A réserver pour des lycéens ou des passionnés qui se seront déjà fait la main sur des langages et des environnements plus simples ? Blackvoxel semble proposer des modalités intéressantes pour impliquer un enseignant dans la progression de ses élèves-joueurs.
- Encore pour des lycéens (ou pour des grands collégiens, +13 ans), LiveCode propose une solution d’apprentissage du code pour développer des applis mobiles.
Bon, voila pour mon petit tour du moment. Je suis surpris par la quantité de solutions proposées, y compris en français, et par la première impression très positive que me donnent certaines d’entre elles. Pour mes enfants, je compte explorer les pistes blockly mais surtout Minecraft car la communauté des modders Minecraft est tellement grande qu’il existe déjà tout un tas de réponses à des problématiques pédagogiques récurrentes. Par exemple, il existe des systèmes de gestion de quêtes dans Minecraft qui me semblent intéressantes. Et si je pouvais promettre 5 minutes de Minecraft de plus à celui de mes enfants qui fera la vaisselle demain soir ? ou à celui qui aura bidouillé avec succès tel ou tel aspect de notre vie familiale ?
Et vous, vous en faites quoi de tout ça ?
Après davantage de tests et de prise d’infos, voici 2 découvertes :
1/ Codecombat est incroyablement bien fait ! 100% open source et sur un modèle freemium (possibilité de jouer gratuitement et option payante pour accéder à certains niveaux et avantages), la qualité est là ; les défauts de traduction s’expliquent par le fait que ce sont les joueurs qui proposent la traduction, de manière collaborative (et gagnent des points au passage). La plate-forme est particulièrement riche, le fait de pouvoir passer de langage en langage est assez bluffant, les graphismes et le son sont très bien, le principe très addictif, les niveaux sont très abondants et le mode multi-joueur super. Seul défaut technique : très consommateur en mémoire vive, je soupçonne quelques fuites mémoire dans le code et il vaut mieux fermer de temps à autre son navigateur.
2/ kidscod.in est une startup bordelaise qui offre une plate-forme de jeux blockly qui vient tout juste d’ouvrir, le 1er chapitre (2 heures d’activités) est accessible gratuitement actuellement.
Merci bon ce très bon travail de compilation.
Nous faisons des ateliers d’algorithme/code/robotique pour mettre ces connaissances dans une progression, que vous pouvez retrouver sur notre blog de classe :
http://algothymio.blogspot.fr/
C’est aussi une plateforme ressource pour algorithme/code/robotique.
Ping : Apprendre à coder, quelles solutions pour mes enfants ? – W3btr0tt3ur
Tiens, une conversation sur Reddit à ce même sujet, où l’on recommande également Scratch et Minecraft, mais avec des pistes et commentaires supplémentaires :
https://www.reddit.com/r/learnprogramming/comments/3tsfdx/my_nephew_7_years_old_is_really_interested_on/