L'enseignement en France et à l'étranger

Répondre
Partager Rechercher
Citation :
Publié par Flowe

D'ailleurs tes exemples d'instructions de base sont symptomatiques : les informaticiens se battent contre l'utilisation des "input" et autres "print" (voir par exemple ce qu'en dit un professeur d'informatique ici : https://www.yannsalmon.fr/les-foncti...me-de-seconde/). Peut-être que ta formation n'est pas suffisante ?
Je n'ai même pas souhaité lancer le débat du print/input mais effectivement, depuis deux ans, j'ai tout repris pour changer de vision sur ce thème, mais sur la seule demi journée de formation dans mon académie, le collègue (donc pas plus formé que moi !) nous a arrosé de scripts python du genre :


a=input(entrez la largeur)
b=input(entrez la largeur)
S=a*b
print(S)

et j'en passe des meilleurs

Donc moi je persiste : je n'ai eu aucune journée de formation pour "enseigner la programmation" ou "enseigner l'algorithmie avec comme support un langage" qui ait été faite par un formateur avec de réelles compétences (et j'estime mes collègues qui se sont collés à la construction de la demi journée en GDT académique)
Citation :
Publié par Flowe
Je ne suis pas du tout d'accord. Pour enseigner l'informatique, il faut des enseignants diplômés en informatique (pour la NSI), ou au moins formés (pour l'utilisation de Python dans les autres matières scientifiques). Je ne pense pas qu'une demi-journée de formation soit suffisante. Des enseignants mal formés auront beau faire du mieux qu'ils peuvent, cela restera du bricolage. Dire le contraire, c'est comme dire "les physiciens peuvent bien enseigner les maths aux terminales, ils savent calculer des intégrales et résoudre des équations différentielles".
Ah, je me reconnais tellement dans cette phrase Je suis chimiste de formation et je me retrouve à enseigner aussi les maths (comme Fugo) et autant en physique chimie j'arrive à avoir une approche assez pédagogique autant en maths je rame, et à part présenter les maths comme un outil pour les sciences... (oui, les purs matheux lancez moi des tomates si vous voulez)
Ce cher Yann Salmon nous indique la 'bonne' méthode. Loué soit-il !
Ce qu'il dit est d'une banalité sans nom et s'applique à tout programme un tant soit peu élaboré.

L'utilisation de l'E/S ou la définition de fonction se fait selon la réutilisation de la dite fonction que tu as à faire.
Définir une fonction pour ne pas la réutiliser derrière, c'est d'une idiotie sans nom. Par exemple.
Ou pour un programme d'une quinzaine de lignes à tout casser, ce qui correspond à ce que tu vas faire au lycée hors NSI.

Donc merci d'apporter de l'eau à mon moulin.

Citation :
et à part présenter les maths comme un outil pour les sciences...
Bah tu fais bien, c'est le cas pour 99,999999% des gens et des situations.
Pour un informaticien, ou quelqu'un de bien formé comme toi, c'est évidemment une banalité sans nom. Pour des profs de maths à qui on n'a jamais dit ce qu'est une fonction informatique, ce n'en est pas une.
Citation :
Publié par Avrel
Définir une fonction pour ne pas la réutiliser derrière, c'est d'une idiotie sans nom. Par exemple.
Ou pour un programme d'une quinzaine de lignes à tout casser, ce qui correspond à ce que tu vas faire au lycée hors NSI.
Le principe est d'apprendre les bonnes pratiques pour savoir ensuite traiter correctement des problèmes plus complexes.
Citation :
Le principe est d'apprendre les bonnes pratiques pour savoir ensuite traiter correctement des problèmes plus complexes.
Chose que tu feras lorsque tu aborderas des problèmes plus complexes, en montrant la nécessité d'utiliser des fonctions/routines etc pour éviter la redondance et améliorer la lisibilité.

Le programme le plus long en Python que j'ai du écrire avec des élèves n'a pas du dépasser les 20 lignes.
Je devrais leur expliquer comment écrire des commentaires en Python aussi mais ... quel est l'intérêt si ce n'est amener une surcharge cognitive ? (déjà qu'il n'en faut pas beaucoup ...)

Ce qu'écrit Yann Salmon est très juste et je ferais évidemment ainsi si je devais enseigner l'informatique dans le supérieur.
Sauf que ce n'est pas le cas et que mon objectif est avant toute chose de les initier à la programmation. Donc je vais sciemment taire un certain nombre de choses, au moins dans un premier temps, et me raccrocher le plus possible à ce qu'ils connaissent déjà : Scratch et le Français (et là, le bât blesse )

Celui qui voudra aller plus loin, je lui expliquerai pourquoi faire ceci ou cela. Pour les autres, cela n'amènera à rien si ce n'est de la confusion.

Citation :
Pour des profs de maths à qui on n'a jamais dit ce qu'est une fonction informatique, ce n'en est pas une.
On dira que c'est une application mathématique au sens large : un ensemble de départ, un ensemble d'arrivée, au sens large (ça peut être des variables globales ou autre, on s'en fiche)

J'imagine que chacun voit les choses à sa façon mais l'informatique, ce n'est qu'une branche des mathématiques au final, créée par des mathématiciens pour résoudre des problèmes de mathématiques et utilisant une logique et une structure mathématique.

Edit : on peut alors arguer du fait que l'informatique théorique n'ait pas assez de place dans le cursus de mathématiques générales. Ca résoudrait bien des problèmes
Et je n'aime pas Python, qui cache beaucoup de choses.

Dernière modification par Compte #449857 ; 20/06/2021 à 16h38.
Tu parles de ce qu'ils connaissent aka Scratch et le Français, et je te réponds avec un argument supplémentaire : le langage python est en anglais.

Oui, c'est de l'anglais débile (désolé pour les anglophones) avec des if / else / etc mais ça reste une difficulté majeure pour les élèves mais surtout pour les enseignants.

Et oui, dans un monde idéal, tous les enseignants ont un niveau équivalent CLES2 dans une langue étrangère blablabla mais ça, c'est encore une fois très mignon le monde de la théorie !

Bref, ce débat qui semble n'avoir ni queue ni tête oppose deux écoles en fait :

- l'EN est une buse en formation et en conception de programmes (du deuxième découle le premier)
- Les enseignants devraient être capables de s'auto former de manière experte sur les nouveautés dans leur discipline


bienvenue dans le système éducatif français
Citation :
Publié par Fugo
J'ai fait des maths dans le supérieur (prépa, fac) et non, je maintiens, j'ai fait une quantité infime d'algo c'était pas du tout l'objectif des formations

Désolé mais 1h ou 2h pour implémenter dans un langage, c'est peut être valable pour toi, mais sur le terrain, c'est pas la réalité
Alors en collège et lycée, on vous demande pas de faire des "cadors" de l'algo... C'est une "initiation" avec une implementation des bases en python (pour le lycée)... Donc la "quantité infime d'algo" devrait largement suffire...

Après pour apprendre le python, 1h ou 2 est clairement optimiste. Ca c'est le temps d'adaptation pour un codeur qui a déjà vu quelques langages... Perso, pour un "total novice", je partira plus sur un weekend en mode "je fais que çà" ou alors, 1h ou 2h tous les weekend pendant les grandes vacances... quelque chose comme çà... et pas besoin d'acheter quoi que ce soit (enfin faut un ordi avec internet ), y a largement de quoi faire niveau cours / aide etc sur internet...

Sachant que c'est "one shot", tu l'apprends une foi et après c'est good (jusqu'à un changement de programme la dessus... ).

Citation :
Publié par Fugo
- l'EN est une buse en formation et en conception de programmes (du deuxième découle le premier)
- Les enseignants devraient être capables de s'auto former de manière experte sur les nouveautés dans leur discipline
En faite, ton 2 est la conséquence du 1. Comme on sait que l'EN ne fait pas son taf niveau formation et conception de programme (et que c'est pas pret de changer ://), il est important que les enseignants soient capable de s'auto former sur les évolutions des programmes de manière aussi avancé que nécessaire (donc niveau algo et python : niveau débutant). Perso, j'ai toujours pensé que c'est ce à quoi servait les grandes vacances lol
Citation :
Publié par Fnord
Concrètement, j'apprends quoi à mes élèves ? Dans le cadre d'un programme simple, c'est essentiellement équivalent, mais si j'ai bien compris, la gestion des affectations n'est pas tout à fait identique, ce qui posera problème quand on essaiera d'avoir des projets complexes, et des questions de variables locales et globales. Qu'est-ce qui est le mieux à apprendre en premier pour les élèves, et qui sera le mieux pour les élèves quand ils arriveront dans un cours d'informatique dans le supérieur ?
Même des experts d'un langage en sont toujours à comparer différentes façon d'allouer de la mémoire en fonction de l'architecture ou des cas d'usage.
À mon sens l'important dans ton exemple est de montrer qu'en informatique une structure de base c'est la liste et qu'il est possible d'ajouter des trucs dans une liste. Au passage en Python on peut faire une liste de choux et de carottes, ce qui est loin d'être le cas dans tous les langages mais encore une fois c'est du détail.

Même au niveau master je tais un grand nombre de choses, par exemple les histoires de complexité algorithmique O(n) / O(log n) qui peuvent être en pratique torpillées par la façon dont les processeurs fonctionnent.

Concernant l'auto-formation on est logés à la même enseigne dans le supérieur - le mieux c'est de se former entre collègues
Pour l'allocation de variables, commence par leur apprendre l'utilisation de variable local avant de parler de variable global... Sinon les mauvaises habitudes seront prises et ca va être la galère après :X les variables globales sont a utiliser qu'en dernier recours (quand on peut pas faire autrement, ou dans certains cas d'optimisation). La règle "general" c'est variable locale. Et ce dans n'importe quel langage (qui a des variables locales...).
Citation :
Publié par Gardien
Pour l'allocation de variables, commence par leur apprendre l'utilisation de variable local avant de parler de variable global... Sinon les mauvaises habitudes seront prises et ca va être la galère après :X les variables globales sont a utiliser qu'en dernier recours (quand on peut pas faire autrement, ou dans certains cas d'optimisation). La règle "général" c'est variable locale. Et ce dans n'importe quel langage (qui a des variables locales...).
Justement, je ne leur en parle pas !

Mais précisément, sachant qu'ils n'ont aucune idée de tout ça, quels sont les outils à leur apprendre qui leur permettront d'aborder ces notions dans le supérieur sans rajouter trop de difficultés ?

Pour prendre un domaine que je maîtrise, en physique ou chimie, il y a des manières d'apprendre aux élèves ce que c'est qu'une force, une concentration molaire, ou autres, qui rendront bien plus simples ou compliqués les cours des années suivantes, alors même que pour le programme de l'année en cours, ça ne changerait rien. Mais en info, je n'ai aucune idée de ce que sont des bons réflexes à apprendre aux élèves. Et comme nos formations sont faites par des collègues qui n'ont souvent pas non plus le recul, je ne vois pas trop comment ça peut bien se passer.

(Oui, l'éducation nationale est infoutue d'avoir des gens compétents en informatiques pour former leurs enseignants qui enseigneront ensuite l'informatique... )
Citation :
Publié par Fnord
Justement, je ne leur en parle pas !

Mais précisément, sachant qu'ils n'ont aucune idée de tout ça, quels sont les outils à leur apprendre qui leur permettront d'aborder ces notions dans le supérieur sans rajouter trop de difficultés ?
D'un point de vue général (je fais pas trop de python) :
- variables : affectation / calcule mais surtout portée de la variable ("durée de vie")
- operateurs : arithmétique, binaires, ternaire etc...
- if, then, else et switch : quand utiliser un switch plutôt que des if...
- boucle : for, while etc et surtout quand utiliser tel ou tel type de boucle.
- fonctions : paramètres, valeur de retour, récursivité (et pourquoi il faut faire attention quand on en utilise... @stackoverflow)

si déjà, ils maitrisent çà bien. Ca sera une grande aide pour la suite.

Après, on peut voir des types "évolués" comme les listes, dictionnaires etc... Mais ca vient après.

Y a peut être des spécificités aux pythons que je ne connais pas... mais dans l'absolu, osef. Ce qui compte c'est d'apprendre les bases d'un langage et ce que j'ai listé existe dans "tous" les langages.

Après, ce qui peut être intéressant, si les élèves sont motivés et que tu as le temps niveau programme, ca serait de voir comment évaluer la "complexité algorithmique" d'un algo (temps linéraire, exponentiel, etc). C'est toujours utile de savoir évaluer ce genre de chose pour éviter d'avoir des surprises à l'execution de ton code
Pour les variables (et les fonctions) : le nommage est un point crucial. Prendre l'habitude de donner de vrais noms à ses variables c'est un gros plus pour la suite où on n'a pas envie de voir des i,j,x,m partout.
Si j'étais méchant je dirais aussi de prendre le réflexe de tout nommer en anglais : le code est déjà en anglais, et de mon point de vue c'est plus compliqué de lire un truc qui mélange du français et de l'anglais

La portée est importante aussi, mais difficile à montrer en Python où le code suivant est valide contrairement à la plupart des autres langages :
Code:
use_x = True
if use_x:
  x = 1
else:
  y = 1

if use_x:
  print(x)
else:
  print(y)
De toute façon la programmation ça s'apprend en résolvant des problèmes.
- Pour les conditions : résoudre les racines d'un trinôme ou indiquer qu'il n'y en a pas
- Pour les boucles : trouver les diviseurs d'un nombre ou bien calculer le point de chute d'un objet (en discrétisant le mouvement)
- Pour le récursif : trouver un PGCD ou la bonne vieille factorielle
- Pas de switch en Python, donc pas la peine d'en parler
- Pour les fonctions : une simple fonction "square" permet de programmer de façon lisible n'importe quoi qui utilise Pythagore plutôt qu'avoir des (x1-x2)*(x1-x2) partout

J'aurais tendance à mettre aussi certains conteneurs : les listes et même les structures (classes) qui ont la réputation d'être complexes pour les gens qui ont fait du C mais qui sont en fait naturelles pour les humains. Par exemple une structure Point qui regroupe 2 coordonnées, voire qui peut calculer sa distance à un autre point : P1.distance_to(P2)

Enfin pour tester du code rien de pire que des input() partout. En Python c'est simple d'écrire ses valeurs dans le code, d'ailleurs c'est aussi une bonne pratique de développer son code sur des valeurs destinées aux tests, puis de le rendre plus interactif.
Citation :
Publié par kermo
Pour les variables (et les fonctions) : le nommage est un point crucial. Prendre l'habitude de donner de vrais noms à ses variables c'est un gros plus pour la suite où on n'a pas envie de voir des i,j,x,m partout.
Si j'étais méchant je dirais aussi de prendre le réflexe de tout nommer en anglais : le code est déjà en anglais, et de mon point de vue c'est plus compliqué de lire un truc qui mélange du français et de l'anglais

La portée est importante aussi, mais difficile à montrer en Python où le code suivant est valide contrairement à la plupart des autres langages :
Code:
use_x = True
if use_x:
  x = 1
else:
  y = 1

if use_x:
  print(x)
else:
  print(y)
De toute façon la programmation ça s'apprend en résolvant des problèmes.
- Pour les conditions : résoudre les racines d'un trinôme ou indiquer qu'il n'y en a pas
- Pour les boucles : trouver les diviseurs d'un nombre ou bien calculer le point de chute d'un objet (en discrétisant le mouvement)
- Pour le récursif : trouver un PGCD ou la bonne vieille factorielle
- Pas de switch en Python, donc pas la peine d'en parler
- Pour les fonctions : une simple fonction "square" permet de programmer de façon lisible n'importe quoi qui utilise Pythagore plutôt qu'avoir des (x1-x2)*(x1-x2) partout

J'aurais tendance à mettre aussi certains conteneurs : les listes et même les structures (classes) qui ont la réputation d'être complexes pour les gens qui ont fait du C mais qui sont en fait naturelles pour les humains. Par exemple une structure Point qui regroupe 2 coordonnées, voire qui peut calculer sa distance à un autre point : P1.distance_to(P2)

Enfin pour tester du code rien de pire que des input() partout. En Python c'est simple d'écrire ses valeurs dans le code, d'ailleurs c'est aussi une bonne pratique de développer son code sur des valeurs destinées aux tests, puis de le rendre plus interactif.
Typiquement, ça, c'est ce qui devrait faire le contenu d'une journée de formation pour les enseignants à mon sens,
C'est en me basant sur ce genre de documents que je me suis formé, mais je suis lunaire comparé aux attentes que tu trouves dans les manuels,
23282-1624287680-4155.png 23282-1624287697-4935.png

Désolé pour la qualité des images,

Pour le coup, moi, maintenant avec le recul, cette manière de travailler le langage me dérange, alors que quand j'ai démarré elle me semblait "naturelle"

Bref ...
On dévie :P
Citation :
Pour les variables (et les fonctions) : le nommage est un point crucial. Prendre l'habitude de donner de vrais noms à ses variables c'est un gros plus pour la suite où on n'a pas envie de voir des i,j,x,m partout.

Si j'étais méchant je dirais aussi de prendre le réflexe de tout nommer en anglais : le code est déjà en anglais, et de mon point de vue c'est plus compliqué de lire un truc qui mélange du français et de l'anglais
Ce sont les deux choses importantes pour prendre une bonne habitude.
Et commenter le code s'il n'est pas trivial (mais aucune chance que ce soit le cas au lycée )

Le reste, c'est au fur et à mesure.
Et éviter le franglais du style : NomItem ou encore ParametresUser. On me dira qu'on s'en fout, c'est le lycée et la plupart ne sont pas destiné à devenir des devs, mais ça me parait tout de même important d'avoir quelque chose de lisible, facile à lire au premier coup d’œil et d'avoir de la rigueur quant au nommage des variables.
Citation :
Publié par znog
Le bazar

Le principal avantage est d'éviter les pertes de documents. Et aussi les rétentions de copies comme en 2019.
Et aussi, assez rapidement, de faire des économies.
Dans la mesure où il n'y a plus de réunion d'entente pour récupérer les copies, il n'y a plus de frais de déplacements. Les scanners seront vite rentabilisés.

Sinon, c'est bien de parler de la philo, mais les journalistes pourraient découvrir qu'il y a eu une autre épreuve écrite cette année : le bac de Français.
Que je corrige joyeusement depuis vendredi dernier.

Alors contrairement à beaucoup de collègues, la correction sur ordi ne me dérange pas : on peut grossir, modifier le contraste de telle sorte qu'au final, c'est plutôt pas mal. Bon après, c'est vrai, c'est fatiguant de corriger des copies sur écran du matin au soir pendant des jours et des jours... Mais en fait, c'est fatiguant de corriger des copies du matin au soir pendant des jours et des jours...

Mais y'a quand même des problèmes scandaleux : un logiciel vraiment naze pas du tout intuitif, des copies scannées dans le désordre, des oublis de pages au moment de scanner et SURTOUT, les serveurs qui plantent. Ce matin, y'a eu trois plantages. Et le plus drôle, c'est lundi matin pendant la commission en visio où tout a planté du début à la fin.

Bref, comme d'hab', c'est d'un niveau d'amateurisme assez étonnant.
Sans être partisan et en en ayant un peu rien à faire, si c'est la première année que le dispositif est actif, c'est normal qu'il y ait des couacs voire des erreurs à répétition.
Et ce n'est pas forcément gravissime ou scandaleux, je dirai même que c'est normal.

La où il y a problème c'est si rien n'est corrigé par la suite et que les erreurs se répètent.

Vu que je n'ai pas suivi la chose, je ne sais pas où en est le processus donc je ne porte pas de jugement.
Citation :
Publié par Colsk
Sans être partisan et en en ayant un peu rien à faire, si c'est la première année que le dispositif est actif, c'est normal qu'il y ait des couacs voire des erreurs à répétition.
Et ce n'est pas forcément gravissime ou scandaleux, je dirai même que c'est normal.

La où il y a problème c'est si rien n'est corrigé par la suite et que les erreurs se répètent.

Vu que je n'ai pas suivi la chose, je ne sais pas où en est le processus donc je ne porte pas de jugement.
Le bon côté de cette année Covid-19 avec des épreuves supprimées c'est de servir de version test du nouveau système.

Il faut espérer que beaucoup de profs auront le temps d'ici l'année prochaine de s'équiper d'un très bon (voir d'un double) écran : avec la prime d'équipement informatique de 150€, on ne va pas très loin de ce côté, sauf à aller au-delà d'un an de prime.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés