Lancer le diaporama
Outils pour enseigner
l’algorithmique
1. Présentations
- Professeur de mathématiques en lycée
- Secondes (mais plus depuis trois ans)
- Algo en maths
- Algo en MPS
- Algo en AP (jeux littéraires)
- Terminales S
- Info. et Sciences du Numérique
- BTS Service Info aux Organisations
- mathématiques pour informatique (années 1 et 2)
- algorithmique (première année)
- développement (deuxième année)
- Les points de vue de ce diaporama n’engagent pas mon employeur.
- À vous !
2. Cette présentation
- Rappels sur l’algorithmique
- Quelques principes pédagogiques
- Présentation (± chronologique) de quelques outils
- dédiés à l’enseignement
- ou pas forcément dédiés
- Travail :
- Manipulations
- Sortir de sa zone de confort
- en groupe, par environnement (2 ou 3)
- ou Discussions sur nos pratiques
- Conclusions
3. Ne sera pas
- Un cours de rattrapage d’algorithmique
- comparaison
POUR
vs TANT QUE
- Une apologie…
- Une présentation d’outils généralistes :
- partage et projection d’écran en classe (iTalc, …)
- idem, au travers d’Internet (Togetherjs, …)
4. Qu’est-ce que l’algorithmique ?
- Beaucoup de définitions, plus ou moins équivalentes
- Ici :
- « L’art de combiner des processus de bas niveau…
- …pour résoudre un problème de plus haut niveau »
- Reste à définir :
- le bas niveau
- le jeu d’instructions, ce que sait faire la machine
- le haut niveau
- proche du pb à résoudre, de ce que veut faire l’utilisateur
5. Exemples de niveaux
- Pour compter le nombre de lettres d’un mot :
len("chaine")
, "chaine".length
- ou itération avec compteur ?
- Pour trier une liste de mots :
sorted("chaine")
, liste.sort()
- ou implémentation d’un algorithme de tri ?
- Pour trouver un chemin, si possible le plus court :
- Appuyer sur un bouton,
- ou implémenter l’algorithme de Dijkstra ?
- …
6. Exemples de niveaux
Avec le codage de César, tout d’abord le bas niveau :
function code_vers_lettre(nombre) {
var lettres = ["A", "B", "C", … "Z"];
return lettres[nombre]
// ou simplement utiliser String.fromCharCode(nombre + 65);
}
function lettre_vers_code(lettre) {
var lettres = ["a", "b", "c", … "z"];
var code = 0;
while (lettres[code] != lettre) { // ou réutiliser code_vers_lettre
code = code + 1;
return code;
// ou simplement utiliser lettre.charCodeAt() - 65;
}
7. Exemples de niveaux
Codage de César toujours, on escalade les niveaux :
function code1(lettre) {
var code_lettre = lettre_vers_code(lettre);
return code_vers_lettre(code_lettre + clef);
// ou composition des trois fonctions
}
function code2(mot) {
return mot.split('').map(code1).join('');
// ou parcours des lettres du mot
}
code2("codez moi");
8. Exemples de niveaux
Un niveau, quel qu’il soit, est toujours :
- plus haut qu’un autre (sauf le langage machine),
- plus bas qu’un autre (sauf Haskell ;).
9. Quelle est la place de l’algo…
- …dans les programmes de maths au collège, au lycée ?
- …par rapport au langages de programmation ?
- …au développement ?
- …dans l’industrie ?
- du numérique
- autres (déplacement du développement vers l’utilisateur)
- …dans les sciences ?
- …dans les arts ?
- …en psychologie ?
- …dans la société (lire, écrire, compter, coder) ?
- Autant d’ouvertures possibles !
10. Quelle est la place de l’algo ?
Elle ne se réduit pas…
- …à être destinée à une fraction de la population ;
- …à résoudre des problèmes de maths ;
- …à faire de la programmation ;
- …
11. Pédagogie
Quelques principes :
- Ceux de Piaget, puis Papert (voir plus loin la fiche LOGO).
- Stanislas Dehaene propose quatre piliers de
l’apprentissage :
- L’attention ;
- L’engagement actif ;
- Le retour d’information ;
- Consolider l’acquis.
12. Pédagogie
Un outil n’est pas une méthode !
- Contenu intéressant pour tou(TE)s
- progressivité pour gérer l’hétérogénéité
- scénariser la parabole !
- les élèves doivent accrocher
- pas « fun » à tout prix
- robots ou poupées ?
- PISA, réels écarts
- programmer un véhicule autonome sur une planète, sous l’eau…
- la mythologie, les Égyptiens, …
- maths ou texte ?
- laisser le choix (personnage, décor, abstrait vs concret…)
13. Pédagogie
Deux idées importantes :
- puissance (contrôle sur la machine)
- créativité (vers un problème, ou non)
14. Les outils
Proposition de panorama des outils existants.
- Plus ou moins chronologique
- Plus ou moins par familles
- Langages de programmation
- les algos sont destinés à être mis en place
- mais pré-existent à la mise en place
- Environnements
- Environnements de Développement Intégrés (IDEs)
- ou non intégrés
15. Le français
- Langage
- « Ce qui se conçoit bien s’énonce clairement… »
- Les structures (conditionnelles, itératives…) sont déjà connues
- Préalable indispensable, comme dans l’activité
suite de Syracuse
16. Papier crayon
- Environnement
- L’algorithmique possible sans ordinateur !
- Exemples :
- Apprentissage, trace de variables
- Recherche, preuves…
- Cahiers d’algorithmique (par exemple celui-ci)
- Ou avec un peu de matériel : informatique débranchée
17. Diagrammes de flot
- Langage, dit graphique
- Environnements :
- papier et crayon
- ou logiciels
18. le pseudo-code
- Langage
- parfois appelé :
- méta-langage
- langage algorithmique
- Pas de référence « officielle », dialectes
- Environnement : papier et crayon
- Atavismes provoquant confusion :
- lire (
read
) -> demander
- écrire (
write
) -> afficher
- Tiraillé entre :
- généraliste et en français (langage naturel)
- prépare aux vrais langages (utilisation de
= =
)
- Preuve que l’algorithme préexiste à son implémentation
19. Papert et le LOGO
20. Langages proches du LOGO
21. Pascal
- Langage, conçu pour l’enseignement
- Article Wikipédia
- Bien :
- Pas bien :
- Peu ouvert sur les productions
22. Les BASIC des calculatrices
- Langage…
- …d’un environnement particulier
- accessible lors des épreuves du bac
- peu pratique
- tentative sous IDLE (IDE Python)
23. Les tableurs
- Environnement et langage
- Vrai support de programmation !
- Plus puissant que de simples +-×÷, grâce à
SI
- Itérations
- lignes à lignes
- Trace des variables pour pas cher
- ou en actualisant la feuille
24. Scratch et assimilés
25. Blockly
- Environnement
- Blockly
- de la maternelle à bac+2
26. Algobox
- Langage graphique (ou pas) et environnement
- Site officiel
- Article Wikipédia
- Bien :
- portable
- la facilité d’utilisation
- les représentations graphiques en repère
- l’export HTML
- Pas bien :
- disposition du
SI
, ALORS
et SINON
- des messages d’erreur cryptiques ou inexistants (si
,
au lieu de .
)
- la gestion des fonctions mathématiques
- Prise en main ici
27. Javascool
- Langage (surcouche à Java) et environnement
- Bien :
- documentation
- tutoriels
- support encore actif
- Pas bien :
28. Javascript
- Langage
- Environnement pour pas cher
- un simple navigateur
- un éditeur de texte (Bloc-Notes)
- Utilisé à l’université de Nantes en informatique
- Pratique pour les environnements en ligne
- Langage « moche »…
- … mais très ouvert sur les productions.
29. Python
- Langage
- Populaire, donc multiples environnements
- Adapté à l’enseignement et après
- proche du pseudo-code
- généraliste et pro
- ou pas
- syntaxe
- problème avec
for
- avec le scope
- avec les types (ou utiliser les annotations de Python 3)
- Brython
- Prise en main ici
30. Processing
- Langage (surcouche à Java) et environnement
- Résultats plaisants rapidement
- Populaire
- mais limité
- lourd
- difficile de travailler du texte
- pas de travail côté serveur
31. Langages fonctionnels
primes = sieve [2..]
where sieve (p:xs) =
p : sieve [x | x <- xs, x `mod` p /= 0]
quicksort [] = []
quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
where
lesser = filter (< p) xs
greater = filter (>= p) xs
32. Langages fonctionnels
- Langages d’un type à part
- loin de l’impératif
- loin du bas niveau
- Place des maths
- des expressions
- la composition
- typage
- Haskell for kids
33. MicroAlg
- Langage et environnements
- Cherche a prendre le meilleur de chaque outil exposé ici
- Projet jeune
- Imaginé au printemps 2012
- Démarré fin mars 2014
- Par votre serviteur
- microalg.info
34. Listes de défis
35. Mini-jeux
36. Partage de snippets
37. Communautés
38. Moteurs de jeu
39. Visualisation
40. Autres idées
41. On veut
- un langage qui ne se fait pas remarquer
- syntaxe simple et claire
- messages d’erreur clairs
- un langage léger
hello world
est la marche la plus haute
- de la bidouillabilité
- connecter, interfacer
- modifier le langage
- créer des situations
- évaluer
- se fabriquer son environnement
- du WEB
- classe inversée
- ou partout
- sessions
- attention aux données
- Diversité des supports pour comprendre l’essence de l’algo
42. Manipulations
- Mettre en place un algorithme simple :
- dans l’environnement de votre choix (MicroAlg ?)
- parmi une liste de mots, trouver le plus long
- valable pour les profs aujourd’hui, pas forcément les élèves !
- Ensuite viendra la conclusion.
- organisateurs
- JM Patin
- Stéphane Grognet
- mes caramades du groupe
- université
- vous
Christophe Gragnic, le 03/12/2020, 17h07'10".