Apprentissage du « code » : activités pédagogiques pour apprendre à programmer⚓
L'apprentissage de la programmation est en quelque sorte une alphabétisation nécessaire pour agir et comprendre le monde numérique dans lequel nous vivons aujourd'hui. Il est important de saisir la logique à l'œuvre dans tous nos objets numériques du quotidien (téléphone, tablette, console de jeu, ordinateur) pour être capable de "décoder" une action ou un événement afin d'améliorer ses compétences, en particulier en matière de résolution de problème.
Bien plus que l'apprentissage d'un langage de programmation, qui n'a pas grand intérêt et n'est pas un objectif, au moins dans le premier degré, il s'agit ici de développer des compétences et des connaissances pour résoudre des problèmes complexes, les décomposer en sous-problèmes et définir des étapes de résolution. On les traduira ensuite en une séquence algorithmique pouvant être automatisée en la programmant à l'aide d'un logiciel ou d'une application.
Présentation⚓
Pour travailler en classe sur les notions de code informatique et de programmation, nous avons à notre disposition un logiciel incontournable dans le monde de l'Éducation : Scratch (et sa déclinaison pour les plus petits : ScratchJR).
Ce logiciel permet de se plonger dans "l'informatique créative et ludique" et de faire acquérir aux élèves une "pensée informatique", composante essentielle d'une culture numérique indispensable aujourd'hui et qui doit être la plus large possible.
Utiliser la programmation, le « code », est également un prétexte pour faire travailler de jeunes élèves (cycle 3 et collège) en mode projet. Ils vont apprendre à organiser des informations et des données, à résoudre des problèmes plus ou moins complexes, et cela met en jeu des compétences liées aux mathématiques et à la logique, aux TICE, mais aussi à l'autonomie et l'initiative. Le fait de travailler en groupe sur un projet va également faire appel aux compétences sociales et civiques.
Objectifs⚓
Familiarisation avec les notions de code et de programmation informatique.
Connaître les outils (logiciels et applications) actuels permettant une approche pédagogique des notions de code et de programmation.
Connaître les ressources essentielles pour travailler la notion de « programmation » avec sa classe, quel que soit le niveau.
Connaître les outils⚓
Il existe une multitude d'outils (logiciels, applications ou services en ligne) permettant une initiation au code et à la programmation. Je vais évoquer ci-dessous les plus connus.
Scratch : présentation rapide⚓
C'est un logiciel libre qui a été conçu pour initier les élèves dès l'âge de 8 ans à des concepts fondamentaux en informatique : il permet une approche ludique de l'algorithmique en créant de façon simple de petits « jeux vidéo » dont les éléments seront programmés au moyen de « blocs » de commande.
Une version de Scratch est également disponible directement en ligne, sur le site officiel dédié : https://scratch.mit.edu/
L'intérêt de Scratch est son approche basée sur l'utilisation de blocs de programmation, ce qui permet d'éliminer la difficulté majeure de devoir mémoriser et taper des instructions selon une syntaxe rigoureuse.
Complément :
Scratch est dynamique : il permet de modifier le code du programme en cours d'exécution. Orienté multimédia pour l'enseignement à l'univers informatique des enfants, il traite avec une grande facilité les concepts de base de la programmation comme les boucles, les tests, les affectations de variables, et surtout de la manipulation des objets, tout comme les sons et les vidéos.
Scratch est visuel : tout le code est directement inscrit dans la langue maternelle de l'enfant (une vingtaine de langues européennes est disponible) sous forme de briques de couleurs (par exemple les contrôles en jaune, les variables en rouge, les mouvements en bleu, etc ...).
Complément : Scratch est un outil parfaitement adapté pour la programmation en cycle 3 et cycle 4
Scratch est un langage de programmation visuel et gratuit.
En glissant-déposant des blocs colorés, il est possible de créer des histoires interactives, des jeux, des animations, de la musique, ou des présentations.
Il est ensuite possible de les télécharger sur Internet pour les partager avec les autres utilisateurs du monde entier. Scratch est conçu pour jouer, apprendre par soi-même et créer.
Complément :
sa prise en main par les élèves est quasi-immédiate ;
l'environnement est simple et efficace : constitué de trois parties, on a les instructions, la fenêtre du programme et la fenêtre d'exécution du programme sur le même écran ;
il n'y a pas de syntaxe à connaître, ni à écrire : on déplace simplement des blocs d'instructions qui s'imbriquent par aimantation ;
il est adapté à la programmation événementielle : les scripts démarrent à partir d'un événement et les objets peuvent communiquer entre eux par des messages ;
un simple double-clic sur une instruction permet de l'exécuter, ce qui permet de vérifier facilement la bonne programmation d'un objet ;
il apporte des rendus visuels grâce à des scènes et des costumes et constitue une interface attractive pour le jeune public ;
à partir de l'interface de développement, on peut envoyer sur un espace de partage en ligne son programme ce qui facilite les échanges et favorise les interactions entre élèves.
Scratch-JR⚓
L'application ScratchJR (sur iOS et Android) permet d'initier graphiquement les plus jeunes à l'algorithmique et à la programmation.
ScratchJR utilise un langage de programmation entièrement graphique destiné aux plus jeunes, dès la maternelle.
Les enfants placent ces « blocs de programmation » graphiques pour permettre aux personnages de se déplacer ; ils peuvent ainsi inventer des histoires et des jeux interactifs.
Il est possible d'utiliser ses propres images et enregistrements audio.
Complément :
Ces activités permettent à l'élève d'acquérir un raisonnement logique, de réfléchir seul sur les démarches à mettre en œuvre et à structurer son travail. Il prend conscience que les machines qu'il utilise (ordinateurs, tablettes, etc.) n'ont rien de magique mais sont conçues pour réagir et exécuter les instruction qu'on leur donne.
Exemple : Programmer avec ScratchJR en maternelle
Adresse de la ressource :
Application Android
https://play.google.com/store/apps/details?id=org.scratchjr.android
Application iOS :
LightBot⚓
Lightbot est un jeu qui permet de familiariser les élèves aux rudiments de la programmation.
Il s'agit de déplacer un personnage en programmant une suite de commandes (avancer, reculer, tourner...) représentés par différents icônes.
À chaque niveau, de nouvelles commandes et possibilités sont introduites.
Complément :
Ce petit jeu est disponible sous la forme d'applications pour iOS ou Android :
Connaître les ressources⚓
Les ressources sur l'utilisation pédagogique de ces outils sont très nombreuses sur internet. Ci-dessous une courte sélection.
Scratch⚓
➜ Guide pédagogique de la programmation créative avec Scratch⚓
Plus qu'un "guide" ou qu'un manuel de référence, cet ouvrage téléchargeable (164 pages, en PDF) rassemble également de nombreuses propositions d'activités, des idées d'utilisation pour une introduction à la programmation avec le logiciel Scratch.
Les activités visent à encourager l'élève à explorer certains concepts (séquence, boucles, conditions, opérateurs, etc.). D'après la présentation, ce guide est destiné aussi bien aux enseignants qu'aux parents, éducateurs et élèves.
Une référence, à connaître et à conserver pour tous ceux qui souhaitent explorer ce domaine.
Consulter en ligne :
➜ Wiki entièrement consacré à Scratch⚓
Ce site propose de nombreux tutoriels, très documentés et illustrés, ainsi que de nombreux exemples d'utilisation pédagogique et de projets de travail avec Scratch.
➜ Magic Makers⚓
Ce site est dédié à l'apprentissage du code propose entre autres contenus de nombreux tutoriels pour démarrer avec Scratch.
Conseil :
➜ Télécharger le logiciel Scratch pour une utilisation hors-ligne :
ScratchJR⚓
Un guide pour « Apprendre à programmer dès l'école maternelle » a été créé par Michèle Drechsler, Conseillère TICE du recteur dans l'académie d'Orléans-Tours.
Il présente l'outil et propose des tutoriels et des pistes d'utilisation :
Code.org⚓
De nombreux "cours" pour tous les âges, classés par tranche d'âge et de difficulté croissante. Ces cours proposent des activités très progressives pour s'initier aux notions de programmation, de séquences d'actions programmées, d'algorithme, etc.
Ils sont basés sur le logiciel Scratch, le site propose de s'inscrire comme élève ou comme professeur, mais il est possible d'accéder à de nombreux exercices sans être inscrit.
Lien : https://studio.code.org/
Des robots pour expérimenter⚓
Il est possible d'utiliser des robots spécialement conçus pour une utilisation en classe en classe.
Ils permettront, parallèlement aux activités décrites plus haut, d'expérimenter de manière très concrète et pratique les connaissances et compétences acquises avec l'usage des logiciels et application dédiées à la programmation.
- Robot « Thymio » :
http://www.robotsenclasse.ch/robots-en-classe/thymio-en-classe
- Robot « Blue-Bot » (version améliorée du robot « Beebot » ; les documents et activités sont compatibles) :
Sources et compléments⚓
Utiliser Scratch en ligne (français) : https://scratch.mit.edu/projects/editor/
Apprendre le code en s'amusant : https://studio.code.org/
Tutoriels pour démarrer avec Scratch : http://magicmakers.fr/tutoriels
Pixees, ressources pour les sciences du numérique (INRIA) : https://pixees.fr/
Apprendre à programmer dès la maternelle avec ScratchJR :
http://fr.scribd.com/doc/246088147/Tutoriel-Scratch-JR-pour-apprendre-a-programmer-des-la-maternelle
LightBot, initiation lumineuse aux algorithmes : http://tabs.chalifour.fr/2014/08/14/lightbot/
Blockly Games : https://blockly-games.appspot.com/?lang=fr
La programmation dans les nouveaux programmes :
Complément : Sélection de liens sur le code, l'initiation à la programmation et les robots
Dans cette collection sur mon Pearltrees, des liens vers les outils et ressources consacrés à l'apprentissage de la programmation, du "code", et des notions associées telles que les algorithmes :
https://www.pearltrees.com/alainmi/code-programmation/id15729424