Ces derniers temps, de nombreux parents m'ont demandé comment j'avais appris à programmer, surtout pour savoir comment enseigner à leurs enfants. Et à chaque fois, je ne savais pas quoi leur répondre, car j'ai appris à programmer à un âge beaucoup plus avancé que les enfants de la plupart de ces parents. Mais, voulant aider, j'ai aussi commencé à chercher des ressources créées pour apprendre aux enfants comment programmer.


J'ai trouvé de nombreuses ressources pour enseigner la programmation aux élèves de l'école primaire. Par exemple, Scratch et Code Hour sur Code.org sont là pour aider un débutant à apprendre la programmation.


Sur ces plates-formes, les élèves écrivent des programmes simples : ils déplacent des créatures dessinées ou créent des jeux simples pour apprendre les bases mêmes de la programmation, comme les boucles et les conditions. Ce faisant, les élèves développeront également des compétences qui leur seront utiles à l'avenir pour résoudre divers problèmes. Le principal avantage de ces plates-formes est que le système communique avec l'apprenant. Cela permet de maintenir l'intérêt de l'enfant pour les leçons.


Cependant, l'enseignement des programmes aux adolescents de plus de 6 ans est différent. Selon cet article, plus de 95% des adolescents d'aujourd'hui ont un smartphone. Ainsi, les données visualisées sur Scratch et Code.org ne les surprennent plus. Au contraire, j'ai trouvé que les adolescents trouvent que cela a l'air enfantin et inintéressant.


Les adolescents veulent plutôt créer quelque chose de vraiment utile, quelque chose dont ils peuvent se vanter. Par exemple, pour écrire et exécuter une véritable application sur un iPhone, ou créer leur propre site web, ou encore pirater un réseau quelconque. Mais comment apprendre à un enfant dont les compétences se limitent à quelques exercices de Scratch à créer une application sur l'iPhone, afin qu'il ait suffisamment de motivation pour la terminer ?


Je veux partager mon expérience de l'enseignement de la programmation à 4 adolescents. Notre cours a duré 2 ans. Au début, chaque élève avait un niveau différent de compétences en programmation, d'attentes et de qualités personnelles. Par conséquent, pour rendre le cours intéressant pour chacun d'entre eux, j'ai dû essayer différents supports pédagogiques pour trouver ce qui les intéressait tous.


L'objectif principal de cet article est de partager mon expérience, car j'espère contribuer à ce que d'autres adolescents s'intéressent également à la programmation. 

 

Les adolescents ont de grandes attentes


J'ai appris que les adolescents absorbent les nouvelles connaissances comme une éponge. Si les adultes peuvent accepter le fait qu'ils ne comprennent pas quelque chose à la technologie moderne, il est vital pour les adolescents d'être cool et de comprendre toutes les tendances. J'ai remarqué que les adolescents utilisent généralement les dernières et meilleures applications avant même de faire les gros titres de TechCrunch ou de CNBC.
Ce sont mes étudiants qui m'ont montré un tas de ".io" et de jeux de quiz du QG. Il est important pour eux d'apprendre quelque chose de cool qu'ils peuvent partager avec leurs amis.
Leur première question en première classe était : "Pouvons-nous pirater des sites web et des applications ?
Je leur ai dit qu'ils devaient d'abord apprendre HTML et CSS pour comprendre comment pirater des sites web et je leur ai montré cela :


<!DOCTYPE HTML>
<html>
<head><title>Hello World!</title></head>
<corps><h1>Hello World!</h1></body>.
</html>


J'ai expliqué la signification de chaque balise et la façon dont elles seront affichées sur la page. J'ai chargé la page avec hello.html et toutes leurs attentes de voir une page web cool se sont envolées. Ils se sont vraiment ennuyés.
Cependant, je leur ai expliqué le HTML, le CSS et le JavaScript de base. Il m'a semblé qu'il serait plus intéressant pour eux d'apprendre le HTML, le CSS et le JavaScript ainsi que les techniques de création de sites web simples. J'ai eu tort.
Même après avoir créé plusieurs sites et les avoir fait fonctionner sur Firebase, ils n'ont cessé de dire qu'ils voulaient faire quelque chose de plus "réel", qu'ils pourraient montrer à leurs amis.

 

Il faut leur apprendre à faire quelque chose de vraiment utile


J'ai réalisé qu'il y a de nombreuses façons de créer quelque chose de réel, et qu'il ne s'agit pas du tout d'écrire des programmes avec une belle interface graphique, de leur enseigner des structures de données, etc.
J'ai décidé qu'il était préférable d'utiliser du matériel informatique pour que les étudiants puissent physiquement voir ce qu'ils programment. Mon choix s'est porté sur un Pi à la framboise et un Arduino.


Le Raspberry Pi est un ordinateur miniature sur lequel est installée une version spéciale de Linux et qui peut fonctionner avec la plupart des langages de programmation. Vous pouvez acheter une variété de périphériques qui peuvent être contrôlés par un logiciel que vous créez.
Arduino est plus complexe. Il s'agit d'une plate-forme matérielle à spécifications ouvertes et de nombreuses entreprises créent différents dispositifs, comme une voiture avec un système de contrôle automatique ou un robot à quatre pattes.

En utilisant un Raspberry Pi, nous avons construit une station météorologique qui détecte la température et la pression dans l'environnement et envoie ces données à une base de données sur les nuages. Les élèves ont ensuite pu voir les données météorologiques grâce à un graphique de mise à jour. Nous avons également créé des fonctionnalités simples dans le cadre de ce projet, comme le changement d'unités de température ou la détection des températures minimales, maximales et moyennes. Ces activités ont permis aux élèves d'apprendre des structures de données et des algorithmes simples tels que les flux et le tri.


Nous avons ensuite créé un véhicule avec un système de contrôle automatique basé sur Arduino. Chaque élève a écrit un programme qui permettait à la voiture de se déplacer et de détecter les obstacles. Nous avons ensuite construit un labyrinthe et j'ai attribué un prix à l'élève dont la voiture serait la première à sortir de ce labyrinthe.
Les étudiants ont librement discuté entre eux de la logique qui permettrait à la voiture de sortir plus rapidement du labyrinthe. Et ils ont trouvé très cool que la machine qu'ils ont construite mémorise instantanément l'algorithme qu'ils avaient écrit. Mais surtout, les étudiants ont vraiment apprécié car cette machine était réelle et tangible. 

Nous avons également fait quelques exercices pour comprendre les bases du piratage. Tout comme dans le LeetCode, où les participants sont aidés à résoudre des problèmes d'interview, il existe de nombreuses façons d'enseigner aux enfants les bases du piratage informatique. Par exemple, HackThis est un excellent site qui vous propose une série de défis que vous pouvez examiner et résoudre dans votre navigateur. Pour résoudre ce problème, vous devrez utiliser les outils de votre navigateur, tels que les outils de développement de Chrome, afin de trouver les vulnérabilités que vous pouvez exploiter pour accéder à votre système.
Les élèves ont vraiment apprécié ce travail car, après l'avoir terminé, ils sont allés sur de vrais sites web et ont essayé de trouver des failles qu'ils pourraient utiliser (je me suis assuré qu'ils ne faisaient rien d'illégal).
Lorsqu'ils seront mieux préparés et qu'ils auront appris les bases de Linux, j'ai l'intention de leur apprendre à pirater en utilisant Kali Linux. Je pense qu'ils apprécieront encore plus.


La concurrence comme outil d'apprentissage


Clash of Code pour commencer la journée.
Et enfin, la dernière chose que j'ai apprise : les adolescents aiment vraiment la compétition. Ils aiment les exercices après lesquels ils reçoivent immédiatement un retour d'information : ils annoncent un score, donnent des badges de réussite ou génèrent des tableaux de classement.


La meilleure plateforme qui motive les étudiants, à mon avis, est CodingGame. Les adolescents l'utilisent pour résoudre des problèmes de programmation et améliorer leur niveau. Il convient également de noter l'excellente composante visuelle des exercices, qui maintient l'intérêt des étudiants.


Nous avons également commencé la classe par un temps consacré au Clash of Code, une tâche de programmation rapide de 5 minutes au cours de laquelle les élèves ont rivalisé avec d'autres enfants en ligne. Et parfois, mes enfants devançaient des joueurs dont le niveau était plus élevé que le leur. Cela leur a donné un énorme coup de pouce pour commencer un autre cours de programmation.

Conclusion

 

L'enseignement de la programmation est très amusant et éducatif. Non seulement vous apprenez à enseigner aux autres, mais vous vous mettez aussi à leur place. Vous commencez à comprendre comment les autres personnes considèrent un problème et qu'il existe de nombreuses façons différentes de résoudre un problème. Vous apprenez également à expliquer les conditions du problème d'une manière qui rende la réflexion intéressante pour les élèves.
Merci d'avoir lu jusqu'au bout !

Pour des belles formations pour les jeunes  :

 

Apprendre le javascript

Cours développeur :

formation développeur web