La programmation dans les enseignements

Sommaire

  1. La place de la programmation dans les enseignements
    1. Compétences du socle mobilisées (cycles 2 à 4)
    2. La programmation au lycée
  2. Des outils pour l’école primaire et le collège
  3. Python, un langage préconisé au lycée
  4. Pourquoi s’intéresser à la programmation embarquée ?

 

I) La place de la programmation dans les enseignements

1) Compétences du socle (cycles 2 à 4) mobilisées par la programmation

La programmation peut être abordée, en école primaire et au collège, dans de nombreuses disciplines, et pas seulement en mathématiques ou en technologie ; la conduite d’un projet en programmation permet en effet de développer des compétences du socle commun (coopération, créativité, résolution de problème, …)

On peut citer en exemple quelques compétences du socle, correspondant au cycle 2, mobilisées par un projet de robotique :

Comprendre et s’exprimer à l’oral
  • Participer avec pertinence à un échange : questionner, répondre à une interpellation, exprimer une position personnelle (accord ou désaccord, avis, point de vue…), apporter un complément…
Reconnaître des solides usuels et des figures géométriques
  • Reconnaître, nommer, décrire, reproduire, construire quelques figures géométriques.
  • Reconnaître et utiliser les notions d’alignement, d’angle droit, d’égalité de longueurs, de milieu, de symétrie.
Se repérer et se déplacer
  • (Se) repérer et (se) déplacer en utilisant des repères et des représentations.
Rechercher et traiter l’information au moyen d’outils numériques
  • Utiliser les outils numériques découverts en classe pour communiquer, rechercher et restituer des informations.
Résoudre des problèmes élémentaires
  • Résoudre des problèmes en utilisant des nombres entiers et le calcul.
Mener quelques étapes d’une démarche scientifique
  • Conduire des observations.
  • Réaliser des expériences simples dans le cadre d’une démarche scientifique.
  • Décrire le rôle et les fonctions d’un objet technique.
Imaginer, élaborer et produire
  • Réaliser et donner à voir, individuellement ou collectivement, des productions plastiques de natures diverses.

2) La programmation au lycée

Au lycée, l’étude des algorithmes et de la programmation est présente :

En Mathématiques (classe de seconde puis spécialité en première et terminale) :

  • « Choisir ou déterminer le type d’une variable (entier, flottant ou chaîne de caractères) ;
  • Concevoir et écrire une instruction d’affectation, une séquence d’instructions, une instruction conditionnelle ;
  • Écrire une formule permettant un calcul combinant des variables ;
  • Programmer, dans des cas simples, une boucle bornée, une boucle non bornée ;
  • Dans des cas plus complexes : lire, comprendre, modifier ou compléter un algorithme ou un programme ;
  • Générer une liste (en extension, par ajouts successifs ou en compréhension) ;
  • Manipuler des éléments d’une liste (ajouter, supprimer…) et leurs indices ;
  • Parcourir une liste ;
  • Itérer sur les éléments d’une liste ».

En Sciences Numériques et Technologie (SNT, en seconde) :

  • « Écrire et développer des programmes pour répondre à des problèmes et modéliser des phénomènes physiques, économiques et sociaux ».

En spécialité Numérique et sciences informatiques (NSI) :

  • « Analyser et modéliser un problème ;
  • Décomposer un problème en sous-problèmes ;
  • Reconnaître des situations déjà analysées et réutiliser des solutions ;
  • Concevoir des solutions algorithmiques ;
  • Traduire un algorithme dans un langage de programmation, en spécifier les interfaces et les interactions, comprendre et réutiliser des codes sources existants, développer des processus de mise au point et de validation de programmes ;
  • Mobiliser les concepts et les technologies utiles pour assurer les fonctions d’acquisition, de mémorisation, de traitement et de diffusion des informations ;
  • Développer des capacités d’abstraction et de généralisation ».

En spécialité Sciences de l’Ingénieur (SI) :

  • « Analyser le traitement de l’information (algorithme, programme, langage informatique, notions sur l’intelligence artificielle) ;
  • Traduire un algorithme en un programme exécutable ».

Enfin, l’utilisation de programmes (sur ordinateur ou sur microcontrôleur) est intégrée aux sciences expérimentales :

En Sciences Physiques (spécialité de première)

  • Utilisation de « dispositifs expérimentaux et numériques (capteurs, instruments de mesure, microcontrôleurs, etc.) » ;
  • « Notions en lien avec les sciences numériques (programmation, simulation, etc.) ».

En Sciences de la Vie et de la Terre (spécialité de première) :

« Les SVT requièrent l’usage des outils numériques généralistes (Internet, tableurs) et le recours à l’expérimentation assistée par ordinateur (EXAO), qui peut se prolonger par l’exploitation de capteurs connectés à des microcontrôleurs programmables. Elles doivent aussi développer de nouvelles compétences numériques chez les élèves : l’usage des bases de données scientifiques, de systèmes d’informations géo-scientifiques, de la modélisation numérique, de la programmation, des calculs quantitatifs, voire de la réalité virtuelle et de la réalité augmentée ».

II) Des outils pour l’école primaire et le collège

Des sites tels que studio.code.org permettent d’initier les élèves aux notions de base de l’algorithmie et de la programmation [9].

code.org

L’initiation à la robotique (par exemple avec le robot Thymio est également envisageable dès les cycles 2 et 3.

Robot Thymio

Programme Blockly4Thymio Description d’un triangle équilatéral

Par ailleurs, les élèves peuvent s’exercer à la maîtrise des algorithmes à l’aide d’activités débranchées, comme le permet le jeu éducatif « Scottie Go ! ».

L’enseignement de la programmation se poursuit au collège :

Jeu Scottie Go ! Un programme est obtenu par manipulation de pièces en carton, puis scanné sur smartphone pour vérification.

  • en Mathématiques (par exemple avec Scratch, un langage de type « bloc » très riche en possibilités et orienté « programmation événementielle ») ;

Langage Scratch

  • en Technologie : essentiellement à travers la robotique et la programmation d’applications pour smartphone (APP Inventor.

Exemple d’application pour Smartphone développée avec APP Inventor. L’édition d’un QR-code permet d’installer l’application sur un téléphone ou sur une tablette.

III) Python, un langage préconisé au lycée

Le programme de la spécialité NSI indique, dans le préambule, que le langage Python (version 3 ou supérieure) est le langage retenu pour traduire les algorithmes, répondant aux critères suivants : « un langage simple d’usage, interprété, concis, libre et gratuit, multiplateforme, largement répandu, riche de bibliothèques adaptées et bénéficiant d’une vaste communauté d’auteurs dans le monde éducatif ». Ce langage est également le langage préconisé en Mathématiques et en Sciences expérimentales.
Par ailleurs, Python est en 2018 l’un des langages les plus populaires, il apparaît comme le 4ème langage le plus demandé par les entreprises.

Le langage Python permet ainsi de :

  • Manipuler des variables de types entier, décimal, chaîne de caractères et booléen. A noter que le typage d’une variable est dynamique : il dépend de la « valeur » stockée sous le nom de la variable, et peut changer au cours de l’exécution du programme.
  • Stocker des variables de différents types dans des listes, que l’on peut ensuite parcourir, modifier, étendre, …
  • Utiliser des structures de contrôle :

Instruction conditionnelle :
Si ……
Sinon si …..
Sinon …..
Boucle itérative (ou boucle bornée) :
Pour k allant de …. à ….
Faire ….
Boucle conditionnelle (ou boucle non bornée) :
Tant que ….
Faire ….

  • Travailler en programmation modulaire, en définissant des fonctions et en les utilisant dans le programme principal.
  • Lire / écrire des fichiers texte, parcourir les répertoires de l’ordinateur, créer ou supprimer des dossiers, …
  • Lire et produire des fichiers sons, des images, des vidéos, …
  • Travailler en programmation événementielle (le programme répondant à différents types d’évènements), en utilisant les bibliothèques :
  • Tkinter : création d’interface graphique (possibilité d’inclure des images, des boutons, des zones de saisie et d’affichage de texte, …)
  • Pygame : création d’interface graphique orientée vers le jeu, avec possibilité d’utiliser un joystick, un flux vidéo,
  • Travailler en programmation orientée objet, en associant à un objet des attributs (variables) et des méthodes (fonctions propres à l’objet).

Les possibilités sont multiples, il existe de nombreuses bibliothèques répondant aux besoins des utilisateurs.

IV) Pourquoi s’intéresser à la programmation embarquée ?

Un système embarqué, selon, Sébastien Combéfis, Introduction aux systèmes embarqués (2017) inclut les trois éléments suivants :

  • « Réception d’informations provenant de son environnement ;
  • Traitement de cette information (programmation) ;
  • Action à travers le produit hôte qui héberge le système embarqué ».

La programmation « classique » intègre ces différents éléments, mais de façon plus restrictive :

  • la réception d’information est limitée aux saisies sur clavier et utilisation de la souris ;
  • les actions correspondent essentiellement à l’affichage graphique et à l’émission de sons.

Ainsi, la programmation embarquée permet d’enrichir considérablement les possibilités, en incluant l’utilisation de capteurs (caméra, microphone, capteur de présence, accéléromètre, …) et d’actionneurs (commande de moteurs, d’interrupteurs, …). Le codage est alors davantage en prise avec le réel, et acquiert une nouvelle dimension.

Par ailleurs, l’utilisation de systèmes embarqués (microcontrôleur, smartphone, …) est explicitement indiquée dans les programmes de :

  • SNT :
Systèmes informatiques embarqués Identifier des algorithmes de contrôle des comportements physiques à travers les données des capteurs, l’IHM et les actions des actionneurs dans des systèmes courants.
Interface homme-machine (IHM) Réaliser une IHM simple d’un objet connecté.
Commande d’un actionneur, acquisition des données d’un capteur Écrire des programmes simples d’acquisition de données ou de commande d’un actionneur.

 

  • NSI :
Périphériques d’entrée et de sortie

Interface homme-machine (IHM)

Identifier le rôle des capteurs et des actionneurs.

Réaliser par programmation une IHM répondant à un cahier des charges donné.

Les activités peuvent être développées sur des objets connectés, des systèmes embarqués ou robots.

 

  • Sciences physiques :

« Développer, par exemple à l’aide d’un microcontrôleur ou d’un smartphone, une distance ou la célérité d’une onde ».

De nombreuses options existent concernant la programmation embarquée, en utilisant notamment :

  • des robots ;
  • des smartphones (de nombreux capteurs étant intégrés) ;
  • des cartes microcontrôleurs (Arduino, Microbit, …) ;
  • des micro-ordinateurs embarqués, disposant d’un système d’exploitation (Raspberry).

Nous aborderons quelques-uns des ces systèmes dans de prochains articles.