06 December 2016

La programmation : Pourquoi? Pour qui? Comment?

Le réseau pour le développement des compétences des élèves par l’intégration des technologies (RÉCIT) offre de la formation, du soutien et de l’accompagnement au personnel enseignant tout en développant une culture de réseautage. C’est le cas du service national du RÉCIT du domaine de la mathématique, de la science et de la technologie. Au menu de leur riche offre de service se retrouve la programmation. Selon Antidote, programmer c’est « Rendre (un ordinateur) apte à effectuer une tâche précise en donnant les données et instructions nécessaires ». Entretien avec un expert, Pierre Lachance, personne-ressource du RÉCIT, pour réfléchir à différentes facettes de ce concept.

1- Pourquoi la programmation est-elle sur toutes les lèvres à l’heure actuelle?
Depuis la naissance de l’informatique, la programmation a toujours été sur « toutes les lèvres » de celles et ceux qui avaient la possibilité d’en faire. Aujourd’hui, presque tout le monde possède un appareil permettant de programmer. La démocratisation et l’accès au numérique a permis à la science de la programmation de prendre sa place dans la société, tout comme la science et la technologie à une autre époque. Et j’espère qu’elle trouvera sa place en classe ici comme ailleurs…

2- Commençons par une typologie de base.  Qu’est-ce que programmer?
Programmer c’est donner une suite de commandes logiques à quelque chose, à un robot, à un lutin, etc. Si je veux par exemple, que mon robot avance jusqu’à ce qu’un obstacle bloque son chemin puis recule et tourne pour recommencer, je devrai créer une séquence, un algorithme qui traduira mon but en programme compréhensible par le robot ou l’ordinateur. Ça pourrait ressembler à ça pour un robot Arduino :

Dans ce programme, il manque des parties.  Nous n’avons pas créé les fonctions « Avance », « Arrête », « Recule », « TourneGauche », ni même défini la variable « cm ». Mais on a une idée du programme.

Un autre exemple où l’intention est de travailler le « hasard » ou les probabilités peut ressembler à ceci :

Dans ce programme, nous simulons 100 lancers de deux dés. Nous faisons compter le nombre de fois où la somme des dés donne 10 par l’ordinateur puis, nous affichons cette somme. Plusieurs concepts de mathématiques peuvent ici être abordés grâce à ce programme. Il existe de telles simulations sur le Web, mais le fait de programmer ou seulement de voir l’algorithme derrière la simulation et d’essayer de le comprendre développe des compétences chez l’élève.

3- Quels liens peut-on faire avec la vie courante? En quoi la compréhension de la programmation peut-elle nous être utile dans nos vies?

À cette question de l’utilité de la programmation pour la vie de tous les jours, je répondrai de la même façon que je le fais quand on me demande à quoi ça sert d’enseigner la science et la technologie, la philosophie, les arts, etc.

Chaque domaine offre ses méthodes, ses techniques et sa rigueur qui peuvent être utilisées dans divers contextes. Je crois que si un apprenant est compétent à résoudre des problèmes en mathématique par exemple, cela l’aidera dans ses divers projets puisque des compétences de planification, de prévision, d’estimation, d’analyse, etc. sont alors nécessaires.

La programmation offre plusieurs « stratégies » qui sont réutilisables dans d’autres contextes, d’autres problèmes. La valeur de la programmation réside dans le fait qu’elle favorise le développement de la réflexion formelle et la résolution de problème, qu’elle encourage les élèves à explorer, à apprendre et à réfléchir. Les boucles, les conditions, le sens du nombre, découper en plus petits problèmes, en sont quelques exemples.

En apprenant la programmation dès leur plus jeune âge, les enfants pourront mieux comprendre ce qu’il y a derrière un jeu vidéo par exemple. Il ne s’agit pas d’en faire des programmeurs ou des développeurs, mais d’acquérir des bases pour mieux maîtriser les outils et comprendre le fonctionnement derrière un  « écran ».

Comme le propose Seymour Papert dans son ouvrage à propos de sa théorie de l’acquisition de connaissances,  il faut mettre en place des conditions pour que les enfants puissent élaborer par eux-mêmes des « objets pour penser avec » (objects to think with) infiniment diversifés, liés à leur expérience, à leur sensibilité et à leur forme d’esprit.  Il mentionne l’importance de comprendre l’interaction entre ceci et cela. Ça permet de développer une culture scientifique chez l’enfant qu’il produira en grande partie par lui-même. Monsieur Papert traite aussi de l’exercice du droit à l’erreur.

4- Quelle est la situation ici au Québec et ailleurs au regard de l’intégration de la programmation en classe?

Le RÉCIT MST donne de la formation en lien avec la programmation depuis au moins 10 ans. Que ce soit sur l’excellent logiciel Scratch, le fiston de Logo, ou encore pour programmer un robot, plusieurs milieux ont expérimenté ce type de projet.

On compte des adeptes de la programmation ici et là au Québec, mais aucun recensement officiel n’est fait. Cependant, je suis toujours surpris de rencontrer des gens qui en font depuis quelque temps déjà à presque chacune de mes sorties sur le terrain. Je vais tenter de mettre toute cette expertise en réseau.
C’est une structure que j’aime bien!

5- Pour qui s’adresse la programmation?
Tous les élèves peuvent programmer. Le service national du RÉCIT à l’éducation préscolaire fait de la robotique avec les jeunes élèves depuis plusieurs années.

La programmation peut profiter à plusieurs disciplines. Des applications où la programmation est exploitée apparaissent chaque jour. On doit seulement bien cibler les intentions pédagogiques et se lancer.

6- Quels sont les rôles de l’enseignant? Quels sont les rôles de l’élève dans la découverte de la programmation?
Le plus grand défi de l’enseignant est de lâcher prise sur le contrôle à 100% des apprentissages réalisés en classe. Personne ne sait tout et il est impossible de prétendre tout savoir sur la programmation! Nous devons faire confiance aux élèves et à leurs compétences de résolution de problèmes. Il suffit de les accompagner, d’être un facilitateur lors des projets réalisés en classe.

Pour ce qui est de l’élève, nous observons une grande implication dans ce type de projet. Laissons-lui la place pour s’exprimer. Il nous surprendra!

7- Pourquoi devrait-on initier nos jeunes et à quel moment du parcours scolaire?
Pour illustrer le « pourquoi », retenons ces éléments proposés par Fantasticode! Un document plus complet sur le sujet est en construction.

8- Par où commencer? Quels sont les conseils à donner aux enseignants et aux élèves?
La première étape pour l’adulte est de laisser de côté ses préjugés et ses craintes à propos de la programmation. Non! La programmation n’est pas quelque chose d’extrêmement compliqué, qui demande une connaissance approfondie d’un langage avec son vocabulaire, sa syntaxe propre. Il ne faut pas voir l’apprentissage de la programmation en classe comme l’apprentissage d’un langage comme le java, le C++ ou autres. C’est plutôt l’apprentissage de concepts, de méthodes, de techniques nécessaires à tous les langages. Si apprendre à programmer a semblé difficile par le passé, il existe désormais des outils de programmation qui permettent de s’affranchir de la syntaxe et du vocabulaire d’un langage de programmation et de simplement pouvoir commander ce que l’on veut, en simple logique.

Ensuite, quand on se sent prêt à être déstabilisé, à se mettre en mode résolution de problème et apprentissage, on peut se lancer dans un petit jeu qui mettra la table autour de ces concepts de programmation. Le jeu en question est Blockly, qui propose une série de défis. Les tâches graduées vous permettront « d’apprendre » quelques principes de programmation. Oserez-vous apprendre à programmer ou à programmer pour apprendre?

Si l’on veut poursuivre dans la même veine, on se crée un compte d’enseignant sur le site suivant. C’est une initiative américaine qui vise à faciliter l’appropriation de la programmation, de la « computer science » où l’environnement se veut un catalyseur à l’apprentissage de la programmation. Pour les petits, le site Run Marco permet d’atteindre sensiblement les mêmes buts. Vous trouverez également plusieurs applications en explorant les offres diverses offertes par des dévelppeurs sur votre tablettes (iOS ou Android) qui exploitent la programmation en tant que jeu.

Toujours intéressé à pousser plus loin? Scratch est la suite logique. Ce logiciel est dédié à l’apprentissage et ne vise pas la production (texte, vidéo, image, etc.) comme la plupart des logiciels. Il offre un monde de possibilités. La limite de ce logiciel? Notre propre imagination…

Vous remarquerez, après avoir relevé ces défis, que la programmation est très mathématique (Seymour Papert parle d’un pays, la Mathématie, où l’on parle la mathématique). Alors que faire pour en profiter en science et technologie par exemple? La robotique est une réponse. En réalisant un projet de robotique, on peut faire énormément de liens avec le programme de formation tout en profitant de nos compétences en programmation et en mathématique.

Un premier conseil à l’enseignant est de ne jamais donner LA réponse aux élèves. En programmation,  le chemin voire l’algorithme ou le programme pour arriver à ses fins est plus important que la fin. Il faut laisser les pairs collaborer à la résolution du problème avant de s’en mêler. On apprend à connaître l’élève dans son cheminement cognitif.

Un second conseil serait de prendre le temps nécessaire et de le prévoir à l’horaire. On n’apprend pas à marcher ou à parler en 10 minutes par semaine.

Un dernier conseil? Profitez de l’expertise de vos élèves pour créer une vraie communauté d’apprentissage.

Merci à Pierre Lachance pour ce tour d’horizon!  N’hésitez pas à visiter le site du service national du domaine de la mathématique, de la science et technologie pour en savoir plus!

Ressources

Références

  • Contenu de la rencontre offerte à l’Université Laval par les personnes-ressources Pierre Lachance et Pierre Couillard du RÉCIT MST

Restez connecté,

inscrivez-vous à l'infolettre!