Bonjour, Avec un peu de décalage par rapport à la discussion, je vous fais un retour sur notre expérience sur le sujet.
Donc, lors de nos ateliers nous avons voulu également aborder ces notions. Nous l'avons fait avec des enfants qui avaient une expérience pratique (un dizaine d'ateliers Scratch). Voici ce que nous avons fait (et en rédigeant ce mail j'ai un peu complété le déroulé). * On rappelle d'abord que cela fait pas mal de temps qu'on "code", qu'on fait de la "programmation", qu'on parle d'"algorithme", de "code", etc. Mais qui sait ce que tout ça veut dire exactement ? Et parmi ce qu'on fait à chaque séance qu'est ce qui correspond à chaque notion ? * On demande aux enfants de donner leurs idées sur la question. Il y a eut une petite discussion. * Ensuite, on indique qu'on va illustrer ces notions avec un exemple. * On demande deux volontaires. On donne un feuille et un stylo au premier (appelons le Alan) et on demande au second (appelons la Ada) de donner les instructions à Alan pour qu'il dessine un carré. Cela a très bien fonctionné : on sentait de l'amusement et de la curiosité sur l'exercice. Il se trouve qu'Alan était très bien dans son rôle : il exécutait bêtement les instructions d'Ada qui étaient un peu approximatives et on a obtenu un rectangle pas très réussi... Son algorithme était bugué, on n'a pas eut le temps de lui faire corriger (dommage, pour une autre fois on prendra le temps), mais on le souligne. * A ce stade on indique que l'ensemble des instructions données par Ada à Alan constitue un algorithme. C'est un algorithme pour dessiner un carré. Et on attire l'attention sur le fait qu'on n'a pas utilisé d'ordinateur dans tout cela. * Pour insister sur le fait que la notion d'algorithme est indépendante de la machine, on précise que la racine de ce mot est une latinisation de "Al Kwarizmi" qui est le nom d'un grand mathématicien perse du IXe siècle, une époque où il n'y avait pas trop d'ordi... * Mais ça n'empêche pas qu'on peut donner un tel algorithme à un ordinateur pour que lui aussi dessine un carré. On est tous d'accord pour dire que si Ada donnait oralement en Français ses instructions à l'ordinateur il ne va pas se passer grand chose. L'ordinateur ne comprend pas ce langage. * Il faut trouver un autre moyen. Et, c'est toujours une évidence pour tous le monde, le moyen est tout trouvé : Scratch. On l'utilise depuis longtemps pour donner des instructions à l'ordinateur. C'est un langage que l'ordinateur comprend. * On montre un projet Scratch avec les instructions pour dessiner un carré. Si on avait eu plus de temps on aurait pu faire coder cet algo par les enfants. * On indique que l'ensemble des blocs Scratch du projet est une description de l'algorithme dans un langage ou un code compris par l'ordinateur. On indique que Scratch est une possibilité parmi tant d'autres pour coder un algorithme. En particulier on peut coder en mode texte et on montre quelques exemples. A chaque fois il s'agit du même algo mais qui est codé avec un langage différent que l'ordinateur peut comprendre d'une manière ou d'une autre. * On montre une version du projet où il y a un bug de "codage", pas un bug d’algorithme (exemple : sans le bloc "quand le drapeau vert est pressé"). Et on attire l'attention sur la différence entre un bug d'algo (exemple : on oublie d'abaisser le stylo) et un bug de codage. * A la fin, et pour reprendre la formulation de Samuel, on indique que ce projet Scratch constitue un programme et que tout ce qu'on a fait pour le construire constitue la programmation (d'ailleurs, du coup, je retirerais la phase algorithmique de cette notion de programmation, on programme un algorithme qui peut exister au préalable). * En postface nous avons parlé d'Ada Lovelace et on a montré le code du premier programme jamais écrit et la machine à qui il était destiné. * Et une ouverture pour revenir sur le sujet serait de leur demander de donner des exemples de cas où on utilise des algorithmes sans ordinateurs (recettes de cuisine, instruction de montage, résolution de casse-tête...). a+ Nicolas _______________________________________________ Discussion mailing list [email protected] http://listes.jecode.org/cgi-bin/mailman/listinfo/discussion
