Initier les élèves à la pensée informatique et à la programmation avec Scratch

Pierre Tchounikine

dernière mise à jour : 25 mars 2017 (refonte du document)


Résumé et plan du document : cf.ci-dessous
Télécharger le document complet
(Version 2 du 25 mars 2017) : (36 pages)
 
Accéder aux exemples du document + compléments ci-dessous
: https://scratch.mit.edu/studios/1808925/
(Ce que les exemples exemplifient : cf. ci-dessous)

Contacter l'auteur : Pierre.Tchounikine@imag.fr      (site Web)
(Je suis preneur de commentaires/avis/conseils etc. pour améliorer le doc, notamment de la part d'enseignants et de formateurs)


Introduction/Résumé

L’enseignement de l’informatique, de façon générale et, notamment, à l’école élémentaire, est actuellement un objet de réflexion.

Il y a sur le sujet des discours très divers, plus ou moins fondés, et également plus ou moins liés aux enjeux sous-jacents (disciplinaires, médiatiques, politiques). Il y a beaucoup d’appels en faveur de cet enseignement, avec des arguments différents, étayés ou pas ; en substance : « cela permet de développer des compétences importantes », « cela développe la créativité des élèves », « c’est moderne », « c’est un domaine scientifique important », « c’est un secteur qui embauche », « mon petit frère adore », ou encore « c’est mon domaine d’activité, donc il est important, donc il faut l’enseigner ». Il faut donc prendre de la distance par rapport à un effet de mode et des discours parfois trop généraux et/ou trop prosélytes (ou caricaturalement négatifs), dont certains visent à faire agir le politique sur des questions de long terme plus qu’à aider les enseignants ici et maintenant. Cependant, prendre de la distance ne veut pas dire jeter le bébé avec l’eau du bain, i.e., refuser de considérer l’enseignement de l’informatique car certains discours sont trop généraux et/ou infondés (pour certains, complètement idiots), ou encore porteurs de confusions (par exemple qu’enseigner l’informatique a pour but de faire des élèves de futurs programmeurs : enseigner la lecture et l’écriture ce n’est pas former des écrivains, même si certains élèves deviendront peut-être écrivains). Il y a enfin des ressources pédagogique mais qui, si l’on n’a pas les idées claires sur ce que l’on veut enseigner, pourquoi et comment, peuvent être difficiles à bien exploiter.

L’objectif de ce document est d’essayer d’aider les enseignants (et les formateurs d’enseignants) à y voir plus clair. Pour cela, il propose des informations et des réflexions pour connaître et comprendre le domaine, les discours, les programmes et les principales ressources existantes mais, surtout, pour développer une réflexion personnelle.

Comme son titre l’indique, ce document se focalise sur l’enseignement de « la pensée informatique », i.e., les compétences suivantes : savoir décomposer un problème en sous-problèmes plus simples ; savoir réfléchir aux tâches à accomplir pour résoudre un problème en termes d’étapes et d’actions (ce que l’on appelle un algorithme) ; savoir décrire les problèmes et les solutions à différents niveaux d’abstraction, ce qui permet d’identifier des similitudes entre problèmes et, par suite, de pouvoir réutiliser des éléments de solutions ; ainsi que, dans l’approche que j’adopte, savoir écrire et tester ces algorithmes avec le langage de programmation Scratch. Pourquoi Scratch ? Parce que c’est le langage qui s’impose de fait pour le niveau scolaire / la classe d’âge considérée, et qu’il y a de bonnes raisons à cela. L’essentiel du discours est cependant indépendant de ce langage particulier.

Enseigner la pensée informatique avec Scratch amène à mettre au cœur de la réflexion l’algorithmique et la programmation, dans une approche traditionnelle ou orientée « informatique créative ». C’est sensiblement différent que d’enseigner l’« informatique », i.e., la discipline informatique, qui amène à considérer d’autres notions (e.g., de machine, d’automate ou de langage). Je fais ce choix car, à mon sens, c’est bien la « pensée informatique » (on pourrait dire également « pensée algorithmique ») qui doit être le cœur de l’enseignement à l’école élémentaire, ce qui n’empêche pas bien sûr d’aborder, au passage, d’autres aspects.

Le texte est principalement écrit pour des professeurs des écoles (instituteurs et institutrices). Il s’adresse donc à des lecteurs qui, pour la plupart, n’ont pas suivi de formation à l’informatique au cours de leurs études. Le but n’est pas de les former à l’informatique (ce n’est pas un cours d’informatique), mais de donner des éléments permettant de comprendre ce que peut être un enseignement de la pensée informatique et comment l’aborder. C’est un point d’entrée donc. Pour se lancer dans un enseignement effectif il faut ensuite développer une certaine maîtrise de ce que l’on veut enseigner (comme on le verra, c’est abordable quelle que soit sa discipline d’origine, et ce document est suffisant pour cela), puis exploiter les ressources actuellement à disposition (le document présente des exemples réutilisables, pas d’activités/séquences prêtes à emploi ; cependant, des pointeurs vers ce type de ressources sont indiqués). Par souci de simplification pédagogique, je prends par moment un peu de liberté avec les canons de la discipline (quelques approximations qui n’induiront pas de mauvaises conceptions je l’espère).

Étant donné le public cible, le niveau considéré est le Cycle 3 (école / CM1 et CM2). Il est cependant possible de faire des choses au Cycle 2 et, par ailleurs, certains éléments sont également potentiellement pertinents pour les niveaux collège/lycée (Scratch reste pertinent pour le collège, voire le lycée pour certains aspects ; à ces niveaux, il est possible d’utiliser d’autres langages de programmation, mais les réflexions pédagogiques sont similaires).

Le texte aborde successivement l’enseignement de l’informatique de façon générale, puis l’enseignement de la pensée informatique, puis les ressources utilisables. Il est structuré autour de la liste de questions suivantes :
  1. Pourquoi enseigner l’informatique à l’école primaire ? (arguments proposés ici et là, programmes actuels, confusions et mauvaises interprétations à éviter, position personnelle).
  2. Que faut-il faire pour enseigner l’informatique à l’école ? (il n’y a pas besoin d’être ou de devenir « informaticien », c’est accessible à tous les professeurs des écoles, mais il faut avoir les idées claires sur ses objectifs pédagogiques).
  3. Quels objectifs pédagogiques peut-on considérer ? (il est important de dissocier des objectifs qui peuvent être de natures très différentes).
  4. Qu’est-ce que c’est que la « pensée informatique » et pourquoi l’enseigner ? (définitions, intérêt, connaissances requises, etc.).
  5. Que veut dire « utiliser Scratch pour enseigner la pensée informatique » ? (principes généraux, puis une série d’exemples thématiques : un exercice faisant écrire aux élèves un algorithme ; un exercice de « pensée informatique », illustrant par ailleurs la différence entre « utiliser un programme » et « construire un algorithme/programme » ; un exercice couplant maths et pensée informatique, illustrant par ailleurs comment aligner le moyen « Scratch » avec l’analyse pédagogique/didactique ; un exercice couplant production d’écrit et pensée informatique ; et enfin un exercice autour de la résolution de problèmes).
  6. Comment aborder l’enseignement de la pensée informatique ? (il y a deux approches non-disjointes mais significativement différentes, l’approche « orientée algorithmique » et l’approche « orientée créativité »).
  7. Que faut-il comprendre à Scratch en tant qu’enseignant, et comment s’y prendre ?
  8. Comment définir et gérer des situations pédagogiques ?
  9. Quelles difficultés peut-on attendre/anticiper ?
Le texte a une logique linaire. Les sections qui abordent le cœur du sujet sont les sections 4 et 5. Il est possible de se faire une idée intuitive de ce que signifie « initier les élèves à la pensée informatique et à la programmation avec Scratch » en lisant directement la Section 5. Si l’on ne connaît pas du tout la notion d’algorithme ou Scratch, il est possible de jeter un œil sur la Section 4.2 avant de lire le reste du document. Bien que les principes abordés ne soient pas liés à un langage de programmation particulier, les exemples proposés sont tous en Scratch.

J’espère pouvoir faire évoluer ce texte et remercie par avance les lecteurs pour leurs commentaires.


Ce que les exemples exemplifient
(les "Remix" sont des exemples de la communauté Scratch repris en l'état ; les autres sont des exemples construits pour expliquer différentes choses)

La différence entre utiliser/faire un programme
(cf. doc)
  • Un jeu : Fraction Game remix
  • Un jeu + simulation : The Fraction Attraction remix
  • Un exercice d’algorithmique : Exo fraction pommes
La construction de blocs pour aligner analyse pédagogique et Scratch
(cf. doc)
  • Jouer sur les variables didactiques : Exo boucle multiplication
  • Cacher le positionnement en x.y : Dialogue sur 1 scène.
Différentes façons de faire des animations + ou – interactives (pas toutes très pertinentes)
  • L’animation de base classique : Dance Party remix
  • Un dialogue sur une image, avec 1 seul « personnage » micro : Dialogue sur 1 scène (pour généraliser au cas où l'on utilise d'autres personnages : positionner le micro par rapport aux coordonnées des personnages via les blocs "aller à personnage" ; éventuellement, masquer le micro en le réduisant) 
  • Un dialogue avec 2 personnages, simple puis interactif via un Si-Alors-Sinon : Dialogue entre personnages
  • Évolution d’une histoire : Changement de scènes via des messages
  • Évolution d’une histoire : Changement de scènes via arrière-plans et boutons
  • Une "mise en image" : Le Corbeau et le Renard remix
  • Un projet d’école (réalisation complexe) : La bouteille d'eau en plastique, quel trajet ! remix
Des exercices « à la Logo »
 (cf. doc)
  • Tracer un parcours
  • Dessiner une rosace (commencer par des choses plus simples !)
Faire faire des Quizz
  • Un exemple minimal : 2 et 2 font 4
Scratch comme un outil de scénarisation
(cf. doc)
  • Démarche de résolution d’un problème : Do Val et Cal résolvent un problème (démarche générale, utilisation de variables)
Ce que c’est qu'un "jeu" (thème de projet possible) programmé avec Scratch
  • Le fameux Pong : Pong Starter remix
  • Un jeu plus actuel d’après les étudiants : Angry Birds V.1 remix
  • Un labyrinthe/quizz : Fraction Game remix