Archive for Recherche

Circuits : du transistor à l’ordi !

après 33 ans à dessiner des circuits électroniques, logiques, combinatoires, séquentiels, […] en tant qu’étudiant, puis enseignant (sans que cela soit ma spécialité) il était temps que je me rende compte, par moi-même, si la théorie fonctionnait ou pas et dessiner un ordinateur (même simple) du début à la fin : du transistor à l’ordi.

et oui, en sortant de ma formation, j’avais bien vu et dessiné un additionneur, de la mémoire, l’architecture de von Neumann ; en tant qu’enseignant, j’avais approfondis mes connaissances avec les circuits à flots de données, la micro-programmation, la machine de Manchester, etc. Mais, toujours, c’étaient des éléments pris un à un, indépendamment les uns des autres, sur le papier, ou au tableau, lors d’un TD d’1h30 ; au mieux, simulés à gros grains, à la main ou par un didacticiel. C’était dans un contexte didactique et théorique et non pas dans un projet global ou avec une vision concrète, complète, pratique.

et pourtant, depuis longtemps je connais des outils pour dessiner ou décrire un ordinateur complet à partir de portes logiques et le simuler (i.e. : le langage lustre, le logiciel de dessin Logisim), mais peut-être parce que la complexité d’une réalisation complète d’un ordinateur à partir de rien (ou presque) ou l’existence de logiciels simulant bien une machine complète (i.e. : Procesim) l’empêchait, je n’avais rien entrepris pour construire ou au moins dessiner, de A à Z, un ordi. Même quand l’utilisation de Procesim devint hasardeuse, une vidéo suppléait pour montrer le fonctionnement de l’ensemble. Cela suffisait. Et sur le web, on trouvait d’autres projets similaires ; avec Logisim, parfois. Alors pourquoi le faire, moi aussi. Peut-être parce que l’organisation que l’on trouve chez les collègues ou le niveau de détail n’est pas celui que je souhaitais et qu’ici ou là l’architecture était plus orientée chemin de données que machine de von Neumann (PC/PO).

mais progressivement, avec youtube, puis avec caseine (un Moodle spécialisé pour les mathématiques, les mathématiques appliquées et l’informatique), puis finalement avec la pandémie, j’ai de plus en plus utilisé Logisim pour faire et simuler des circuits, des circuits de plus en plus gros, des circuits combinatoires, des circuits à mémoire, des automates, des circuits à flots de données. Au départ, pour faire des vidéos, sur les sujets que je ne pouvais aborder en cours, comme compléments, ou pour mettre à disposition des corrections d’examen, en fin de semestre. Plus rarement, des vidéos de parties de cours centrales, mais parfois, cependant, pour diffuser la connaissance, vulgariser les savoirs. Ensuite, à marche forcée, au moment de la pandémie, pour mettre en place des exercices à faire à distance. Cela aurait pu être des exercices classiques avec juste une zone de dépôt sur caseine pour un pdf ou un circuit, quitte à en faire ensuite une correction manuelle. Mais l’expérience de caseine dans la mise en place d’exercices auto-évalués (VPL) et un peu (beaucoup) de travail de mise au point ont permis l’intégration de Logisim à la plateforme et un début de travail de mise en place d’exercices associés à des circuits.

après 1 an et demi de pandémie, à la rentrée 2022, le cours de circuit sur caseine comportait donc des exercices sur de petits circuits logiques (combinatoires), puis quelques exercices classiques pour passer de ces petits circuits à de plus gros circuits (combinatoires) : l’additionneur, l’unité arithmétique et logique, les multiplexeurs et enfin deux séries d’exercices de circuits à mémoire, des exercices sur des automates, des exercices sur des circuits à flots de données, avec évaluation automatique. En comparaison du cours donné par moi en amphi ou pratiqué en TD, il manquait des séquences sur la réalisation des portes logiques (à partir des transistors) et des mémoires (bascule RS, etc.) et la fin du cours où automates et parties opératives (vue comme circuits à flot de données) sont assemblés avec de la mémoire (RAM) pour faire une architecture de von Neumann avec comme point final la mise en place d’un langage machine élémentaire interprété par l’automate : la réalisation d’un ordinateur.

pour mettre le tout sur caseine, c’était encore pas mal de travail, et je n’étais pas sûr de pouvoir le mener à bien ; en fait il fallait que je réalise un ordinateur (même simple) du début à la fin, à partir des transistors jusqu’au processeur. Malgré mes 32 années à en dessiner les parties, je n’avais jamais fait l’exercice complet, de bout en bout ! De plus, le projet n’était pas seulement de dessiner un ordinateur complet et fonctionnel mais de le faire dans l’optique d’une mise en place d’exercices (vpl) pour que des étudiants puissent le faire, eux-aussi. Là encore, des questions restaient à résoudre, comment découper certaines étapes qui semblaient trop complexes et trop vastes pour en faire des exercices réalisables. À vrai dire, en amphi ou en td, certaines de ces étapes sont faites ou même seulement parfois exposées par l’enseignant uniquement, apportées toutes faites comme abouties et à observer seulement, à comprendre tout au plus et non pas à refaire ou à découvrir comme dans un exercice. Parmi ces étapes qui ne correspondaient pas usuellement à des exercices, quelles productions demander à l’étudiant, comment évaluer cette production, comment la faire entrer dans le cadre usuel des évaluations avec caseine (de type test fonctionnel boite-noire).

essentiellement, cependant, tout était là, automates et circuits à flots de données, pour la partie haute, transistors pour la partie basse ; avec un peu de méthode et de réflexion, faire un ordinateur complet était possible. Et effectivement, en moins de 15 jours, le dessin d’une architecture PC-PO, puis d’une architecture de von Neumann a pris place, et dans les derniers jours un langage machine simple a été défini et interprété par un circuit. Pour finir, la semaine suivante, les parties manquantes, les portes logiques et les mémoires ont été mises en place. Et en plus cela marchait. Des programmes simples en langage machine pouvaient être définis et exécutés. Le tout sous forme d’exercices, cernant à chaque étape l’avancée fonctionnelle réalisée et proposant un exercice associé. Par exemple, pour la mise en place d’une architecture PC-PO en supposant que le travail sur les automates avait déjà eu lieu et qu’une PO générique était issue du travail sur les circuits à flots de données, l’exercice de réalisation d’un circuit de calcul du pgcd était proposé en demandant que sa réalisation soit effectuée en utilisant une PO générique (fournie) et en définissant et dessinant la PC adaptée. À travers le test du pgcd, c’est cette association et la PC qui est testée et validée.

ainsi, j’ai réalisé, moi-même, pour la première fois un ordinateur complet (turing-complet) et fonctionnel sous forme d’exercices qui permettront, je l’espère, aux étudiants de finir leur scolarité en pouvant dire qu’ils sont capable de faire, eux-mêmes aussi, un ordinateur complet qui tourne ; en tout cas, ils auront fait toutes les étapes, du transistor jusqu’à l’ordinateur :

  • les portes logiques à partir des transistors (*)
  • les premiers petits circuits combinatoires (*, *)
  • quelques circuits combinatoires classiques plus gros (*=>*, *=>*)
  • un peu de mémoire (*)
  • un automate simple (*)
  • un circuit à flot de données préalable à une PO (*)
  • un circuit composé d’une PC+PO (*)
  • un circuit composé d’une PC+PO et d’une mémoire (*)
  • un automate de contrôle pour interpréter un petit langage machine (*)
  • la programmation d’un algorithme avec ce petit langage machine (*)

Merci, vraiment merci, c’était un réel plaisir d’y arriver, merci donc à tous ceux qui m’ont permis de faire mon premier ordi, pour n’en citer que quelques uns/es : Michel Duprat, Jean-Michel Muller ; Paul Amblard, Philippe Waille, Fabienne Lagnier, Philippe Sicard ; Juan Carlos Rodríguez-del-Pino, Carl Burch ; Nadia Brauner, Nicolas Catusse, Guillaume Huard, Astor Bizard. C’est à dire, dans l’ordre, mes premiers enseignants, puis mes premiers collègues, ensuite ceux qui ont diffusé les outils que j’ai utilisés sur caseine (vpl et logisim) et enfin ceux de caseine.

 

 

mais, à propos, dites-moi, vous, avez-vous déjà eu l’occasion de faire ce grand voyage : du transistor à l’ordi ?

À la suite, je me suis demandé s’il pouvait y avoir d’autres projets de cette ampleur qui puisse structurer une scolarité : après avoir fait un ordinateur, faire un OS (avec la partie réseau), puis un compilateur et un SGBD ? (même réduits). Car à la sortie de ma scolarité, je n’ai pas non plus fait d’OS, ni un compilateur fonctionnel (il y avait des morceaux, mais pas tout) et encore moins un SGBD. Est-ce trop ambitieux, n’est-ce pas inutile, mais n’est-ce très tentant en même temps ? Pour avoir le sentiment que l’on maîtrise sa discipline. D’avoir vu de l’intérieur l’autre côté du monde numérique. Car ensuite, après sa scolarité, que risque-t-on de connaitre et explorer, l’univers applicatif surtout ? un peu au dessus de ces bases, à cette distance de la « vraie » grande image complète, sans pouvoir trop y revenir.

Jupyter, ça va dans le bon sens

Jupyter, ça avance

  • sur le lien avec Moodle (https://www.youtube.com/watch?v=bOHGLIzH0RQ) c’est expérimental, mais il déjà (avec vpl) on peut lier lier une activité Moodle avec un NoteBook Jupyter (et même plus dans l’exemple, puisqu’on utilise vpl, cela va jusqu’à faire du test automatique) : chaque étudiant a sa version du notebook, peut la modifier, et l’enseignant voit l’ensemble des notebook)
  • sur le partage (https://colab.research.google.com/drive/1Se6bBqekDmAwFb6_sAV-oKpvrZg6VHXO?usp=sharing) : c’est Google qui est aux commandes (certes), mais cela permet de mettre en lecture un notebook actif (l’exécution et la modification sont possibles) et, selon le paramétrage, la sauvegarde est aussi possible (c’est alors collaboratif) ou chacun peut faire une copie du notebook chez lui pour sauvegarder (c’est déjà du partage d’un document actif).

Ce n’est pas encore parfait, mais le jour où tout cela sera au point est visiblement proche.

Validation d’exercices sur les circuits

En 2017-2018, j’avais le plaisir de découvrir

  • jupyter
  • moodle/vpl

depuis, les promesses se sont confirmées : ce sont des outils de grande qualité pour l’enseignement

 

En particulier,

[:fr]EDBA et PLC[:]

[:fr]J’ai cherché pendant un temps une corrélation entre le niveau d’Xp atteint sur EDBA et la réussite à l’examen de PLC. Sans succès. Et pourtant j’avais de nombreuses données : l’XP, mais aussi le détail des tests, le temps passé, etc. Je regardais le premier test, ou le nombre de test, ou le meilleur test, … mais les résultats obtenus n’étaient pas convaincant. J’avais abandonné.

Et puis, un jour, j’ai voulu tracé une courbe Evolution de l’Xp en fonction du temps. En fait, la variable de temps était plutot le nombre de tests effectués (le temps et l’activité sont liés, mais l’Xp ne dépend pas du temps mais du nombre de tests effectués). Le résultat n’était pas concluant, quand je voulais comparé l’évolution d’un étudiant aux résultats finaux obtenus par d’autres étudiants, les affichages ne coincidaient pas. Pour tenter de ramener ces tracés, les uns sur les autres, j’ai essayer de tracer Xp/nb test en fonction du nb de test au lieu de Xp en fonction du nb de test. L’affichage était plus concluant et même, il semblait y avoir une corrélation entre les résultats finaux des étudiants. Je suis donc revenu à la recherche d’une corrélation entre le niveau d’Xp atteint sur EDBA et la réussite à l’examen de PLC.

En prenant tous les étudiants que j’avais sous la main, le premier résultat Note à l’exam de PLC en fonction de Xp/nb test fut le diagramme de la partie haute de l’image ci-dessous :

Le résultat n’était pas complètement concluant, mais en regardant les points éloignés, il s’est avéré que le temps d’utilisation d’EDBA ou le nombre de tests effectués n’étaient pas significatif. J’ai donc choisi d’enlever les 10% de données les moins significatives (pour une raison ou une autre). J’ai fait le netoyage en ne regardant pas le graphique mais les données. Après nétoyage, le graphique avait moins de points, mais la corrélation était plus nette (bas de l’image ci-dessus).

C’est même assez étonnant de trouver une corrélation aussi forte pour des données -coté examen- qui sont en général, assez imprécises (la notation d’examen donne souvent des notes pouvant varier …). Il y a peut-être un peu de chance. Et l’effectif n’est plus très gros (8 étudiants). Il faudrait voir avec un peu plus de monde.

Si cela se confirmait, ce serait interressant. Dans tous les cas, cela propose une interprétation de la notation en examen, elle est moins corrélées au niveau d’expertise atteint ou au temps passé sur EDBA (en tout cas je n’ai pas observé grand chose de ce coté là), mais à l’efficacité de l’étudiant, c’est à dire la capacité de l’étudiant à trouver maximiser les résultats aux tests en minimisant le nombre de tests effectués.[:]

Evolutions pédagogiquesCursus changes

D’une année à l’autre, les cours changent. Ce ne sont pas forcément de gros changements. Les étudiants (redoublants ou pas) ne le voient pas forcément. Mais dans les détails, il y a souvent des tentatives, modifications, etc.

Par exemple, pour le cours de PLC, que j’effectue en L3-Miage, à Grenoble, depuis une demi-douzaine d’années, il y a eu :

  • Variations sur le contenu :
    • Versions avec +/- de gel et pseudo-parallélisme
    • Versions avec +/- d’arbres infinis rationnels et d’algorithmique des graphes
    • Versions avec -/+ de langages formels
    • Versions avec différentes présentations/explicitations/formalisations de la récursivité
  • Variations sur le cours/td :
    • Versions avec -/+ de démo dans le cours (dont première séance, en particulier)
    • Versions avec -/+ d’algorithmique
    • Versions avec -/+ d’exercices en cours
  • Variations sur les documents :
    • Versions avec -/+ de documents
    • Versions avec vidéos
    • Versions avec documents sur web perso/Moodle
  • Variations sur ProLog :
    • Versions avec arbre/listes de listes
    • Versions avec +/- d’arithmétique
    • Versions avec swi/edba
  • Variations sur EDBA
    • Versions avec -/+ d’exercices enregistrés
    • Versions avec -/+ d’exercices associés aux tp
    • Versions avec -/+ d’aide
    • Versions avec -/+ d’arithmétique aidée
  • Variations sur les tps :
    • Version avec 1 tp en salle + 3 tp pour le cc à la maison
    • Version avec 2 tp pour le cc à la maison
    • Version avec 1 tp en cours + 2 tp pour le cc à la maison
  • Variations sur les CC en cours :
    • Version avec des 2 CC + 1 QCM
    • Version avec des 2 CC dont un avec sujet double
    • Version avec 1 CC
    • Version avec x CC de 1h/1h30
  • Variations sur les examens :
    • Versions avec +/- d’exercices indépendants
    • Versions avec +/- de questions indépendantes

Pour autant, la matière reste difficile et les résultats des étudiants aux examen à peine satisfaisants.

Featuring WPMU Bloglist Widget by YD WordPress Developer