Bandeau

Algorithmique au collège et évaluation

Dans la réforme du collège, l’enseignement de l’algorithmique et de la programmation a fait son apparition dans les programmes de Mathématiques. De façon naturelle se pose la question de l’évaluation. Que doit-on évaluer ? Comment l’évaluer ? Comment rendre cette évaluation constructive pour l’élève ? Cet article propose quelques pistes de réflexion issues de discussions avec les membres des groupes Algorithmique de l'IREM de Paris et de l'IREM de Clermont- Ferrand.

Les documents d'accompagnement concernant l'introduction de l'enseignement de l'algorithmique et de la programmation en mathématiques au collège sont exclusivement consacrés au logiciel Scratch. Se pose la question de l'évaluation en classe et au brevet. Des exercices d'évaluation sur papier inspirés de ce qui a pu être fait au lycée sont proposés ci-dessous. Quelques indications sont également données pour l'évaluation dans le cadre des projets qui doivent être proposés aux élèves. Les fichiers joints contiennent les énoncés au format odt et pdf ainsi qu'un fichier zip contenant les programmes Scratch qui ont été rédigés pour fabriquer ces exercices.

Les exercices proposés ici permettent d'évaluer des compétences en algorithmique. Au collège, contrairement au lycée, même s'il n'est pas imposé, le logiciel Scratch est fortement conseillé. Afin de rendre plus clair les exercices pour les élèves, les algorithmes seront formulés en langage Scratch, j'utiliserai donc le mot programme dans les énoncés. Bien entendu, des exercices analogues pourraient être proposés en pseudo-code voire dans un autre langage. Les questions sur les points d'algorithmiques comme le fonctionnement des boucles ou des branchements conditionnels existent indépendamment du langage dans lequel l'algorithme est exprimé. Dans la suite de cet article, j'utiliserai donc algorithme/programme puisque les questions d'algorithmiques sont proposées en langage Scratch.

Que doit-on évaluer en algorithmique et programmation?

Plusieurs compétences en algorithmique/programmation se dégagent :

  • Savoir lire un algorithme/programme ;
  • Savoir exécuter un algorithme/programme ;
  • Comprendre un algorithme/programme ;
  • Savoir écrire / compléter un algorithme/programme ;
  • Savoir corriger un algorithme/programme.

Et pour la partie projets de programmation :

  • Concevoir, organiser, écrire un programme et le commenter
  • Mener un projet.
  • Travailler en groupe
 
Comment évaluer les compétences en algorithmique/programmation sur papier? 
1. Savoir lire un algorithme/programme :
Cette compétence suppose de savoir reconnaître un algorithme. Par exemple, une recette de cuisine n'en est pas un car elle contient des implicites, des instructions ambigües (pincée de sel, four doux)...Et résultat n'est pas garanti !
L'algorithme doit être reconnu quelle que soit sa forme :
En français :
Je pars de 0.
J’ajoute 1 au résultat précédent.
Puis j’ajoute 2.
Je continue ainsi jusqu’à ce que j’ajoute 20.
J’annonce le dernier résultat obtenu.
En pseudo-code :
S ← 0;
pour k allant de 1 à 20 faire
  S ← S + k
retourner S
En langage de programmation :
somme entiers
 
2. Savoir exécuter un algorithme/programme :
Pour déterminer si un élève sait exécuter un algorithme/programme on peut poser des questions du type :
Que fait le programme si l'utilisateur répond 3 ?
Que fait le programme si l'utilisateur répond -5 ?
nb oppose
 
3. Comprendre un algorithme/programme :
Pour s'assurer qu'un élève a compris le fonctionnement du programme précédent il faut absolument éviter les questions du type " Que fait ce programme ?". Ce genre de question, trop ouverte, conduit à de nombreuses réponses différentes (même chez les enseignants) et ceci rend l'évaluation très difficile car l'attendu manque de précision.
 
On préférera des questions du genre :

Parmi les affirmations suivantes, laquelle vous semble vraie à la fin de ce programme, pour n'importe quel nombre saisi par l'utilisateur ?

a) Le lutin dit un nombre qui a la même valeur que le nombre saisi.
b) Le lutin dit un nombre qui a la même valeur que l'opposé du nombre saisi.
c) Le lutin dit un nombre qui a la même valeur que la distance à zéro du nombre saisi. 
d) Le lutin dit un nombre qui a la même valeur que l'inverse du nombre saisi.
 
Autre exemple, sur un autre thème :
Voici un programme contenant un lutin "Balle" à 5 costumes correspondant à 5 couleurs différentes.
balle costume
Que se passe-t-il sur la scène quand on lance ce programme?
balle script
 
Enfin, on peut proposer le programme suivant :
pentagone prgm-OK
puis poser une des deux questions suivantes :
Que trace le lutin quand on lance ce programme?
ou
Laquelle des quatre figures ci-dessous trace le lutin quand on lance le programme précédant ?
pentag 4fig
 
4. Comprendre un algorithme/programme : correction. Pourquoi un algorithme/programme fonctionne ou pas ?
Il est intéressant de déterminer si les élèves sont capable de détecter si un algorithme/programme va fonctionner ou pas. Par exemple on peut proposer l'exercice suivant :
Choisir le ou les programmes permettant de construire la figure ci-dessous. Vous expliquerez pour chaque programme qui ne fonctionne pas ce qui pose problème.
pentagone fig
pentagone 4 PRGM
 
5. Savoir compléter un algorithme/programme :
On peut également vouloir déterminer si les élèves ont une bonne compréhension des boucles et de l'initialisation des variables. Pour cela il peut être intéressant de leur faire compléter un algorithme/programme.
Programme 1 :
somme entiers 
Compléter le programme ci-dessous pour qu'il fasse la même chose que le programme 1 :
somme entiers a completer
 
6. Savoir corriger un algorithme/programme :
Les élèves doivent aussi être capable de détecter et de corriger des erreurs dans un algorithme/programme. On peut proposer l'exercice suivant :
On souhaite réaliser un programme permettant de tracer la figure suivante :
pentagone fig
Le programme suivant comporte une ou plusieurs erreurs. Corrigez-les :
pentagone err
 
Comment évaluer des projets et des programmes ?
Les projets et les programmes des élèves doivent eux aussi être évalués. Mais dans le cadre d'une pédagogie de projet, l'approche est un peu différente. On évaluera entre autre : 
  • l'organisation et le fonctionnement du groupe
  • la planification, la décomposition du travail
  • le fait que le programme fonctionne
  • le fait que le programme est clair et bien décomposé
  • le fait que la programmation est efficace :
- que le programme est compact, astucieux, rapide ...
- que les boucles sont bien choisies
- qu'il y a une bonne gestion des branchements conditionnels
- que l'utilisation des opérateurs booléens est fait à bon escient
- que le programme est commenté
- ...
Un élève n'a pas besoin d’être un virtuose pour avoir la « note » maximale ou pour valider ses compétences.
Un projet peut être modeste s’il est bien mené, construit et cohérent, les compétences peuvent être validées.
 

article proposé par Cécile Prouteau du Giptic de Mathématiques de l'académie de Paris