Journal La spécialité N.S.I. de la réforme du lycée ( épisode 2 )

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes : aucune
10
22
mai
2019

Cher journal,

Je t'ai parlé dans un épisode précédent (https://linuxfr.org/users/finss/journaux/la-specialite-n-s-i-de-la-reforme-du-lycee) de la spécialité «Numérique et sciences informatiques» qui va être enseignée à des élèves de première générale dès septembre prochain.

Le document fourni à ce moment là ne concernait que la classe de première.
Nous avons maintenant accès au document concernant à ce qui sera enseigné aux élèves de terminale de la spécialité NSI à partir de 2020 à l'adresse https://cache.media.education.gouv.fr/file/CSP/61/4/Tle_NSI_Specialite_Voie_G_1126614.pdf

Ce document dit que le programme, qui ne constitue pas un plan de cours est organisé en six rubriques. Ces 6 rubriques sont :

  • Histoire de l’informatique
  • Structures de données
  • Bases de données
  • Architectures matérielles, systèmes d’exploitation et réseaux
  • Langages et programmation
  • Algorithmique

Je te laisse, cher journal, éplucher ce document ; et dans ta grande expérience de l'informatique, me dire ce que tu en penses.

  • # C'est pas mal, mais

    Posté par  (site web personnel) . Évalué à 1. Dernière modification le 23 mai 2019 à 04:40.

    2 remarques :

    1 - Pourquoi ne pas parler de semi-conducteur, d'algèbre booléenne, ou d'électronique? Un peu H.S. mais la physique et la chimie ne sont pas suffisamment étudiées, trop de filières ne dispensent aucune forme de culture scientifique, c'est dommage.

    2 - 1/3 pour la pratique, c'est un bon début, mais moi j'aurais mis 2 / 3.

    L'idée du logo était pas mal à l'époque (des dinosaures), je faisais des supers trucs graphiques avec, même si les possibilités étaient limitées, ça permettait de pratiquer en se faisant plaisir. Le plaisir d'apprendre en retour fait que je me rappellerai de ces 2 cours même des dizaines d'années plus tard.

    Aujourd'hui il y a le RPi, qui pourrait servir de support pour les TP, et le prochain RPi disposera d'un ASIC programmable (pour l'IA et autres, Vivement!!).

    C'est difficile de rester succinct avec tout ce qu'il est possible d'apprendre.

    C'est p-e une mauvaise idée d'utiliser le RPi, car cela imposerai le Python, ce qui ne serait pas forcement une bonne chose. La pratique peut aussi nuire à l'ouverture d'esprit.. Si il fallait utiliser le RPi (personnellement je serais à fond pour), il faudrait les bonnes mise en garde sur les choix que cela implique.

    • [^] # Re: C'est pas mal, mais

      Posté par  . Évalué à 1.

      Aujourd'hui il y a le RPi, qui pourrait servir de support pour les TP, et le prochain RPi disposera d'un ASIC programmable (pour l'IA et autres, Vivement!!).

      Possible. Après ça n'empèchera pas les TP de se faire avec de bons vieux PC, par exemple l'ancien matériel de la salle informatique. Ça reste à la discrétion du lycée.

      C'est p-e une mauvaise idée d'utiliser le RPi, car cela imposerai le Python, ce qui ne serait pas forcement une bonne chose.

      Python 3 est déjà imposé, les établissements n'ont pas le choix. C'est (très) contestable et les profs auront tout intérêt à montrer autre chose mais c'est bien sur ce langage que se fera une partie du contrôle de connaissances.

      • [^] # Re: C'est pas mal, mais

        Posté par  (site web personnel) . Évalué à 7.

        Et RPi n'impose pas du tout Python, tu peux utiliser n'importe quoi dessus !

        • [^] # Re: C'est pas mal, mais

          Posté par  (site web personnel) . Évalué à 1.

          Certes, et, personnellement, je ne m'en prive pas, mais Python est fortement mis en avant.

          Le Pi de Raspberry Pi, c'est pour Python (https://www.techspot.com/article/531-eben-upton-interview/), bien que ça soit de moins en moins mis en avant. En outre, les bibliothèques logicielles pour piloter les ports GPIO sont, à la base, en C ou C++, mais ce sont les bindings en Python qui sont le plus utilisés. Et ça vaut aussi pour les bibliothèques dédiées au pilotage de certains robots (Poppy Ergo Jr et consorts).

          Les exemples de programmes des tutoriels sur le pilotage de kits ou de robots avec un RPI sont systématiquement en Python, accompagnés parfois de leur version en C ou C++. Il existe des exemples de programmes en Java, mais c'est vraiment exceptionnel.

          Cyberdépendance, cyberharcèlement, pédocriminalité… : Zelbinium, pour que les smartphones soient la solution, pas le problème !

          • [^] # Re: C'est pas mal, mais

            Posté par  . Évalué à 2.

            et tu as quoi contre python de plus en plus demander dans les entreprises ? par exemple la mienne, python 3 sous windows et sur carte embarqué

  • # wiki ?

    Posté par  (site web personnel) . Évalué à 6.

    C'est notre domaine, cela serait peut-être un bon sujet pour remplir le wiki de linuxfr, non ? Cela serait à l'image d'article Wikipédia mais avec un objectif d'éducation.

    "La première sécurité est la liberté"

  • # critiques

    Posté par  (site web personnel) . Évalué à 5.

    Structure de données :

    On distingue les modes FIFO(first in first out)et LIFO (last in first out)des piles et des files.

    Sérieux ? Parler 2 fois de file et piles ? Utilisez-vous ce genre de structure ? Pour ma part, cela a dû m'arriver une ou 2 fois, en 20 ans. Les hash et les dico, c'est l'inverse.

    Base de données :

    Il convient de sensibiliser les élèves à un usage critique et responsable des données.

    C'est bien, mais il est surtout question de SQL (!). Cela manque de RGPD, je pense. C'est pourtant l'endroit parfais.

    L'Algorithmique me parait évolué, peut être un peu trop. Globalement, cela manque de juridique : pb des brevet, copyright, droit des base de données, RGPD.

    Cela manque aussi d'un point de vue de plus haut niveau économique pour expliquer le concept de plateforme (amazon, apple store), l'uberisation, et la publicité ciblée.

    "La première sécurité est la liberté"

    • [^] # Re: critiques

      Posté par  . Évalué à 2. Dernière modification le 23 mai 2019 à 11:37.

      Globalement, cela manque de juridique : pb des brevet, copyright, droit des base de données, RGPD.

      Bof c'est pas forcément le but de la formation, cependant, une sensibilisation à la protection des données et à la vie privée serait intéressante.

      Cela manque aussi d'un point de vue de plus haut niveau économique pour expliquer le concept de plateforme (amazon, apple store), l'uberisation, et la publicité ciblée.

      C'est clairement pas le but de la formation.

    • [^] # Re: critiques

      Posté par  (site web personnel) . Évalué à 2.

      Sérieux ? Parler 2 fois de file et piles ? Utilisez-vous ce genre de structure ? Pour ma part, cela a dû m'arriver une ou 2 fois, en 20 ans. Les hash et les dico, c'est l'inverse.

      Je suis sûr que t'as déjà utilisé des "stack" et des "queues", et finalement, c'est pas si loin que ça ! Y'a toujours une fois par semaine un moment où t'as besoin d'une "pile" et d'une "file" c'est juste que tu utilises une implémentation plus moderne avec un nom différent et t'as oublié que "file" et "pile" c'est juste des patterns, pas des structures de données en tant que telles.

      • [^] # Re: critiques

        Posté par  (site web personnel) . Évalué à 4.

        Je suis sûr que t'as déjà utilisé des "stack" et des "queues",

        Non justement. A l'exception de ocaml, c'est vrai, dont la structure de base est une liste FIFO.

        "La première sécurité est la liberté"

        • [^] # Re: critiques

          Posté par  (site web personnel) . Évalué à 2.

          J'imagine que ça varie de language à language (si on parle des lib standard) ou de lib en lib. Après les implémentations de file et pile y'en pléthore et on en utilise souvent sans s'en soucier. Des fois on utilise des choses qui ne sont ni des piles, ni des files, mais les deux à la fois, mais on les utilise en file ou en pile. Typiquement en PHP l'array est à la fois un sorted set, une liste, une pile, une file, un vecteur et une hashmap, mais selon le besoin on l'utilise en file, en pile, en liste, en set ou en hashmap.

          • [^] # Re: critiques

            Posté par  . Évalué à 1.

            À mon avis, quand un programme parle de FIFO et de FILO, c'est qu'on parle de structure de données où on n'a pas le choix. Et clairement le tableau de PHP n'est ni FIFO ni FILO… et tant bien même il le serait en représentation interne, je ne l'ai quasiment jamais utilisé en tant que tel.

            Ca me semble contre productif d'aborder les modeles de données par les files, les listes chainées et les structures alors qu'on a la possibilité d'attaquer avec des trucs (genre les tableaux PHP) qui sont générique et qui permettent d'assimiler le concept d'un array_map, d'un foreach etc.

            • [^] # Re: critiques

              Posté par  (site web personnel) . Évalué à 2.

              Et clairement le tableau de PHP n'est ni FIFO ni FILO

              En effet, mais tu peux l'utiliser comme tel d'un point de vue algo, avec les fonctions array_pop() array_push() et array_shift() et autres joyeusetés.

              À mon avis, quand un programme parle de FIFO et de FILO, c'est qu'on parle de structure de données où on n'a pas le choix.

              Bien ça dépend, je pense que l'enseigner comme des patterns, c'est pas une mauvaise idée, c'est un comportement dont on a souvent besoin. Après on l'implémente jamais de façon académique, on est d'accord.

              • [^] # Re: critiques

                Posté par  (site web personnel) . Évalué à 4.

                Ce qui gène, c'est l'approche top-down, on force un pattern étroit peu utilisé, quand un pattern générique existe et est utilisé partout.

                "array_pop() array_push() et array_shift()" seront découvert dés que le besoin se fait sentir et non comme un truc de base. Je trouve que c'est complexifié le sujet pour rien.

                La liste Ocaml est une fifo pour une très bonne raison d'immutabilité. Mais comprendre pourquoi elle est comme ça et pourquoi c'est très bien ainsi, est bien au delà d'une introduction à l'informatique.

                "La première sécurité est la liberté"

                • [^] # Re: critiques

                  Posté par  (site web personnel) . Évalué à 1. Dernière modification le 23 mai 2019 à 17:09.

                  Bah en même temps, la file c'est une structure de base utilisée partout, et pour comprendre les structures plus compliqués basées sur le pattern, faut déjà comprendre le besoin de base. Par exemple quasiment tous les systèmes événementiels sont basés sur des files d'évènements, et ce même si l'implémentation peut parfois être beaucoup plus complexe, souvent pour des raisons de concurrence d'accès et de performance principalement, le fait est que ce n'est rien d'autre qu'une simple file d'un point de vue besoin et algorithmique.

                • [^] # Re: critiques

                  Posté par  . Évalué à 5.

                  La liste Ocaml est une fifo pour une très bonne raison d'immutabilité. Mais comprendre pourquoi elle est comme ça et pourquoi c'est très bien ainsi, est bien au delà d'une introduction à l'informatique.

                  Les listes OCaml sont naturellement en mode LIFO : dernier arrivé, premier sorti. Ensuite c'est juste le principe des entiers unaires : en quoi c'est au-delà d'une introduction à l'informatique ? C'est ce que fait un enfant quand il apprend à compter avec ses doigts. Si des élèves de terminale ne comprennent pas cela, il y a un gros soucis.

                  Les listes OCaml sont LIFO par construction :

                  let push x l = x :: l
                  
                  let l = [] |> push `As |> push `Roi |> push `Dame;;
                  val l : [> `As | `Dame | `Roi ] list = [`Dame; `Roi; `As]
                  
                  (* la première à sortir est la dernière arrivée, à savoir `Dame *)
                  List.hd l;;
                  - : [> `As | `Dame | `Roi ] = `Dame

                  Ensuite, si l'on fait abstraction des valeurs contenus dans la liste, on obtient une liste de type unit list :

                  List.map ignore l;;
                  - : unit list = [(); (); ()]

                  et une telle liste c'est les entiers unaires : une liste de bâtons, de traits, de points…

                  Qu'est-ce qu'on fait, le plus souvent, avec une liste ? On utilise un fold, c'est à dire le principe du raisonnement par récurrence sur les nombres entiers. Il vient en deux versions : fold_left (mode LIFO) et fold_right (mode FIFO).

                  Non, vraiment, je ne vois pas où est le problème d'aborder ces notions dans une introduction à l'informatique. Cela fait partie des concepts les plus simples à assimiler.

                  Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                  • [^] # Re: critiques

                    Posté par  (site web personnel) . Évalué à 3.

                    oui, Ocaml, c'est lifo, j'ai confondu.

                    Non, vraiment, je ne vois pas où est le problème d'aborder ces notions dans une introduction à l'informatique. Cela fait partie des concepts les plus simples à assimiler.

                    Simple à comprendre oui. A utiliser, j'ai un gros doute. Un graph ou un arbre est plus complexe, mais c'est utilisable tout le temps partout.

                    "La première sécurité est la liberté"

            • [^] # Re: critiques

              Posté par  . Évalué à 5.

              Ca me semble contre productif d'aborder les modeles de données par les files, les listes chainées et les structures alors qu'on a la possibilité d'attaquer avec des trucs (genre les tableaux PHP) qui sont générique et qui permettent d'assimiler le concept d'un array_map, d'un foreach etc.

              Ben non, moi ça me parait tout sauf contre-productif. quand une personne n'y connait rien, la noyer avec un objet qui fait tout en même temps, ça n'aide pas. Et a mon avis, le but n'est pas de voire les files pour les files (ou les piles pour les piles), mais plus un moyen d'impleémenter des patterns assez simple pour apprendre.

              • [^] # Re: critiques

                Posté par  (site web personnel) . Évalué à 1.

                Exactement, je suis tout à fait d'accord, il faut toujours partir du besoin et uniquement du besoin de base, et appréhender la complexité dans un second temps quand on est plus à l'aise avec. Pour apprendre, on est obligé d'en passer par là.

    • [^] # Re: critiques

      Posté par  (site web personnel) . Évalué à 4.

      Oui, j'utilise des piles, des files, et même des tas. Pas tous les jours, mais au moins une fois par mois.

      • [^] # Re: critiques

        Posté par  (site web personnel) . Évalué à 4.

        Dans quel genre de code ?

        "La première sécurité est la liberté"

        • [^] # Re: critiques

          Posté par  (site web personnel) . Évalué à 4.

          Protocoles de communication, traitement parallèle de données, traversée breadth-first de graphes.

          • [^] # Re: critiques

            Posté par  (site web personnel) . Évalué à 5.

            Et tu penses que c'est une bonne approche pour l'introduction de l'informatique à des lycéens ? Ce genre de détail n'aurait pas sa place plus tard ?

            "La première sécurité est la liberté"

            • [^] # Re: critiques

              Posté par  . Évalué à 1.

              Ben… comprendre qu'il y a différentes façons de s'organiser pour ses données, avec diverses fonctionnalités, divers avantages, divers inconvénients… ça semble assez sain!

              • [^] # Re: critiques

                Posté par  (site web personnel) . Évalué à 3.

                Il n'y a pas de file/pile dans UML, ni dans SQL. C'est pourtant les outils de base pour exprimer/manipuler des données.

                "La première sécurité est la liberté"

                • [^] # Re: critiques

                  Posté par  . Évalué à 2.

                  Un langage n'est pas limité à ses mots-clefs et à sa bibliothèque standard.
                  SQL étant un langage Turing complet, tu peux créer des piles et des files.

                  Pour UML je ne sais pas.

                • [^] # Re: critiques

                  Posté par  (site web personnel) . Évalué à 3.

                  Derniere fois que j'ai fait de l'UML : jamais.
                  Derniere fois que j'ai fait du SQL : 2014. Je fais du NoSQL a la place (pas parce que c'est a la mode, mais plutot car c'est la bonne solution).

                  Et la pile, je pense qu'elle est important a connaitre, ne serait-ce qu'a cause de la "call stack". Et les files, c'est super utile pour modeliser les event streams (auquel cas, avec SQS, j'en fais super regulierement).

                  • [^] # Re: critiques

                    Posté par  (site web personnel) . Évalué à 3.

                    "Derniere fois que j'ai fait du SQL : 2014. Je fais du NoSQL a la place (pas parce que c'est a la mode, mais plutot car c'est la bonne solution)."

                    Tu le penses toujours ? J'ai l'impression qu'il y a une mode qui passe, le nosql permet d'aller plus vite, mais on oublie le prix à payer par rapport au SQL (transaction, atomicité, rollback). J'ai l'impression que si on reste sous la barre des 1000 io/s, il n'y a aucune intérêt à utiliser autres choses que Postgresql. Même les bases NoSQL commencent à utiliser ce langage.

                    cf :
                    https://www.youtube.com/watch?v=UKrS_eXZfHw

                    "La première sécurité est la liberté"

        • [^] # Re: critiques

          Posté par  (site web personnel) . Évalué à 5.

          La file de voitures en sortant du boulot et la pile de vaisselle après mangé?

          Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

  • # Il manque le principale

    Posté par  (site web personnel) . Évalué à 4.

    Faire lire une copie de "Clean Code" aux étudiants.

    • [^] # Re: Il manque le principale

      Posté par  (site web personnel) . Évalué à 5.

      Tu as raison, il manque les Regex : s/principale/principal/

      ;)

      « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

  • # Pas de listes en Python ?

    Posté par  . Évalué à 3.

    Dans leur document est écrit que « les listes n’existent pas de façon native en Python ». Auriez-vous une idée de ce qu'ils ont voulu dire par là ? Le type natif list de Python ne sert pas à faire des listes ?

    • [^] # Re: Pas de listes en Python ?

      Posté par  (site web personnel) . Évalué à 2.

      Ce ne sont pas des "listes chaînées", mais des tableaux dynamiques de références.

      Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.