Je donne à Télécom ParisBientôtSaclayTech, dans le cadre d'un master de sécurité, un cours de remise à niveau en algèbre pour la cryptographie : il s'agit essentiellement de présenter les ℤ/mℤ (théorème chinois, fonction indicatrice d'Euler, éléments primitifs), la notion de groupe cyclique, et, à la fin, la notion de corps fini (et la manière de les voir comme des quotients des polynômes), voire la définition du symbole de Legendre (je fais ça en TD). Pour ceux que ça intéresse, les notes de mon cours ainsi que les feuilles d'exercices et les sujets de contrôle sont disponibles ici (je crois que c'est en accès public, en tout cas j'ai demandé que ce le soit ; sinon, il y a une copie de mes notes de cours ici).
Il s'agit de notions assez agréables à enseigner, et même si le niveau des étudiants est extrêmement hétérogène, c'est plutôt plaisant. Les objectifs sont modestes (d'ailleurs, si c'était moi qui faisais les programmes, quelques unes de ces choses seraient enseignées au lycée, au moins dans les terminales scientifiques) et l'ambiance est agréable.
Il y a pourtant une erreur récurrente que je vois chaque année dans une proportion alarmante des copies et que je m'arrache les cheveux à me demander comment l'éviter.
Je définis la notion d'ordre d'un élément a dans un
groupe G comme le plus petit n tel
que an=1 : j'insiste en disant ça sur
le fait qu'avoir an=1 ne signifie pas
que l'ordre de a soit n mais seulement
qu'il divise n
(ou que n est multiple de l'ordre de a). Quand
j'énonce le « petit » théorème de Fermat, selon lequel si p
est premier et a non multiple de p
alors ap−1≡1 (mod p) (ou
bien le théorème d'Euler selon lequel si a est premier
avec m
alors aφ(m)≡1
(mod m)), j'insiste sur le fait que cette borne n'est pas
forcément optimale, il se peut très bien qu'il existe un
exposant k plus petit que celui prédit par le théorème pour
lequel on ait ak≡1, autrement dit,
que l'ordre multiplicatif de a modulo p n'est
pas forcément p−1 (ou φ(m) modulo
un m quelconque), et d'ailleurs qu'on va
appeler primitifs
les éléments pour lesquels il l'est (et que
ces éléments existent pour p premier et pour
certains m composés, et qu'ils sont un objet d'étude
important). Dans les exercices je souligne de nombreuses fois que
quand on cherche à calculer l'ordre multiplicatif d'un
élément a (non nul) modulo p, le petit théorème
de Fermat donne l'assurance qu'à la puissance p−1 on
retombera sur 1 mais qu'il est possible qu'on retombe sur 1 plus tôt,
exemples à l'appui ; je leur fais notamment calculer les ordres
additifs et multiplicatifs de tous les éléments modulo m
pour différentes valeurs de m. Je donne même des exemples
de situations où tous les éléments sont d'ordre plus petit
que ce que prédit le théorème d'Euler, c'est-à-dire qu'il n'existe pas
d'éléments primitifs. Je souligne qu'il ne faut pas faire cette
erreur que de penser qu'avoir un multiple de l'ordre signifie qu'on
ait l'ordre exact (mais que comme l'ordre exact doit
diviser p−1 ou φ(m), on peut souvent
le trouver). Bref, je tourne ça de toutes les façons que je peux
imaginer, dans l'espoir que ça finisse par rentrer.
Et ça ne rentre pas. La première question du contrôle que je leur
ai donné avant-hier était : quel est l'ordre multiplicatif de 2
modulo 11, et il y a vraiment trop d'étudiants qui me répondent : on a
210≡1 (mod 11) d'après le théorème de Lagrange / Euler /
Fermat [ce qui est correct], donc
2 est d'ordre multiplicatif 10 [c'est
le donc
qui est faux[#] :
on peut seulement en conclure qu'il divise 10] ; voire, qui
enfoncent le clou en disant : on peut donc dire que 2 est primitif.
(M'enfin ! Si tous les éléments étaient primitifs, on n'introduirait
pas cette notion !)
[#] C'est uniquement
le donc
qui est faux : la conclusion est juste, 2 est bien
d'ordre multiplicatif 10 modulo 11 (mais on ne peut pas le déduire du
théorème de Lagrange / Euler / Fermat — il faut au minimum calculer
22 et 25 modulo 11).
Je sais que les enseignants aiment se plaindre que leurs élèves sont nuls, mais là, je ne peux pas dire ça : si quelqu'un écrit des énormités dans une copie, on peut se dire qu'il est idiot et en rire, mais vu que cette erreur revient chaque année chez au moins un tiers de mes étudiants, la faute est forcément la mienne, pas la leur. (J'en ai déjà parlé, mais cette année je croyais avoir mis le paquet, avoir passé un temps démesuré à répétér, rabâcher, mettre en garde, avertir, sermonner : le fait d'avoir an=1 ne signifie pas que l'ordre de a soit n mais seulement qu'il divise n.)
Alors, comment est-ce que je dois faire ? Est-ce que quelqu'un a une idée ? Il paraît que la pédagogie est une science : qu'on m'explique, sur cet exemple extrêmement précis, ce que je dois faire (je ne dis pas que je suis satisfait à 100% de ce qu'ils retiennent du reste du cours, mais ce point précis est vraiment celui qui me pose le plus de problème, c'est l'erreur nº1 que je voudrais leur faire éviter).
(Si c'était un point anecdotique du cours, je pourrais l'ignorer ; mais c'est vraiment ce qui sous-tend la notion de logarithme discret que de bien comprendre le concept d'ordre d'un élément dans un groupe et d'élément primitif.)