La vie est mal configurée

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, août 15 2018

Absence de hiérarchisation

Je lis souvent que ParcourSup ne demanderait pas de « hiérarchisation des vœux » aux candidats, et que cela expliquerait certaines décisions surprenantes de ce processus (e.g. mettre en géographie un candidat qui voudrait faire des mathématiques). Le sous-entendu est qu’en l’absence de hiérarchisation, le processus affecte les candidats sans tenir compte de leurs préférences.

Or, ParcourSup, même si cela est moins évident que pour APB, suppose une certaine hiérarchisation des vœux par le candidat ! En effet, à chaque étape de ParcourSup où il se voit proposer des offres fermes, le candidat doit désigner parmi ces offres fermes celle qu’il préfère, et démissionner des autres.

La différence avec APB est qu’avec APB on demandait au candidat de classer au préalable tous ses vœux par préférences décroissantes, alors qu’avec ParcourSup on ne l’interroge que sur certaines comparaisons de préférences, celles effectivement nécessaires au fonctionnement du processus. Par comparaison, APB exigeait des informations dont il n’aurait pas besoin (si on est classé trop loin par une formation pour y avoir une place, les comparaisons de préférence entre cette formation et les autres n’ont aucune importance et ne sont pas consultées par l’algorithme).

J’ai de grandes réserves quant à un processus qui exige de multiples étapes de consultation où les candidats doivent impérativement avoir une connexion Internet fiables, et ne donne que tardivement des affectations définitives tant aux formations qu’aux candidats, d’où des difficultés à s’organiser. Il ne faut cependant pas confondre la lenteur de convergence d’un processus avec le calcul d’un résultat arbitraire.

samedi, juin 2 2018

Algorithme vs logiciel

Lors des débats actuels sur ParcourSup, ou à des discussions antérieures au sujet d’« algorithmes » utilisés à différentes fins en rapport avec la société, j’ai vu des questions sur la différence entre « algorithme » et « logiciel ». Je vais ici tenter d’expliquer les différences et similarités entre ses deux concepts.

Prenons un exemple simple : nous avons un tableau de nombres (par exemple 16, 3, 45, 2, 7, 32, 42, 51) et nous voulons les classer par ordre croissant. Ceci est la spécification de notre algorithme : nous spécifions ce que nous désirons obtenir.

Un algorithme possible pour cette tâche de tri est le suivant : on recherche dans le tableau le plus petit nombre, on l’intervertit avec le nombre en première position, puis on recommence pareil sur le reste du tableau privé du premier élément, puis sur le reste du tableau privé du deuxième élément, et ainsi de suite jusqu’à la fin du tableau. (On le connaît dans les cours d’algorithmique sous le nom de tri par sélection.)

Voyons maintenant pourquoi cet algorithme est correct, c’est-à-dire qu’il fait bien ce que nous voulons. Tout d’abord, la sortie est triée : on a bien le plus petit nombre en premier, puis le plus petit parmi les nombres restants, etc. Par ailleurs, cette sortie a bien le même contenu que l’entrée, ce sont bien les mêmes données dans un autre ordre, puisqu’on ne procède que par permutations.

Remarquons que la description de cet algorithme est incomplète : je n’ai pas dit comment je recherche le plus petit nombre dans le tableau. C’est parce que la méthode précise par laquelle je recherche ce plus petit nombre importe peu pour garantir le bon fonctionnement de mon algorithme de tri : ce qui importe c’est qu’on me donne ce nombre, ou plus précisément sa position dans le tableau. J’écris pour que des humains me lisent, je ne vais pas les surcharger de détails !

En revanche, si je programme un logiciel qui procède à un tri, je suis bien obligé de régler tous les détails : comment le tableau est stocké dans l’ordinateur, quelle procédure de recherche du plus petit élément j’utilise. La langue naturelle est imprécise et par ailleurs difficile à faire comprendre par un ordinateur, aussi je décris mon logiciel dans un langage de programmation qui me permet de décrire précisément les étapes de calcul que je désire faire effectuer par l’ordinateur.

Notons qu’un logiciel complet ne se limiterait pas à un unique algorithme : il faut une interface utilisateur (dont l’affichage nécessiterait d’autres algorithmes), des traitements de situations d’erreurs, etc. Tout ceci peut paraître facile et de peu d’intérêt, mais il me semble que, dans la grande majorité des logiciels, la plus grande partie du code du logiciel concerne ces aspects et non des algorithmes délicats.

Revenons à notre algorithme de tri. Étant donné un tableau de nombres passé en entrée, il n’existe qu’une seule sortie permise par la spécification : un tableau avec le même contenu mais trié dans l’ordre. Peu importe la façon dont on a procédé ! Imaginons maintenant qu’il s’agisse d’un tableau de noms d’élèves avec leurs notes, que l’on va trier par notes croissantes. Nous n’avons pas dit comment départager les ex-æquo, aussi, suivant l’algorithme de tri utilisé, nous pourrions avoir plusieurs sorties possibles dans ce cas. Notre spécification est alors incomplète.

Lorsque la spécification est complète (on a complètement défini d’avance le résultat attendu), ni le choix de l’algorithme ni les détails de fonctionnement du logiciel ne nous importent, puisque, quelle que soit la façon dont on s’y prend, il y aura toujours le même résultat au bout. Il nous faut toutefois nuancer cette affirmation.

Le choix de l’algorithme et les détails de fonctionnement du logiciel ont leur importance en ce qui concerne le temps de calcul. Par exemple, l’algorithme de tri que j’ai décrit ci-dessus est très mauvais sous cet aspect : le nombre d’opérations qu’il nécessite croît avec la taille du tableau d’entrée beaucoup plus vite que le nombre d’opérations utilisées par d’autres algorithmes, de sorte que son coût serait prohibitif sur une grosse base de données (et donc une personne compétente ne l’emploiera jamais que sur de petits tableaux).

Par ailleurs, nous pouvons aussi soupçonner qu’il y a des écarts entre l’algorithme « idéal » décrit sur le papier, et ce qui a été effectivement mis en œuvre dans le logiciel, qu’il s’agisse de « bugs » involontaires ou d’altérations censées répondre à certaines contraintes mais pas forcément bien maîtrisées. Il ne suffit donc pas d’avoir la spécification ou l’algorithme idéal pour vérifier qu’un logiciel répond à la demande.

PS On me souffle des analogies : l'algorithme c'est le plan, la théorie; le logiciel, la réalisation, la pratique. La mienne : l'algorithme c'est un thème musical, le logiciel c'est l'interprétation complète d'un morceau comportant plusieurs thèmes orchestrés.

samedi, décembre 2 2017

Quelques remarques sur l'apocalypse logicielle à venir

J’ai eu l’agréable surprise de trouver dans The Atlantic, magazine grand public, un article sur des thèmes proches de ceux de certaines de mes recherches, qui plus est, ce qui est surprenant pour un magazine américain, avec des mentions de technologies informatiques françaises. J’ai plus de réserves, en revanche, sur le titre (The coming software apocalypse) et ce qui était visiblement un titre de travail (Saving the world from code).

Il me semble que la courte histoire de l’informatique est jalonnée d’articles (dans des revues plus spécialisées) expliquant que les façons de programmer les plus répandues ne pourraient plus durer et qu’il faudrait passer à d’autres approches, naturellement celles promues par la personne qui a rédigé l’article ou les personnes interrogées, suivis d’articles disant le contraire. Je ne retrouve hélas pas les références, mais je me souviens d’articles des années 1970 qui disaient le premier qu’il faut passer aux « méthodes formelles » pour raisonner sur les programmes et ainsi éviter les bugs, le second que ces méthodes formelles ne fonctionnent que sur de petits exemples jouets et ne sont pas adaptés à l’immense majorité des développements logiciels. Ceci devrait nous rassurer sur l’apocalypse à venir : d’autres apocalypses étaient déjà annoncées et ont été surmontées !

Passons maintenant au fond. On peut définir la programmation informatique comme l’activité de passer de la spécification de ce qu’un logiciel devrait faire à un programme effectivement exécutable par un ordinateur, comprenant une phase d’analyse (décomposition du problème en sous-problèmes jusqu’à ce que ceux-ci deviennent traitables par une machine) et une phase de programmation proprement dite, c’est-à-dire le passage d’idées abstraites (algorithmes, structures de données, interactions entre composants…) à un programme. (Ces deux phases ne se succèdent pas forcément dans le temps : on peut commencer de développer le logiciel, avoir un fonctionnement partiel, analyser ce qui manque, le programmer, etc.) La difficulté de la programmation, c’est l’éloignement entre la spécification et ce que la machine sait effectivement faire.

Dans sa forme la plus primitive, la programmation consiste à produire une suite d’instructions en langage machine, c’est-à-dire des codes numériques correspondant à des opérations à faire exécuter (par exemple, il existe un code pour demander une addition). C’est extrêmement fastidieux (il faut non seulement coder les instructions mais aussi se souvenir de numéros désignant les endroits où l’on a stocké les données) tout en nécessitant une grande minutie. Un premier progrès a été la possibilité de programmer en langage d’assemblage, c’est-à-dire en écrivant les noms des instructions (par exemple « add a,5 » pour demander d’ajouter 5 au registre a) et en laissant un logiciel, l’assembleur, calculer tout seul les numéros des stockages de données. Toutefois, cela revenait encore à descendre à un grand niveau de détail technique pour exprimer ce que l’on voulait faire.

On a donc proposé des langages de programmation de plus haut niveau que le langage d’assemblage, en premier lieu Fortran, dont le nom est juste la contraction de l’anglais pour « traducteur de formules ». On écrivait des programmes décrivant des procédures de calcul (pour la physique, l’artillerie, etc.) dans un format textuel assez lisible (par exemple, pour dire que a prend la valeur de trois fois b plus un, on écrivait a=3*b+1, il y avait des ordres pour dire de répéter une séquence d’instructions un certain nombre de fois) et un logiciel appelé compilateur traduisait en langage machine. La productivité des programmeurs était considérablement augmentée : on éliminait l’étape fastidieuse de codage vers le langage d’assemblage voire le langage machine, et les bugs que celle-ci pouvait introduire (bien entendu, à supposer que le compilateur lui-même ne contienne pas de bugs). Il me semble même avoir lu que certains disaient que cela éliminerait les bugs ! Hélas, il restait évidemment les bugs de plus haut niveau : ceux dans l’enchaînement des instructions à répéter, les formules etc. (et éventuellement des fautes d’inattention dans l’écriture du Fortran).

D’une façon générale, l’évolution des langages de programmation, depuis l’époque lointaine du premier Fortran, a tendu vers plus d’expressivité : permettre aux programmeurs d’exprimer ce qu’ils veulent voir exécuté sous une forme plus proche de ce qu’ils ont à l’esprit et avec moins de détails propres au fonctionnement de la machine. Cette évolution a porté tant sur la phase d’analyse que sur celle de programmation. Pour la programmation, il s’agit de pouvoir écrire d’une façon simple des directives qui seront transformées par le compilateur en des suites d’instructions complexes. Pour l’analyse, il s’agit de la fourniture de bibliothèques d’algorithmes et de structures de données déjà prêtes, souvent conçues par des programmeurs plus experts que le programmeur qui les utilisent, et qui lui évitent donc de « réinventer la roue ».

La proposition de l’article d’en venir à une programmation basée sur les modèles est donc une évolution naturelle. Les concepteurs de systèmes automatiques de contrôle (par exemple, de pilotage d’avion) raisonnent en termes de traitement du signal : prendre la mesure d’un capteur, éliminer les variations trop rapides (des parasites), détecter quand il dépasse un certain seuil…, opérations qu’ils représentent à l’aide de boîtes reliées par des fils, par analogie avec les vraies connexions électriques, lorsque chacune de ces boîtes était mise en œuvre par un composant électronique. C’est ce que proposent par exemple Scade, cité dans l’article, ou encore Simulink. Cette représentation est plus visuelle et intelligible pour les ingénieurs automaticiens que la mise en œuvre de ce traitement du signal dans un langage tel que C ou Fortran.

Une représentation de haut niveau, proche du concept que veulent mettre en œuvre les programmeurs, peut permettre par ailleurs la mise en œuvre d’aides au développement, — notamment, dans le cas de l’automatique, des simulations de la chaîne de traitement du signal sur des signaux représentatifs du système physique (par exemple, capteurs et actionneurs d’une aile d’avion), afin de se rendre compte si elle a les propriétés attendues (comme dans Simulink). L’exemple du début de l’article relève de la même idée : plutôt que de demander au programmeur de fixer des coefficients numériques par essai et erreur, on va lui fournir une visualisation instantanée qui lui permettra de les régler.

Toutefois, contrairement à ce que laisse supposer l’article, l’utilisation de tels langages graphiques ne supprime pas les bugs. Prenons le cas de la commande de vol électrique d’un avion de ligne. On va la concevoir graphiquement, à l’aide d’outils adaptés aux représentations des automaticiens spécialistes d’avionique et de contrôle aéronautique, puis (je simplifie) la transformer automatiquement en un logiciel que l’on peut effectivement embarquer dans l’avion. Cette transformation automatique sera à la fois plus fiable et moins coûteuse en personnel qu’une programmation manuelle. Rien ne nous dit toutefois que les lois d’automatique et les dispositifs de protection contre les erreurs et pannes décrits dans la représentation graphique suffisent à garantir la véritable spécification, à savoir « l’avion vole correctement » !

Par ailleurs, pour chaque représentation plus proche des préoccupations du développeur, il faut développer des outils ad hoc. On peut avoir un Scade, un Simulink, pour toutes les applications d’automatique, mais on peut difficilement, pour chaque problème spécialisé, développer un outil destiné à mieux attaquer ce problème.

On entend actuellement en France un discours bien rôdé selon lequel nous ne formerions pas assez de développeurs, les formations des universités et écoles publiques étant inadaptées. Le très médiatique docteur en médecine Laurent Alexandre répond, lui, que de toute façon ces tâches de développement seront bientôt assumées par des intelligences artificielles et qu’il conviendrait donc plutôt de mettre l’accent sur les humanités. Je suis sceptique quant à cette affirmation, qui me semble reposer sur l’anticipation de progrès considérables en intelligence artificielle, dont nous n’avons aucune raison de penser qu’ils se produiront à l’échelle de quelques décennies. Par ailleurs, ce n’est pas la première fois que l’on annonce la fin de la programmation au sens courant du terme. Il me semble bien que l’on avait déjà annoncé dans les années 1980 le remplacement de celle-ci par la programmation logique concurrente et des intelligences artificielles, comme dans le projet japonais d’ordinateur de cinquième génération ; mais ce n’est pas ce qui s’est passé…


samedi, novembre 11 2017

L'enseignement très spécialisé est-il un modèle ?

Mon billet sur la publicité dont jouit l’école 42 et les remarques méprisantes que certains commentateurs font à l’égard de l’enseignement universitaire a suscité des réactions. Une intéressante discussion a pris place dans ses commentaires, et j’aimerais rebondir sur certaines réactions, notamment celles de Laurent Bloch et de Loys Bonod.

Dominique Seux remarquait

« Alors, évidemment, si on était caustique, on s’étonnerait que les milliers d’enseignants-chercheurs de nos grandes universités scientifiques n’aient pas eu l’idée de lancer des formations en développement informatique. »

Cette remarque, nous l’avons vu, est absurde, vu que justement il existe de telles formations au sein des universités. Toutefois, il est possible de la modifier pour lui donner du sens :

« Alors, évidemment, si on était caustique, on s’étonnerait que les milliers d’enseignants-chercheurs de nos grandes universités scientifiques n’aient pas eu l’idée de lancer des formations en développement informatique, centrées uniquement sur la programmation, à l’exclusion de toutes les autres questions informatiques, des autres disciplines scientifiques et de toute formation générale. »

En effet, il ne me semble pas qu’il existe dans les universités de formation ne comprenant que de la programmation, ni même, au moins au niveau de la première ou deuxième année après le baccalauréat, que de l’informatique.

Relevons tout d’abord que pareille hyperspécialisation irait à l’encontre de la politique annoncée par l’actuelle ministre de l’enseignement supérieur, qui prône des licences pluridisciplinaires avec spécialisation progressive (ce qui est d’ailleurs déjà le cas en sciences à Grenoble, par exemple).

Par ailleurs, rappelons que l’État réglemente les diplômes à validité nationale (licence, master…), que pour les diplômes universitaires de technologie il y a un programme national, que les universités traversent une mauvaise période financière, avec de grandes difficultés à assurer leurs fonctions de base, et que donc la liberté que les « milliers d’enseignants-chercheurs de nos grandes universités scientifiques » auraient de lancer de nouvelles formations atypiques est très limitée ; ce n’est pas simplement une question d’en avoir l’idée.

Laurent Bloch relève, à juste titre, que les formations d’informatique, au moins au début, sont souvent couplées avec des enseignements de mathématique et/ou de physique, qui peuvent rebuter les étudiants. Il souligne notamment qu’une grande partie des élèves sortent de l’enseignement secondaire en difficulté en mathématiques.

L’enseignement secondaire français, même lorsqu’il y a des filières, comprend un très large enseignement « général », allant du sport à la philosophie. Cet enseignement est obligatoire, quels que soient les goûts et aspirations des élèves, et l’utilité, éventuellement nulle, des disciplines enseignées pour leurs choix de carrière et la vie qu’ils envisagent. Il est courant que certaines de ces disciplines rebutent les élèves, qui ensuite en conçoivent un dégoût marqué et ne veulent plus les retrouver dans l’enseignement supérieur. C’est donc une question qui dépasse largement les mathématiques et la formation des « développeurs ».

Voyons toutefois le cas particulier de l’enseignement de l’informatique. Il est possible de se focaliser sur la programmation (éventuellement en se spécialisant sur tel ou tel langage, telle ou telle technologie Web, etc.) et d’ignorer tout le reste. L’inconvénient d’une telle formation est qu’elle mentionnerait des outils sans pour autant expliquer comment ceux-ci fonctionnent, alors que souvent, en informatique, il faut avoir une certaine connaissance (non détaillée) du fonctionnement interne des outils pour les utiliser efficacement. Par exemple (je m’excuse d’avance pour mes lecteurs non informaticiens si je deviens technique), les bibliothèques standard des langages de programmation modernes proposent des implantations efficaces des notions d’ensemble et de fonction à support fini, par arbres binaires, par tables de hachage, voire par liste ou tableau d’association. Chacun de ces cas correspond à certains usages, mais il est impossible de le savoir si on les utilise comme des « boîtes noires » sans chercher à comprendre leur fonctionnement. La conséquence probable d’une utilisation aveugle et « bricolée » sera un logiciel qui fonctionnera bien sur de petits jeux de données mais dont les performances se dégraderont très vite lorsque les données seront plus grandes. Il en est de même de la conception d’une base de données sans comprendre un peu le fonctionnement interne d’un moteur de bases de données.

En raison de cela, les formations classiques en informatique comprennent non seulement de la programmation, mais aussi de l’algorithmique et d’autres matières. Traditionnellement, l’enseignement de l’algorithmique s’appuie sur des démonstrations mathématiques, notamment des preuves par récurrence. De telles démonstrations passent au-dessus de la tête de bon nombre d’étudiants actuellement en informatique à l’université, et on leur substitue donc souvent des explications « avec les mains » (par exemple, on peut montrer la complexité en n log n du tri fusion par un petit dessin). De même, on peut expliquer les bases de données relationnelles avec des raisonnements ensemblistes, mais il est sans doute possible de limiter l’usage du vocabulaire mathématique. Il y a toutefois des limites qu’on ne peut pas dépasser en matière d’incompréhension mathématique sans entraîner l’incompréhension informatique.

On le voit, la question posée par 42 n’est pas seulement celle de l’école sans enseignant (il existe depuis longtemps des méthodes de langues, de musique etc. destinées à l’apprentissage sans enseignant, et personne ne s’en émeut). Elle est plutôt celle d’un apprentissage très étroit, produisant en quelque sorte des ouvriers du tertiaire avec peu de recul sur leur activité. Or, tandis que certains la couvrent de lauriers dans les médias, d’autres (voire parfois les mêmes) déplorent le « cloisonnement » des disciplines universitaires et des formations ; clairement les universitaires subissent des injonctions contradictoires !

mercredi, novembre 8 2017

Au sujet de l'école 42 et de la publicité dont elle bénéficie

Dominique Seux, chroniqueur aux Échos, a le lundi 6 novembre choisi d’évoquer la fameuse école 42 de Xavier Niel sur l’antenne de France Inter. Il a notamment déclaré :

« Alors, évidemment, si on était caustique, on s’étonnerait que les milliers d’enseignants-chercheurs de nos grandes universités scientifiques n’aient pas eu l’idée de lancer des formations en développement informatique. »

Si on était caustique à l’égard M. Seux, on relèverait que, justement, les enseignants-chercheurs des universités scientifiques ont lancé de telles formations depuis des décennies. Pour prendre des exemples locaux, l’École nationale supérieure d’informatique et de mathématiques appliquées de Grenoble (ENSIMAG) fut fondée en… 1960, le département informatique de l’institut universitaire de technologie (IUT) de Grenoble en 1966 ; les MIAGE (formations aux Méthodes informatiques appliquées à la gestion des entreprises) existent depuis 1969. Bref, rien de nouveau sous le soleil.

Puisque M. Seux évoque les « milliers d’enseignants-chercheurs de nos grandes universités scientifiques », rappelons qu’il y a de l’ordre de 3400 enseignants-chercheurs de statut universitaire en informatique. Je ne sais pas ce que M. Seux s’imagine qu’ils enseignent, peut-être de la théorie de haute volée ou de l’histoire de l’informatique ? Ce n’est pas le cas ! (Ou du moins, c’est très rarement le cas, évidemment à Normale Sup on peut se permettre de faire de la théorie de haute volée…) La grande majorité des enseignements portent sur ce que les étudiants doivent savoir pour occuper, plus tard, des emplois de développeur, administrateur système, etc.

Revenons sur 42. M. Seux indique (j’ignore si ces chiffres sont exacts) que cette école reçoit 50000 candidatures par an et n’en accepte que 900. C’est donc une école extrêmement sélective à l’entrée. Ensuite, si l’on en croit les informations diffusées par les médias, il y a une très forte pression de sélection interne (les étudiants qui n’arrivent pas à se débrouiller sont exclus). En résumé, il s’agit d’un enseignement (ou d’une absence d’enseignement) qui s’adresse à une très petite minorité.

Les universités, quant à elles, ont une mission d’enseignement très générale — on a beaucoup rappelé récemment qu’elles sont censées accepter tout bachelier (il existe également des voies d’accès sans baccalauréat). Il n’est pas clair que les méthodes « sans enseignants » qui conviennent à une infime minorité conviendraient au public de l’enseignement de masse. J’en doute même fortement. Je sais bien qu’il est tentant (on sent bien ce sous-entendu derrière le discours sur les milliers de fonctionnaires dont on se demande bien ce qu’ils font) de penser que l’on pourrait largement se passer de la masse salariale d’enseignants, mais tout ce qui est tentant n’est pas forcément possible.

Prenons un parallèle. Personne ne suggère que l’on supprime l’enseignement des mathématiques et qu’on le remplace par la mise à disposition de manuels et dispositifs informatiques. Pourtant, le grand mathématicien Srinivasa Ramanujan, lorsqu’il était adolescent, a en grande partie appris les mathématiques seul en s’aidant d’un ouvrage de synthèse. Imaginez les économies que l’on pourrait faire en se défaisant des professeurs de mathématiques de lycée !

Si j’évoque cette chronique, c’est parce que celle-ci s’inscrit dans tout un discours médiatique à l’égard de l’enseignement de l’informatique en France, où l’on oppose la modernité de l’école 42 aux pratiques supposées archaïques des universités, et où l’on vante l’enseignement privé. Pour ma part, j’ai un raisonnement simple : enseigner à une infime minorité sélectionnée est facile — je le sais, j’ai enseigné 13 ans à l’École polytechnique (*). La question difficile est celle de l’enseignement de masse, surtout si celui-ci doit déboucher sur des emplois (il me semble d’ailleurs que les diplômés d’informatique des universités n’ont en général aucun problème pour trouver un emploi). Pourquoi faut-il encore et encore rappeler pareilles évidences ?

(*) Et même à l'École polytechnique la grande majorité des enseignements d'informatique, en masse d'étudiants, portent sur les bases du développement de logiciels et non sur des aspects de haute volée.

dimanche, mars 26 2017

Les propos trompeurs d'Hervé Mariton sur les rémunérations des professeurs des universités

Dans l'émission On n'est pas couché du 25 mars 2017, le député Hervé Mariton a expliqué, afin de minimiser les turpitudes de certains parlementaires, que ceux-ci sont moins bien payés que les professeurs des universités, et que la plupart de ces derniers ont des activités complémentaires rémunérées. Rappelons quelques faits.

Un député (hors cas spéciaux : président, vice-présidents, questeurs, mieux rémunérés) gagne environ 7200€ bruts mensuels. Le traitement brut mensuel d'un professeur des universités varie, suivant le grade et l'ancienneté, 3200€ et 6200€, auquel on ajoute environ 1000€ annuel de prime d'enseignement et recherche. Encore faut-il signaler que ce traitement à 6200€ est en toute fin de carrière pour les professeurs de classe exceptionnelle, grade qui, comme son nom l'indique, est exceptionnel.

Peuvent, dans certain cas, s'ajouter à cela une prime d'encadrement doctoral et de recherche (3500€ ou 7000€ par an, 15000€ pour les titulaires de prix Nobel et d'autres hautes distinctions scientifiques) ou d'autres primes, par exemple pour la gestion d'un projet du Conseil européen de la recherche (ERC), ces projets étant attribués au terme d'un processus très compétitif. Peuvent également s'ajouter des heures complémentaires d'enseignement, ou encore des intéressements lorsque l'activité du chercheur a produit des brevets ou licences de logiciels commercialisées.

Bref, pour qu'un professeur des universités atteigne la paye d'un parlementaire de base, sans cumul avec d'autres activités, il faut une configuration rare : un professeur de classe exceptionnelle qui cumule avec des primes difficiles à obtenir (par exemple, Cédric Villani, médaillé Fields, doit effectivement toucher plus de 7000€ par mois). On comprend donc en quoi les affirmations de M. Mariton sont trompeuses, puisqu'elles présentent un cas exceptionnellement favorable comme représentatif de la profession.

Ajoutons que les professeurs des universités sont une minorité parmi les enseignants à l'université. Parmi les personnels permanents, ils ne représentaient en 2010 que 27 % environ, alors qu'il y avait 53 % de maîtres de conférence et 20 % d'enseignants du second degré, ces deux dernières catégories étant moins bien payées. Une grande partie des enseignements sont par ailleurs assurés par des enseignants temporaires, notamment des vacataires, parfois précaires, et en tout cas encore moins bien payés.

M. Mariton prétend également que la plupart des professeurs des universités ont des activités complémentaires. J'ignore si c'est le cas, mais il faut ici rappeler qu'au sens du droit de la fonction publique, il suffit d'une seule heure de travail rémunéré en dehors de l'emploi principal pour qu'on parle d'« activité complémentaire » nécessitant l'autorisation de l'employeur ; donc un professeur d'université qui donne une fois l'an une conférence rémunérée dans une grande école et quelques heures de cours dans une autre, le tout pour quelques centaines d'euros, sera considéré comme ayant deux activités complémentaires. Ceci est bien évidemment sans rapport avec les montants dont on discute en matière de rémunérations des parlementaires.

Pour des rémunérations complémentaires en dizaines de milliers d'euros annuels, je vois surtout les activités de consultant (je ne connais personne dans ce cas) et l'exercice libéral (avocats..) des professeurs des universités en droit et matières proches. Là encore, on ne peut décrire comme un fait majoritaire ce qui ne relève que d'une minorité.

On pourrait mettre sur le compte de l'ignorance pareilles affirmations. M. Mariton, en effet, est membre d'un parti dont les soutiens les plus vulgaires considèrent que les fonctionnaires sont des privilégiés surpayés, il ne ferait que reprendre, sous une forme certes plus polie (il est polytechnicien), le même genre de slogans. Or, son épouse est elle-même chercheuse et à ce titre sait sans doute fort bien à quoi s'en tenir concernant la rémunération des professeurs des universités. Je suis donc bien forcé de considérer la possibilité qu'il ait sciemment menti à des fins démagogiques.

PS Mon propos n'est évidemment pas que les professeurs des universités sont particulièrement à plaindre au regard du reste de la population française, mais seulement de redresser des affirmations trompeuses sur un sujet que je connais. Il me semble très probable que les allégations de fraudes aux aides sociales soient du même acabit — l'assimilation d'un cas minoritaire à la majorité ; mais je ne connais pas le sujet.

PS² On m'évoque les hospitalo-universitaires. C'est un sujet que je connais mal (il me semble qu'ils cumulent une rémunération d'enseignant-chercheur, une de pratique hospitalière, et d'éventuels exercices libéraux, mais je peux me tromper), mais qui ne concerne de toute façon qu'une minorité des professeurs des universités.

vendredi, mars 17 2017

Les missions des enseignants-chercheurs

J'évoquais dans mon billet précédent un récent article du Canard Enchaîné évoquant les conditions auxquelles un professeur des universités est employé comme déontologue de l'Assemblée nationale. Une chose me dérange dans la présentation donnée par le Canard, comme d'ailleurs dans d'autres affaires semblables : le travail du professeur des universités n'est évoqué que sous l'angle des heures de cours à effectuer, et de l'éventuelle dispense totale ou partielle d'assurer celles-ci. Le lecteur non averti pourrait concevoir la fausse idée que le travail d'un professeur des universités se limiterait à donner 192 h de cours par an !

Selon le Code de l'éducation (article L952-3),

« Les fonctions des enseignants-chercheurs s'exercent dans les domaines suivants :

  1. L'enseignement incluant formation initiale et continue, tutorat, orientation, conseil et contrôle des connaissances ;

  2. La recherche ;

  3. La diffusion des connaissances et la liaison avec l'environnement économique, social et culturel ;

  4. La coopération internationale ;

  5. L'administration et la gestion de l'établissement. »

Ainsi, outre l'enseignement proprement dit, un professeur ou maître de conférences des universités a des missions d'administration de l'enseignement, d'administration de la recherche, de vulgarisation, de valorisation (dépôts de brevets, collaborations avec l'industrie…). Quant à l'enseignement, le travail ne se limite pas à 192 h de cours par an (en réalité, 192 h « équivalent TD ») — en effet ce décompte ne tient pas compte du temps de préparation des cours (parfois très lourde s'il s'agit d'aborder un sujet nouveau pour l'enseignant, s'il y a rédaction de supports de cours, etc.), de la rédaction de sujets d'examen et de leur corrections, des oraux, des jurys, de la coordination des enseignants…

Quant à la mission de recherche, elle concerne toutes les disciplines et non seulement les « sciences exactes » (c'est sans doute évident pour certains lecteurs mais pas pour tous). Ses modalités varient considérablement d'un domaine à l'autre, mais on retrouve il me semble partout qu'il s'agit de développer de nouvelles idées ou connaissances, ou de valider ou invalider des idées existantes, dans le respect de certaines règles et notamment de la méthode scientifique, avec in fine la publication de résultats validés par les pairs scientifiques.

De plus, notons que les 70000€ annuels de salaire cités dans l'article du Canard ne concernent pas l'ensemble des professeurs des universités, mais seulement ceux de « classe exceptionnelle » (grade auquel on peut éventuellement accéder en fin de carrière et dont l'accès est plafonné afin de lui conserver son caractère exceptionnel).

Le déontologue de l'Assemblée nationale et les activités privées des professeurs de droit

Le Canard Enchaîné a révélé que le déontologue de l'Assemblée nationale exerçait cette fonction en sus de son activité principale de professeur en droit public sans que son université ait autorisé un cumul de rémunérations. C'est l'occasion pour moi de quelques rappels.

La règle générale est qu'un fonctionnaire « consacre l'intégralité de son activité professionnelle aux tâches qui lui sont confiées » (loi n⁰83-634 du 13 juillet 1983, article 25 septies) et ne peut exercer d'activité secondaire rémunérée qu'avec l'autorisation de son employeur, quelle que soit l'ampleur de cette activité, qu'il s'agisse d'une conférence de deux heures ou d'un travail tout au long de l'année. Le non-respect de cette règle peut entraîner des poursuites disciplinaires, en sus du remboursement à l'employeur public des sommes indûment perçues.

Je connais deux exceptions à cette règle (ibid., V) — il peut en exister d'autres. La première concerne les rémunérations en droits d'auteur pour la production d'œuvres de l'esprit (publication de livres, notamment). La seconde concerne « les membres du personnel enseignant, technique ou scientifique des établissements d'enseignement et les personnes pratiquant des activités à caractère artistique [, qui] peuvent exercer les professions libérales qui découlent de la nature de leurs fonctions. ». Notamment, les professeurs de droit peuvent exercer une activité d'avocat, si ce n'est qu'il ne peuvent plaider au profit d'une personne privée contre l'État. Si ces exercices libéraux ne sont pas soumis à autorisation, il existe un système de déclaration préalable (dont j'ignore le caractère obligatoire).

Il arrive que des fonctionnaires exercent des activités secondaires soumises à autorisation préalable sans cette dernière. Le cas le plus fréquent est qu'en raison de la désorganisation des organismes publics, il ne leur est possible de demander l'autorisation qu'après le début de l'activité — j'ai ainsi demandé, et obtenu, une autorisation pour donner des cours en master deux mois après le début des dits cours car les établissements co-gérant ce master ne s'étaient pas mis d'accord sur qui devait payer les vacations des enseignants, or le formulaire d'autorisation demande le nom de l'établissement payeur. Il paraît — quelle horreur ! — que certains exercent sans autorisation des activités auprès d'employeurs privés en tirant partie du fait que ceux-ci, au contraire de tous les employeurs publics dont j'ai la connaissance, n'exigent pas la production de cette autorisation avant de verser la rémunération.

Il est extrêmement surprenant pour moi qu'un professeur de droit ait pu ignorer pareilles règles, que n'importe quel chercheur en sciences connaît, et qu'un organisme public — l'Assemblée nationale — ait accepté de verser une rémunération à un fonctionnaire sans exiger une autorisation de cumul. Il est vrai que le Parlement semble le royaume des exceptions aux lois qu'il vote et au fonctionnement normal des conditions d'emploi et d'indemnisation...

On s'est ému, à juste titre, de la trop grande proximité de certains chercheurs en biologie ou médecine avec des groupes de pression et des industriels ayant avantage à ce que la dangerosité, l'innocuité ou l'efficacité de tel ou tel produit ne soit établie. Encore ces chercheurs ne peuvent-ils exercer d'activité rémunérée au profit de ces industriels qu'avec une autorisation — et, à ma connaissance, au moins au CNRS, la délivrance de celle-ci donne lieu à contrôle d'éventuels conflits d'intérêts.

Je m'étonne, dans ces circonstances, du blanc-seing accordé à des activités libérales dans des domaines tels que le droit ou l'économie. Doit-on admettre, par exemple, qu'un professeur de droit consulté par la puissance publique au sujet de la législation et de la réglementation d'un domaine soit en même temps consultant ou avocat pour les industriels et autres intérêts privés de ce domaine ?

samedi, mars 11 2017

Les solutions miracles dans l'enseignement de l'informatique

Depuis quelque temps, les médias vantent la « pédagogie innovante » de certains établissements atypiques d'enseignement de l'informatique. En résumé, on laisse les étudiants se débrouiller et interagir, et ils deviennent des programmeurs, sans avoir à suivre de cours, sans nécessiter d'enseignants. Le sous-entendu est évident : les méthodes classiques d'apprentissage universitaire (cours, travaux dirigés, travaux pratiques) sont inadaptées, les enseignants universitaires dépassés, les apprentissages peu réalistes par rapport aux attentes industrielles…

J'ai une certaine expérience de l'enseignement de la programmation. Je discute avec mes collègues. Voici comment cela se passe, souvent, dans une vraie séance de travaux pratiques (TP) :

Un étudiant se plaint que « ça ne fonctionne pas » et que l'ordinateur s'est trompé (alors qu'évidemment l'erreur est dans ce qu'il a écrit).

Un étudiant dit qu'il n'y a pas de documentation, ou se plaint que celle-ci est en anglais (à peu près toutes les documentations techniques de programmation sont en anglais).

Un étudiant asiatique tape du code sans jamais essayer de l'exécuter car il ne sait pas comment faire et n'ose pas demander.

Un étudiant copie du code sans le comprendre depuis un autre programme.

Un étudiant se plaint que « ça ne marche pas », on lui dit de lire les messages d'erreur et notamment le premier, il ne le fait pas et continue de regarder son écran en disant « ça ne marche pas ! ».

D'une façon générale, un TP de programmation débutants, c'est pour l'enseignant entendre un flux interrompu de « monsieur ! » (et pour l'enseignante, « madame ! ») et courir d'un étudiant à l'autre, chacun coinçant sur son problème.

Autant dire que quand on a cette expérience, on éprouve un certain scepticisme quant à la portée d'une pédagogie fondée sur le travail autonome, sans enseignants. Non que cela soit impossible — on connaît bon nombre de gens ayant appris la programmation par eux-mêmes, c'est d'ailleurs mon cas — mais manifestement cela ne convient pas à de très nombreux étudiants, sans doute la majorité.

Une telle pédagogie convient à des étudiants autonomes, débrouillards, ayant un niveau minimal de lecture en anglais. Que faire des autres ? Et même pour des personnes débrouillardes, il y a le risque de perdre du temps sur des blocages qui se régleraient vite en recourant à un enseignant.

Voici pour la programmation. On voit d'autres évoquer ce type de pédagogie pour enseigner « l'algorithmique » à des étudiants sans prérequis. Or, au-delà d'un certain point en algorithmique (notamment quand on veut justifier le bon fonctionnement de certains algorithmes, ou encore borner le nombre d'opérations qu'ils effectuent), on est obligé de faire appel aux mathématiques. Ceci nécessite une certaine aisance : notations, concepts, comment on rédige une démonstration…

Il est vrai que de nombreux métiers de l'informatique n'exigent guère de connaissances d'algorithmique — une bonne partie de la programmation d'applications consiste à assembler des composants rédigés par d'autres et qui contiennent les éventuelles parties proprement algorithmiques. Quoique… à vouloir assembler des composants sans comprendre comment ils fonctionnent et notamment dans quelles circonstances ils sont efficaces ou inefficaces, on obtient parfois des systèmes qui ne supportent pas la montée en charge ! Bref, former à la programmation sans algorithmique, ou à l'algorithmique sans mathématiques, me semble former à des métiers d'exécutants qui auront besoin de personnels à la formation plus complète pour concevoir les parties plus délicates et dimensionner les systèmes.

Passons aux clichés sur l'enseignement universitaire. On voit des gens parler comme si à l'université l'informatique se faisait en cours magistraux, sans manipuler d'ordinateur ! Je ne connais aucun établissement français où cela soit le cas, quoiqu'en raison des restrictions budgétaires les TP se font maintenant en très grands groupes et que dans certains endroits on doit mettre 2 voire 3 étudiants par machine…

On entend également qu'à l'université on apprendrait des technologies dépassées. Ici, il convient de rappeler quelques faits relatifs aux choix pédagogiques en informatique « pratique » et notamment aux choix de langages de programmation utilisés en enseignement.

Certaines technologies sont pérennes. Par exemple, on enseigne les langages de programmation C et C++ parce que, bien que ceux-ci évoluent, ils existent depuis les années 1970 et 1980 respectivement et vont probablement continuer à être largement utilisés pendant des décennies. En revanche, certaines technologies sont lancées en grande pompe par un industriel, ne « prennent » pas et sont abandonnées (que l'on songe à Microsoft Silverlight, lancé en 2007, coulé en 2012). Dans les cursus, on va tenter d'enseigner des technologies pérennes et non la dernière mode du moment.

Par ailleurs, une partie du public étudiant n'a pas une vision très claire sur ce qui est ou non une technologie d'actualité. Je me rappelle cet étudiant qui me reprochait d'enseigner Java, selon lui un vieux truc, alors que « tout le monde fait du C++ » — Java était le langage à la mode, plus récent que C++. « Tout le monde utilise X » peut vouloir dire « l'entreprise où travaille mon frère utilise X ».

Derrière ces reproches faits à l'université, derrière la promotion sans réflexion ni recul de méthodes d'enseignement censément innovantes, qu'il y a-t-il ? Le dénigrement de l'enseignement public sert bien entendu la communication de l'enseignement privé (et ce n'est pas parce qu'une célèbre école privée est gratuite que d'autres ne sont pas à but lucratif). Il sert également les projets de ceux qui veulent démanteler le public au motif qu'il serait inefficace et dépassé.

Le fantasme de l'école sans enseignants, et pourtant « plus efficace », rejoint celle des MOOCs, ces cours en ligne déjà quelque peu passés de mode. L'accroissement de la productivité depuis la Révolution industrielle est passée par l'automatisation : là où il fallait de nombreux paysans, un seul suffit pour conduire une machine ; on a remplacé caissiers et guichetiers par des automates ; un seul chauffeur, bientôt aucun chauffeur, conduit un camion qui transporte bien plus que les charrettes d'antan. Pour l'enseignement, on en reste à payer une personne pour s'occuper d'un certain nombre d'étudiants. Il est donc tentant de chercher à automatiser cela.

Là encore, il y a beaucoup de naïveté. Que l'on puisse remplacer un cours magistral en amphithéâtre de 500 places par une vidéo, pourquoi pas — on ne peut pas dire qu'il y a beaucoup de rapport entre l'enseignant et son public dans une telle configuration, bien qu'il soit tout de même possible d'observer le regard des étudiants et d'en déduire s'ils suivent ou pas. Mais comment remplacer des travaux dirigés ou pratiques ? Là où il suffit de poser une question à l'enseignant et obtenir une réponse rapide, il faut lancer une question en ligne… Et si l'université doit payer des enseignants pour répondre à ces questions (avec tous les risques d'incompréhension inhérents à la communication distante), quelle économie est vraiment réalisée ? Enfin, quelle discipline de fer est supposée de la part des étudiants !

Il est possible que des solutions d'étude en grande autonomie soient efficaces en formation initiale, pour des publics dégoûtés par le fonctionnement scolaire habituel, ou en formation continue, pour des personnes déjà expérimentées et qui veulent avoir la liberté de leur emploi du temps. Il me semble en revanche parfaitement irréaliste de supposer qu'elles forment une solution miracle pour l'enseignement de masse.

jeudi, février 2 2017

Sur le poste de professeur de Benoît Hamon

Louis Aliot a récemment évoqué le fait que Benoît Hamon avait été nommé professeur d'université avec une simple licence d'histoire. Diverses personnes, visiblement sympathisantes du Front National ou du moins de la droite, ont embrayé. Je voudrais ici rectifier certaines erreurs factuelles et confusions dans leur raisonnement.

Il y a dans les universités françaises et établissements assimilés différentes catégories de professeurs enseignants : les enseignants-chercheurs, les enseignants-chercheurs associés, les attachés temporaires d'enseignement et de recherche, les enseignants du secondaire, les vacataires, et les doctorants avec mission d'enseignement (je passe sur la situation particulière des hospitalo-universitaires). Vu des étudiants, il s'agit tous de « professeurs », mais il existe de grandes différences de statut entre eux ! (Pour les professionnels du domaine, un « professeur » c'est normalement seulement un « professeur des universités »… sinon on dit « enseignant »!)

Les enseignants-chercheurs se composent des maîtres de conférences et des professeurs des universités. Il s'agit de fonctionnaires recrutés (sauf exception) après un doctorat (et une habilitation à diriger les recherches, pour les professeurs), par un concours en deux étapes, l'une de filtre national, l'autre locale, où l'on examine la qualité scientifique des résultats du candidat, son projet de recherche, ses compétences en enseignement… (Les cas des disciplines médicales, juridiques et économiques est différent, mais ne compliquons pas.) Il est tout à fait exact, du moins au vu des informations que j'ai sur lui, que Benoît Hamon ne vérifie pas du tout ces conditions.

Les enseignants-chercheurs associés se composent des maîtres de conférences associés et des professeurs des universités associés. Il s'agit de personnels contractuels, à temps complet ou partiel, recrutés principalement pour leur expérience professionnelle : par exemple, on pourra recruter un ingénieur travaillant dans l'industrie pour enseigner les domaines sur lesquels il a compétence. Même si dans certains cas les enseignants-chercheurs associés ont un doctorat, ce n'est pas une condition nécessaire. C'est sur ce type de poste qu'a été recruté Benoît Hamon, apparemment pour enseigner sur les organisations internationales, sans doute au motif que ses mandats politiques lui ont donné cette compétence — ignorant tout de ce en quoi consiste l'enseignement de science politique je m'abstiendrai d'en juger.

Il ne faut pas confondre ce type de poste avec ceux des vacataires : ceux-ci, qui doivent exercer une activité principale distincte, sont payés à l'heure de cours ou de travaux dirigés. Leur recrutement est considérablement moins solennel !

Pour conclure, je voudrais rappeler que la procédure de recrutement des enseignants-chercheurs fonctionnaires est extrêmement codifiée. Il faut être ignorant ou de mauvaise foi pour prétendre que l'on puisse recruter professeur des universités quelqu'un n'ayant pas du tout les diplômes : une telle personne n'est tout simplement pas admise à concourir ! De telles allégations, de la part de responsables politiques, sont d'autant plus insultantes pour l'ensemble du corps universitaire qu'elles le mettent à l'égal de ces lieux de pouvoirs où l'on distribue des emplois fictifs ou de pure complaisance.

Rappelons également que les professeurs des universités et professeurs associés sont nommés, à la fin de la longue procédure de sélection, par décret du Président de la République : imagine-t-on Nicolas Sarkozy nommant Benoît Hamon par pure complaisance ?

PS: J'ai un peu simplifié, tant les statuts et procédures de recrutement sont divers, avec des exceptions.

mercredi, décembre 14 2016

De l'introduction des concepts mathématiques

On m'a récemment demandé ce que j'entendais par la création de concepts mathématiques comme généralisations d'intuitions ou de besoins. Je vais tenter ici un exposé grand public, absolument pas détaillé côté mathématiques, et sans non plus tenter de reconstituer le déroulement historique de l'histoire des idées mathématiques.

Les entiers

Prenons les nombres 0, 1, 2…, que l'on appelle les entiers naturels. Ceux-ci, du moins les plus petits d'entre eux, nous sont familiers et intuitifs car ils permettent de compter les objets. Nous avons de même une notion d'addition assez naturelle : quand nous avons 3 carottes et par ailleurs 5 carottes, nous avons au total 3+5 carottes.

La notion de multiplication vient elle aussi assez naturellement. Nous avons une tablette de chocolat de 8 rangées de 5 carrés, nous avons 8×5 carrés. Nous pourrions aussi bien compter en 5 colonnes de 8 carrés, nous aurions 5×8 carrés. Cela suggère que l'ordre (8×5 ou 5×8) n'importe pas, que l'on obtient le même résultat ; en termes savants, on dit que la multiplication est commutative. Comme cela fonctionne pour n'importe quelles valeurs et non simplement 5 et 8, on dit que pour tout x et y, x×y=y×x.

J'entends parfois des gens dire qu'ils comprenaient les mathématiques jusqu'au moment où il y a eu des x, mais pour le moment il ne faut pas s'alarmer : j'utilise ces notations parce qu'elles sont beaucoup plus commodes et lisibles que des phrases du genre « si je prends le premier et que je le place à la place du deuxième et que je prends le deuxième et que je le place à la place du premier, j'obtiens un nombre identique », comme on utilisait dans les textes savants avant l'introduction des notations par lettres.

Si nous avons une rangée de 8 carrés de chocolat, nous avons 8 carrés. Quand on multiplie par 1, on ne change pas le nombre… autrement dit, pour tout x, x×1 = x.

Si nous avons 4 tonnes d'acier, nous en avons 4×1000 kilogrammes=4000 ; si nous en avons par ailleurs 5 tonnes, nous en avons 5×1000=5000 kilogrammes ; donc au total nous en avons 9000 kilogrammes. Nous aurions pu aussi bien nous dire que si nous avons 4 tonnes et 5 tonnes, nous en avons 4+5=9 tonnes, donc si nous convertissons en kilogrammes, nous en avons 9×1000=9000 ; nous retombons sur le même nombre (ce qui est assez rassurant).

En mathématiques, les parenthèses servent à grouper ce qui va ensemble, afin d'éviter les ambiguïtés de lecture. Pour dire que l'on va additionner 4 et 5, et ensuite multiplier le tout par 1000, on écrit (4+5)×1000. Là, on a ainsi (4+5)×1000=(4×1000)+(5×1000).

Là encore, il n'y a rien de particulier au nombre 1000. Si au lieu de tonnes et de kilogrammes nous prenions des heures et des minutes, nous aurions le constat banal que si nous passons 4 heures, soit 4×60=240 minutes, puis 5 heures, soit 5×60=300 minutes, nous passons au total 9 heures soit 540 minutes, et que (4+5)×60=(4×60)+(5×60).

On peut généraliser à tout nombre : (4+5)×z=4×z+5×z. Mais là encore, pourquoi 4 et 5 en particulier ? Pour tous entiers naturels x, y, z, (x+yz=(x×z)+(y×z). En termes savants, on dit que la multiplication distribue sur l'addition.

Bref, il y a quelques propriétés de l'addition et de la multiplication qui nous paraissent « naturelles », représentant l'intuition que nous avons de ces opérations. Ce qui est intéressant, c'est qu'une fois que nous avons décidé d'avoir ces propriétés, tout le reste s'ensuit. On a parfois l'impression que les mathématiques sont des suites d'opérations sans sens, plus ou moins arbitraires, à apprendre par cœur. Mais là le seul arbitraire que l'on ait fixé, c'est d'avoir deux opérations, addition et multiplication, satisfaisant les propriétés que l'on désire d'elles pour coller à notre intuition.

Il est possible que cette confusion provienne de la confusion conceptuelle entre les nombres et leur représentation décimale, c'est-à-dire leur écriture usuelle : ainsi, le nombre onze est écrit 11, le nombre cent est écrit 100, etc. On parle de représentation décimale, ou en base dix, car quand l'addition sur les unités atteint dix, on repart à zéro et on propage une retenue. Il y a là un certain arbitraire — pourquoi dix et pas cinq, treize ou vingt? Ce trait qui relève de la culture — certaines civilisations ont d'ailleurs compté par vingt, et ce trait subsiste encore dans certaines langues européennes — que l'on songe à quatre-vingts, 4×20, en français de France. Le décompte de soixante secondes dans une minute, de soixante secondes dans une heure, est un reste culturel de système sexagésimal (base soixante). Le choix de dix provient probablement du fait que nous avons dix doigts (utile pour compter sur les doigts)...

Il peut sembler évident qu'une heure et soixante minutes soient deux écritures pour la même durée, de même que XX et 20 sont deux écritures du même nombre vingt, l'une en chiffre romains, l'autre en chiffres dit « arabes » et en base dix, ou encore que vingt et twenty décrivent le même nombre en français et en anglais. Pourtant, on décrit souvent comme quelque chose d'extraordinaire, voire d'effrayant, que les ordinateurs comptent en binaire, c'est-à-dire en base deux, et on prétend parfois en tirer des conséquences philosophiques ! Il n'y a pourtant là rien de fondamental : de même que le choix de dix est probablement lié à une contingence biologique, à savoir nos dix doigts, le choix de deux chiffres binaires (0 et 1) est motivé par une contingence technique, à savoir que distinguer deux niveaux électriques ou lumineux (ouvert / fermé, etc.) est bien plus aisé que d'en distinguer plus.

Une fois qu'on a fixé une représentation, on peut décrire des méthodes permettant de calculer effectivement dessus — autrement dit, des algorithmes. Là encore, il est important de distinguer la définition du résultat d'une opération de la méthode pour obtenir celui-ci. L'écriture décimale du résultat de l'addition ou de la multiplication de deux nombres écrits en décimal est définie indépendamment du procédé effectif de calcul pour l'obtenir — en mathématique, il est d'ailleurs possible de définirdes objets alors qu'il n'existe aucun procédé pour les calculer !

L'algorithme appris à l'école primaire (enfin, de mon temps ; j'ignore ce qu'il en est actuellement) pour calculer la multiplication de deux entiers n'est qu'un algorithme parmi d'autres qui remplit cette fonction, certes particulièrement simple. Il en existe d'autres, dont certains ont notamment comme avantage de nécessiter moins d'opérations quand on opère sur de grands nombres, comme cela est courant en cryptographie (la science du chiffrement des données). La conception d'algorithmes, leur analyse (combien d'opérations et de cases mémoire nécessitent-ils, etc.) est un champ scientifique nommé algorithmique, lui-même divisé suivant les objets auxquels s'appliquent les algorithmes — bien entendu, on ne se limite pas à additionner et multiplier des entiers ! On peut remplir des rayonnages entiers de bibliothèque universitaire avec des ouvrages sur ces sujets...

Les « fractions »

Mais revenons-en à nos nombres. La conversion d'une heure en minutes est particulièrement aisée : il suffit de multiplier par un nombre entier (le nombre d'heures dans une minutes). Prenons maintenant un problème plus compliqué : le système monétaire britannique comprenait jadis une unité de compte traditionnelle, la guinée, valant 21 shillings, en sus de l'unité officielle, la livre, valant 20 shillings. Comment convertir en livres une somme en guinées ? Il faut multiplier par 21 puis diviser par 20... On va donc parler de multiplier par vingt-et-un vingtièmes, 21/20, autrement dit par une fraction (quand on est savant, on parle d'un rationnel).

Nous avons l'habitude de parler de moitiés, de tiers, de quarts, de cinquièmes, de sixièmes... ne serait-ce que pour couper des gâteaux. Cela ne défrise pas grand monde que de dire que si on ajoute deux cinquièmes de gâteau, deux autres cinquièmes et un cinquième, alors on obtient cinq cinquièmes soit un gâteau entier. Autrement dit, 2×(1/5)+2×(1/5)+1×(1/5)=(2+2+1)×(1/5). On retrouve la règle de distributivité déjà évoquée sur les entiers.

De fait, quand nous passons aux « fractions », nous nous attendons à certaines propriétés identiques à celles des entiers : commutativité, distributivité, etc. En revanche, certaines propriétés disparaissent : par exemple, il n'y a pas d'entier strictement plus grand que deux et strictement plus petit que trois (si on compte en gâteaux entiers, on peut en avoir deux, on peut en avoir trois, mais pas de cas intermédiaire), mais avec des fractions, c'est possible : on peut avoir deux gâteaux et demi.

Là encore, une fois que nous avons posé que nous voulons une notion qui généralise les entiers naturels, qui conserve certaines de leur propriétés, qui correspond à notre intuition du partage du gâteau, alors il n'y a plus d'arbitraire possible. Les règles « mécaniques » de calcul apprises à l'école (mettre les fractions au même dénominateur, etc.) sont juste là pour s'assurer qu'on tombe sur le bon résultat. Mais le critère de ce qui est ou non un bon résultat n'a d'arbitraire que le choix que l'on a fait d'avoir une généralisation des entiers qui vérifie quelques propriétés assez intuitives et naturelles. Autrement dit, c'est ainsi parce que ça ne peut pas être autrement.

Ainsi, nous sommes passés d'une notion élémentaire (les entiers naturels) à une notion plus générale (les rationnels) parce que nous avons éprouvé la nécessité d'étendre le concept utilisé pour capturer une notion intuitive (les parts de gâteau). Voyons maintenant un autre exemple.

Les réels

Si je prends un carré de côté 1m, sa surface est de 1m². Si je prends 4 carrés identiques et que je les dispose pour former un carré de 2m de côté, j'obtiens un carré de 4m² ; bref la surface du carré c'est la longueur du côté multipliée par elle-même, autrement dit élevée au carré. En repliant les coins, on se rend compte que la surface du grand carré correspond à deux fois la surface d'un carré dont le côté est la diagonale du carré de 1m de côté ; donc ce carré fait 2 m² de surface. On se dit donc que si l'on élève au carré la longueur de cette diagonale, on doit obtenir 2.

Nous sommes alors devant une difficulté déjà connue des grecs antiques : il n'existe pas de rationnel (de « fraction ») qui, élevé au carré, donne 2. On peut d'ailleurs le démontrer — on suppose que c'est une fraction, et, par un raisonnement simple mais trop technique pour ce texte, on about it à une contradiction. Ceci nous suggère qu'en nous limitant aux rationnels, nous ne pouvons pas parler de certaines quantités géométriques intéressantes, de même qu'en nous limitant aux entiers nous ne pouvions pas bien parler de choses aussi naturelles que des parts de gâteaux.

Il a donc fallu concevoir des extensions de la notion de rationnel, qui préservent la plupart des propriétés que nous avions sur les rationnels (il y a une addition, une multiplication qui distribue sur l'addition, etc.) mais permettent de parler, par exemple, de la longueur des diagonales de rectangles. Citons parmi celles-ci les nombres réels (ou simplement, les réels) et les réels algébriques. Leur description nous entraînerait trop loin. Dans leur vision « grand public », on les connaît parfois sous le nom de « nombres à virgule », mais cette terminologie est problématique car elle met l'accent sur une représentation particulière (la décimale) et induit des confusions — par exemple, les gens déduisent, incorrectement, du fait qu'un nombre ait un nombre infini de chiffres après la virgule que l'on ne puisse pas calculer dessus — sans parler d'un certain relent de « numérologie ».

On présente parfois les mathématiques comme un amoncellement de concepts abscons, de méthodes de calcul à appliquer bêtement, plus ou moins arbitraires. En réalité, ces concepts ont été polis au cours du temps pour répondre à des besoins souvent assez naturels (parler de parts de gâteaux, de diagonales de carrés...). Les règles de calcul « à appliquer bêtement » sont des méthodes dont on peut démontrer qu'elles donnent le bon résultat, et ce qui est « bon » ou non est la conséquence logique de choix assez « naturels ». Il est bien entendu possible de définir des concepts mathématiques différents ; mais il faut assumer les choix que l'on fait de façon cohérente, et cela n'est pas facile. Voyons maintenant quelques exemples de choix « différents ».

Des anneaux quotients !

Nous avons vu les rationnels comme extension des entiers naturels partageant avec eux un certain nombre de propriétés. Il est possible de construire d'autres objets mathématiques ressemblant par certains côtés aux entiers, mais présentant des différences notables. Prenons, par exemple, les chiffres de 0 à 9 (notés en gras pour éviter des confusions), sur lesquels on définit l'addition et la multiplication en prenant celles des entiers mais en ne gardant que le chiffre des unités. Ainsi, on va poser que 9×8=2 parce que 9×8=72, donc de chiffre des unités 2. On peut montrer que l'addition et la multiplication ainsi définies vérifient certaines des lois usuelles sur les entiers (l'addition est commutative, la multiplication distribue sur l'addition...) mais pas certaines autres : par exemple, il est impossible de définir une notion de « plus grand que » / « plus petit que » qui vérifie que si on ajoute 1 alors on obtient forcément un nombre plus grand. Quand on est savant, on dit qu'on a défini l'« anneau quotient ℤ/10ℤ » et ce concept se généralise d'ailleurs à d'autres valeurs que 10...

C'est à l'aide de ce type de concepts que l'on peut expliquer simplement le pourquoi des méthodes (jadis enseignées) de la « preuve par trois » et de la « preuve par neuf ».

Les géométries non euclidiennes

Venons-en maintenant à d'autres concepts souvent mentionnés dans des ouvrages grand public : les géométries non euclidiennes.

La géométrie euclidienne à deux ou trois dimensions, c'est celle que l'on apprend à l'école et qui décrit fort bien la réalité qui nous entoure. Il s'agit, en quelque sorte, de la formalisation de notions intuitives comme les distances, les parallèles, les angles droits... Cette géométrie se généralise d'ailleurs fort bien à un nombre supérieur de dimensions, même s'il faut alors se méfier de nos intuitions parfois spécifiques du cas particulier de la dimension trois.

Cette géométrie parle d'objets tels que les points, les droites, etc. sur lesquels on peut démontrer des propriétés (ou, suivant comment on présente le sujet, postuler ces propriétés et montrer que l'on retombe sur une définition équivalente). On peut là encore se poser la question de ce que l'on pourrait obtenir si on laissait tomber certaines propriétés usuelles... De même que l'on a obtenu des notions « bizarres » d'addition et de multiplication, on peut obtenir des notions « bizarres » de point, de segment et de droite !

Par exemple, on peut interpréter la notion de point comme le point sur une sphère, la notion de segment comme le tracé de plus court chemin entre deux points, la notion de droite comme un « grand cercle » de la sphère (un cercle formé en coupant la sphère par un plan passant par son centre). On continue d'avoir certaines des propriétés usuelles, mais on n'a plus certaines autres. Ce genre de généralisations s'appellent géométries riemaniennes. D'autres choix conduisent à des géométries hyperboliques.

L'existence de géométries non euclidiennes paraît souvent objet de mystère, voire de mystification. Il me semble qu'il n'y a là rien de plus banal que la généralisation d'un concept familier quitte à abandonner certaines de ses propriétés, comme nous l'avons fait plus haut pour ℤ/10ℤ.

Remarques polémiques

Le côté « arbitraire » et « méthodes de calcul stupides qu'on applique sans comprendre » des mathématiques est le produit de la façon dont on les enseigne. J'ignore dans quelle mesure, d'ailleurs, il est possible de faire autrement dans le cadre d'un enseignement de masse obligatoire. L'aspect « calcul bête » peut en effet rassurer certains élèves et fournit des examens au résultat assez prévisible, ce qui est essentiel dans un système scolaire encore très « taille unique » et où il importe qu'une proportion importante des élèves ait le baccalauréat.

Par ailleurs, j'ai remarqué à plusieurs reprises que des gens ayant le baccalauréat, voire un niveau d'études élevé (thèse) ont des difficultés à mettre en pratique des concepts pourtant « de base », comme l'application de la « règle de trois » pour estimer des ordres de grandeur, par exemple de budgets ou de consommations énergétiques. Or, il s'agit là de problèmes extrêmement importants pour la vie citoyenne : quand on a du mal à se rendre compte si une dépense se compte en millions ou en milliards (j'ai vu le cas récemment), on a des difficultés à avoir un avis éclairé sur le budget de l'État ou de la Sécurité sociale...

Enfin, de nombreuses personnes sont dégoûtées des mathématiques telles qu'enseignées, et souvent font vœu ensuite de ne plus avoir rien à faire avec cette discipline. Cela est certes vrai de nombreuses autres matières scolaires (littérature, éducation physique et sportive, philosophie...), mais cela ne dispense pas d'une réflexion sur la façon dont les concepts et les méthodes sont introduits ainsi que le caractère obligatoire des enseignements dispensés.

jeudi, juin 23 2016

Au sujet du doctorat par VAE et de ses éventuelles dérives

J'en avais parlé il y a un an, alors qu'il était en préparation : l'arrêté réformant les études doctorales est sorti. Il suscite une certaine polémique, notamment en ce qu'il indique explicitement la possibilité de parvenir au doctorat par « validation des acquis de l'expérience » (VAE). Cette possibilité était il est vrai ouverte auparavant (par exemple au CNAM), mais fort peu connue — les statistiques officielles dénombrent 17 doctorats décernés par an par ce moyen.

Les peurs à ce sujet sont confuses. On parle, apparemment, de décerner des doctorats de complaisance à des élèves ou anciens élèves de grandes écoles (lesquelles ?), voire de monnayer des diplômes pour en faire des « vaches à lait ». Mon collègue Mix la Malice a déjà critiqué, fort vigoureusement d'ailleurs, certaines de ces allégations et notamment ce qu'elles supposent comme croyances chez ceux qui les émettent. Je voudrais toutefois ici évoquer un angle qu'il n'a guère abordé.

Lorsqu'un doctorat est décerné en VAE, le candidat doit, comme pour tout doctorat, soumettre ses travaux à deux rapporteurs expérimentés, qui les liront en détail, et soutient ensuite devant un jury composé en majorité d'universitaires habilités à diriger les recherches [les détails sont plus compliqués, mais peu importe]. Ces rapporteurs et ce jury sont au préalable validés par l'école doctorale compétente.

Lorsque des universitaires laissent entendre qu'il y aurait la possibilité de décerner des doctorats de complaisance, ils sous-entendent donc que certains de leurs collègues (a priori, de leur discipline ou de disciplines proches, vu qu'on ne parle valablement que de ce que l'on connaît) seraient capables de se prêter à pareille combinaison.

Pareille perspective ne peut qu'effrayer, d'autant qu'il n'y a guère plus de garde-fous pour un doctorat en formation initiale que pour un doctorat en VAE. Rien n'empêche, en effet, les rapporteurs d'un doctorat « classique », d'accepter une thèse très insuffisante, fût-elle un tissu d'âneries de quinze pages, et le jury de valider le doctorat. Si l'école doctorale, les rapporteurs et le jury sont complices, qu'est-ce qui pourrait l'empêcher ? Voyons toutefois quelques arguments possibles.

Dans une thèse « classique », il faut que l'étudiant s'inscrive en doctorat plusieurs années (en théorie trois). Il n'y a cependant pas de durée minimale, et je ne vois pas ce qui interdirait qu'un candidat s'inscrive et soutienne dans la foulée, tant que les rapporteurs et le jury valident ses travaux (c'est d'ailleurs comme cela que cela se passe, du moins dans certaines disciplines, pour les habilitations à diriger les recherches).

Les thèses « classiques » de sciences « exactes » sont normalement préparées au sein d'un laboratoire accrédité (ou, dans certains cas, d'une entreprise et d'un laboratoire), et le doctorant reçoit un salaire pour son travail de recherche. Il y a donc deux garde-fous supplémentaires : il faut qu'un laboratoire accepte le candidat (ce qui impose notamment de lui attribuer des moyens matériels), et qu'il ait obtenu un financement ; or les financements sont souvent fort concurrentiels (ceux distribués par les écoles doctorales sont souvent réservés aux meilleurs dossiers). Or, ceux qui critiquent dans les médias et les réseaux sociaux le doctorat en VAE sont presque tous de disciplines où l'on admet qu'un doctorat se prépare pendant le temps libre laissé par une activité principale à temps plein.

Si, dans certaines disciplines et certaines écoles doctorales, la VAE pourrait donner lieu à ce que l'on décerne des doctorats de complaisance à des professionnels qui ne les mériteraient pas, je ne vois pas ce qui empêcherait actuellement ces professionnels s'inscrivent en parallèle avec leur emploi, de présenter un mémoire insuffisant et de soutenir. Là encore, tant que l'école doctorale, les rapporteurs et le jury sont complices, tout est possible.

Le seul garde-fou qui me paraît subsister est qu'une thèse, sauf exception due au secret industriel, est à disposition du public dans la bibliothèque de l'université de soutenance ou par prêt entre bibliothèques. Une personne qui veut vérifier si un doctorat « classique » a ou non été délivré pour un mémoire insuffisant peut donc (au prix d'efforts) consulter celui-ci. Toutefois, on peut objecter qu'un doctorat délivré en validation d'une expérience professionnelle de recherche devrait l'être au vu de publications validées par les pairs dans des revues scientifiques sérieuses et indépendantes du directeur de thèse, et que l'absence de celles-ci est cause de suspicion légitime.

Les reproches faits aux doctorats en validation des acquis de l'expérience me semblent bien déborder de leur cible et être, peut-être, le signe de graves dérives. En effet, comme je pense l'avoir démontré, le doctorat par la voie classique n'offre guère plus de sécurité face à une école doctorale, des rapporteurs et un jury qui auraient décidé de décerner des doctorats de complaisance. Si on juge cette possibilité crédible pour la VAE, c'est probablement qu'on l'a déjà constatée pour des doctorats classiques — mais qu'on n'ose pas forcément en parler ouvertement.

L'enseignement supérieur est souvent l'univers des non-dits. Il semblerait pourtant préférable que, si des dérives existent déjà dans certaines disciplines ou certaines écoles doctorales, on en parle franchement, plutôt que de prétendre que c'est une évolution du cadre réglementaire qui les permettrait dans le futur.

dimanche, octobre 25 2015

Apitoiement sur son propre sort, négation de celui des autres

L'humain a, je trouve, une étrange tendance à considérer que son expérience personnelle est un cas général et que les problèmes des autres relèvent de l'anecdote ou de l'exagération. J'en ai eu un parfait exemple récemment, lors d'une discussion sur l'enseignement secondaire.

Lire la suite...

mercredi, octobre 7 2015

Petit bilan d'enseignement

J'ai commencé à enseigner l'informatique en 1999 ; il me semble assez légitime et nécessaire d'en faire un petit bilan.

Pendant dix ans, j'ai quasi exclusivement encadré des travaux dirigés et surtout pratiques de programmation et d'algorithmique, notamment de programmation pour débutants. On peut caricaturer cela par « rechercher où l'étudiant a oublié de mettre un point-virgule » ou, pour les cours plus avancés, déboguer le code des étudiants. J'ai trouvé cela intéressant non pas pour les aspects scientifiques ou techniques (assez répétitifs) mais pour l'observation des étudiants.

Je suis loin d'être le seul enseignant à déplorer que les étudiants ne lisent pas les messages d'erreur et n'indentent pas leurs programmes, quoi que disent les enseignants, qui pourtant ont l'expérience pour eux. Je serais curieux de savoir s'il y a une théorie psychologique qui expliquerait cela.

La principale difficulté du débogage pour les étudiants est la difficulté qu'il y a pour eux à s'imaginer que ce qu'ils ont écrit ne fait pas ce qu'ils voudraient. On entend parfois des étudiants invoquer un possible bug du compilateur, alors qu'évidemment pareil problème est bien plus improbable qu'une erreur de débutant. Bref, le débutant n'admet pas qu'il puisse se tromper. J'ignore également les théories psychologiques sur ce sujet, qui doit dépasser largement du cadre de l'informatique.

Le débutant (ou d'ailleurs le non débutant) a également du mal à ne pas confondre le nom, ou la fonction, qu'il donne à un objet, et son action effective. Par exemple. il va rechercher un bug dans une procédure A qui appelle une procédure minimum sans rechercher si le problème vient de la procédure minimum, en étant persuadé que parce qu'elle s'appelle minimum elle calcule effectivement le minimum. Là encore, il doit y avoir une théorie sur la confusion entre ce qu'un objet est censé faire et ce qu'il fait effectivement — confusion qui doit d'ailleurs régner dans d'autres champs.

Un correspondant me rappelle un phénomène que j'ai également constaté : l'étudiant a fait un programme presque correct, et au lieu de chercher à le corriger méthodiquement, procède à des changements hasardeux voire aléatoires qui le détruisent progressivement. Là encore, j'aimerais une explication psychologique. (Il est possible que cela soit lié à l'idée qu'« il faut bien faire quelque chose », même si l'on ne comprend pas ce que l'on fait.)

Je n'ai, hélas pour mon expérience personnelle, jamais enseigné les réseaux, les bases de données ou le système, les autres enseignements de masse typiques. J'ai enseigné des modules de spécialité proches de mes activités de recherche, mais je n'ai guère d'observation à en faire si ce n'est l'apathie d'une bonne partie des étudiants lorsqu'il s'agit d'un module obligatoire, que sans doute ils jugent éloigné de leurs besoins, peut-être d'ailleurs à raison.

L'enseignement que j'ai eu le plus de plaisir à assurer a sans doute été les « petites classes » du cours de logique, calculabilité et complexité. Tout d'abord, j'ai dû apprendre des mathématiques dont je ne me rappelais plus ou que je n'avais jamais apprises. J'ai appris début juillet que j'allais enseigner dans ce cours fin août, j'ai donc lu divers ouvrages sur la logique, les théorèmes d'incomplétude de Gödel, et la théorie de la complexité.

Disons-le franchement, ce cours était « culturel » et non destiné à donner des compétences industriellement applicables. Le seul point qui me semble avoir une utilité pratique est que reconnaître des problèmes indécidables (resp. de haute complexité) permet d'éviter de rechercher pour eux des algorithmes de décision (resp. des algorithmes de décision de faible complexité) : ce n'est donc pas un savoir-faire d'implication directe, plutôt une compréhension des enjeux. Quant à la logique mathématique, aux théorèmes de complétude, de compacité et d'incomplétude, je ne lui connais pas d'application pratique à part si l'on travaille sur des outils informatiques très spécifiques.

À l'exception de la partie complexité, un tel cours aurait d'ailleurs pu avoir lieu dans un département de mathématiques pures voire de philosophie.

Pour les étudiants, ce cours me semble intéressant en ce qu'il expose des limitations mathématiques fortes à ce qu'il est possible de faire. C'est je pense la première fois qu'ils ont affaire à des limites qui ne sont ni sociales, ni physiques (« on ne peut aller au-delà de la vitesse de la lumière »), ni dues à l'ignorance (« on n'en sait rien dans l'état de la science »). Par ailleurs, il permet de demystifier certains concepts galvaudés, notamment les théorèmes d'indécidabilité de Gödel. Enfin, il permet de toucher les limites de la science, puisqu'on touche directement la fameuse conjecture P≠NP.

Je suis content que nous soyons arrivés à attirer un quart d'une promotion sur un enseignement optionnel aussi décalé par rapport aux modes et à l'utilitarisme.

Originalité ?

Début du paquet de copies : « ah » « tiens donc » « je n'aurais pas pensé qu'on puisse comprendre les choses comme cela »

120 copies après : « Je ne crois plus à l'originalité, même dans l'erreur. »

Bis repetita

« Lisez le message d'erreur.

- Mais bla et re-bla

- Lisez le message d'erreur.

- Mais ? Mais si bla...

- Je vous assure, lisez le message d'erreur. »

« Mais c'est mal fichu !

- Qu'y puis-je ! »

lundi, octobre 5 2015

La philosophie et la compétence citoyenne

Le DAEU (diplôme d'accès aux études universitaires, qui permet l'accès à l'université sans le baccalauréat) comporte diverses options. L'option « philosophie » a été supprimée dans certains centres d'examen. Une pétition dénonce cette suppression.

Je trouve moi-même curieux et inquiétant que l'on supprime au DAEU A (littéraire) une discipline présente au baccalauréat littéraire. C'est toutefois du texte de la pétition que j'aimerais discuter ici. On trouve notamment les phrases :

La philosophie est l'une des disciplines qui assurent, au BAC français, sa spécificité en reconnaissant une valeur essentielle à ce qui permet un jugement éclairé. (...) Comme si nos futurs managers devaient se contenter d'être des exécutants au service d'une idéologie qui tait son nom. Parce qu'il y a, là derrière, manifestement un choix de société. Parce qu'on ne sait que trop la voie dans laquelle se sont engagées les sociétés qui ont méprisé l'exercice philosophique. (...) Parce que, enfin, la philosophie dans notre système éducatif est aussi un des symboles de notre République et que c'est s'en prendre aussi à la République que s'en prendre à celle-là.

Je serais curieux de savoir quels pays imposent ou non une épreuve obligatoire de philosophie pour le diplôme de fin d'études du lycée (ou de ce qui tient lieu de lycée), l'état dans lequel sont ces sociétés, lesquelles sont des démocraties libérales ou pas, etc. Cela permettrait en quelque sorte une évaluation empirique de ces affirmations. Bien entendu, il serait difficile de juger de si les citoyens de ces pays sont des « exécutants au service d'une idéologie qui tait son nom », mais on peut sans doute considérer des évaluations de la liberté de la presse, des autres libertés publiques et de la corruption.

Je constate également que ce texte semble revendiquer le développement d'une sorte de « compétence citoyenne » à l'aide d'un enseignement disciplinaire. C'est intéressant, cela me rappelle cette vieille revendication de la formation de l'esprit logique par le latin.

Le vent qui me souffle entre les oreilles

1998: David présente en exposé dans le cours de Giuseppe Longo la preuve de la normalisation forte du Système F par le témoins de réducibilité (je n'ai pas poussé l'abnégation jusqu'à faire celle du Calcul des Constructions).

2009: David prépare un cours de langages de programmation et se rend compte qu'il a tout oublié de ladite preuve de normalisation forte. David révise.

2015: David entend parler d'un truc chelou sur Fω et essaye, sans succès, de se rappeler pourquoi F est fortement normalisant.

Il faut se rendre à l'évidence, David ferait mieux d'essayer d'arrêter de comprendre grand chose à la théorie des types. Ou du moins de tenter de s'en rappeler plus que fugacement.

dimanche, mai 24 2015

La maîtrise de l'outil numérique serait innée chez les jeunes

François-Xavier Bellamy, adjoint au maire de Versailles, agrégé de philosophie, a déclaré, au sujet de l'enseignement de l'informatique à l'école :

« Les enfants n’ont jamais eu besoin de l’école pour maîtriser l’outil numérique. Ils ont besoin du savoir qui construira leur discernement. »

Il existe au sujet de l'enseignement de l'informatique un grand flou, suivant ce que les gens mettent sous ce terme.

Pour certains, il s'agit d'enseigner des usages de certaines technologies : naguère bureautique (traitement de texte, tableur), puis « Internet » (navigation, envoi et réception de courriers électroniques, consignes moralisantes sur la copie illicite et sur la sécurité en ligne). De fait, de nombreux jeunes, notamment ceux qui disposent chez eux du matériel nécessaire, sont plus au fait de certaines manipulations de tablettes ou d'ordinateur Windows que certains enseignants ; c'est peut-être ce à quoi faisait allusion F.-X. Bellamy. Je ne suis pas aussi optimiste sur ce point que lui ; voir plus loin.

Pour d'autres, il s'agit d'enseigner des techniques permettant de réaliser des applications informatiques telles que des applications Web, des logiciels pour tablette, etc., dans le but de former des développeurs industriels. Certains voient donc dans un apprentissage précoce la clef de la compétitivité française. Personnellement, je suis très sceptique envers ce genre de propositions, pour de multiples raisons. Tout d'abord, j'estime que ce n'est pas le travail de l'école, généraliste, que d'enseigner tôt des technologies spécifiques dans le but d'occuper tel ou tel emploi : il sera toujours temps de les aborder plus tard. Ensuite, les langages et systèmes de développement intéressants industriellement sont rarement pédagogiques (je pense en particulier à Java).

Enfin, pour d'autres, il s'agit d'enseigner les bases conceptuelles avec lesquelles appréhender et comprendre le monde numérique qui les entoure ; bases dont il est d'ailleurs manifeste que tant d'adultes ne les ont pas, tant la pensée magique semble fréquente en matière d'informatique. Cet enseignement peut certes passer par de la programmation (personne de sérieux ne parle « d'enseigner le code » ou « d'enseigner le codage »), mais l'objectif n'est pas de former des programmeurs. Je voudrais insister là dessus.

J'ai enseigné de 1999 à 2009 la programmation, dans divers établissements (Université Paris-Dauphine, ENSTA, École polytechnique). Dans tous les cas, il s'agissait d'un enseignement obligatoire dans le cadre d'une formation pluridisciplinaire qui ne visait pas spécifiquement à former des développeurs.

Premier constat : contrairement à ce que F.-X. Bellamy semble croire, tout le monde n'arrive pas au baccalauréat , voire au baccalauréat+2, en maîtrisant les manipulations des outils informatiques. J'ai eu affaire à des étudiants qui ne savaient pas taper sur un clavier. Certes, ils arrivaient d'Afrique, et certes, c'était quand F.-X. Bellamy était encore au lycée ou en khâgne, aussi peut-on peut-être me reprocher d'évoquer une époque révolue. Je pense toutefois qu'il faut être prudent quand au niveau des compétences qui, n'étant pas enseignées à l'école, le sont éventuellement au sein des familles, ne serait-ce que parce que leur équipement varie considérablement : tous les adolescents n'ont pas un ordinateur dans leur chambre.

Deuxième constat : contrairement à ce que l'on peut croire, la principale difficulté dans l'apprentissage de la programmation n'est pas dans la « technique » (syntaxe plus ou moins heureuse du langage de programmation, environnement de développement etc.). Certes, celle-ci constitue une difficulté et peut rebuter, mais les principales difficultés sont ailleurs :

  1. L'incapacité à diviser un problème en sous-problèmes, de taille et de complexité maîtrisables, que l'on peut successivement résoudre et dont on peut tester séparément les solutions ; l'incapacité à fixer des étapes intermédiaires qui, certes, ne résolvent pas entièrement la question originale, mais constituent des jalons utiles.

  2. L'incapacité à rechercher la cause d'une dysfonctionnement (« bug ») : incapacité à décomposer le problème en éléments vérifiables individuellement, refus de lire les messages d'erreur, refus de lire la documentation, alors que devant un dysfonctionnement il faut au contraire posément analyser ce qui se passe et bien distinguer ce dont on est sûr de ce que l'on espère (très difficile).

  3. L'incapacité à se remettre en cause : il est très dur pour les étudiants d'admettre que la création de leur esprit puisse être incorrecte, de sorte qu'ils attribuent souvent les éventuels dysfonctionnements au système de développement (pourtant conçu par des professionnels et abondamment testé). La programmation est un exercice d'humilité.

On le voit, il s'agit plus de faiblesses cognitives que de problèmes spécifiquement informatiques. Il est possible que l'apprentissage de la programmation aide à les surmonter.

En d'autres termes, je vois la programmation comme un apprentissage d'une certaine forme de rigueur : il faut toujours être prêt à se remettre en cause et à admettre ses erreurs, il ne faut faire confiance à rien que l'on n'ait prouvé ou testé, il faut savoir analyser et décomposer un problème.

Lorsque l'on progresse dans le domaine, une autre difficulté est de savoir distinguer des problèmes apparemment proches mais en fait fort différents, ou de constater que des problèmes apparemment sans rapport sont en fait proches, voire identiques.

On le voit, on est loin de faire joujou avec une tablette, et plus proche du discernement cher à F.-X. Bellamy.


jeudi, mai 14 2015

La rédaction en place limitée

Maïeul Rouquette, doctorant en histoire du christianisme antique, s'est étonné que j'aide des doctorants, voire des post-doctorants, à rédiger des articles scientifiques : ceux-ci ne savent-ils pas rédiger depuis leurs études de licence ?

Lire la suite...

- page 1 de 7