Journal Apprentissage de la programmation : comment moderniser les exercices

13
9
août
2019

Jeu du pendu

Eh oui, en pleines vacances, ce journal va évoquer la rentrée, et plus précisément la prochaine rentrée scolaire. Vu les résultats du pénultième sondage, cela devrait intéresser plus d'une personne ici, non pas tellement en tant qu'élève, mais plutôt en tant que parent ou grand-parent.

Il se trouve, en effet, qu'au cours de l'année solaire à venir, des cours de programmation informatique vont être dispensés dans certains lycées, avant d'être généralisés à l'ensemble des lycées d'enseignement général et technologique. Ces cours étant obligatoires, l'assiduité des élèves est loin d'être acquise, d'où un intérêt particulier à rendre ces cours aussi intéressants que possible.

Le langage qui été retenu par l'Éducation nationale est Python, probablement la version 3. Or, à la vue des tutoriels existants, qu'ils s'appuient sur Python ou un autre langage, la principale crainte des enseignants provient du fait que l'interface de la plupart des exercices soit textuelle.

De nos jours, presque tous les jeunes possèdent un smartphone, et sont, de ce fait, habitués aux interfaces graphiques. Ils n'ont que rarement, voire jamais, eu affaire à une console texte. L'écriture de programmes avec une interface texte va leur sembler (à tord) dépassée, et donc probablement totalement inintéressante. D'où l'idée d'un outil qui permettrait de créer des exercices avec une véritable interface graphique.

Cet outil, tel que je l'ai imaginé, mettra en œuvre une interface web. Il a, en outre, été conçu de manière à ce que le lancement de l'exercice provoque automatiquement l'ouverture d'un navigateur web pour donner un accès immédiat à l'interface de l'exercice en question. De plus, un code QR sera affiché pour en faciliter l'accès à partir d'un smartphone. Un autre de mes projets pédagogiques, présentés dans ce journal, s'appuie déjà sur cet outil.

Pour un élève, un exercice consiste généralement à écrire du code effectuant certaines tâches. Pour valider ce code, et donc l'exercice, il faut en tester le comportement en modifiant les valeurs de ses différents paramètres. Cela se fait habituellement en modifiant ces paramètres directement dans le code source, ou alors lors de l'exécution, en récupérant la valeur des ces paramètres grâce à des input(…) (dans le cas d'exercices codés en Python).

Avec une interface web, les élèves disposeront d'une véritable interface graphique dans laquelle ils pourront saisir à la volée les valeurs des différents paramètres. C'est beaucoup plus pratique, et également beaucoup plus proche de ce à quoi ils sont habitués avec les applications qu'ils utilisent sur leurs smartphones. À noter que les élèves ne manipuleront pas directement l'interface, ou alors seulement via des fonctions de très haut niveau.

À titre d'exemple, j'ai crée un dépôt Github avec quelques exercices mettant en œuvre cet outil, exercices dont l'objet est d'aborder les différents concepts de base de la programmation informatique. Cependant, bien qu'indispensables, les élèves risquent d'être rapidement lassés par ces exercices, de par l'abstraction des sujets sur lesquels ils portent.

Je me suis donc penché sur l'élaboration d'une autre série d'exercices, plus ludiques, mais toujours basés sur le même outil. Les exercices de cette série sont destinés à être proposés en alternances avec ceux de l'autre série. L'idée, c'est d'introduire les concepts de bases avec les exercices de la première série, puis de les mettre en œuvre avec les exercices de la seconde série.

Ces exercices de la seconde série vont consister à écrire, une à une, les fonctionnalités d'un jeu, par exemple. Une fois le dernier exercice accomplit, l'élève aura un jeu entièrement fonctionnel.

Prenons l'exemple du jeu du pendu (d'où l'illustration accompagnant ce journal). Pour le premier exercice (exercice a), les élèves débuteront avec un fichier dont le contenu sera le suivant :

# coding: utf-8

import sys
sys.path.append(".")
from workshop.fr.a import *

def lettreEstDansMot(lettre,mot):

go(globals())

Le but de l'exercice sera d'implémenter la fonction lettreEstDansMot(lettre,mot), à savoir lui faire retourner vrai lorsque lettre est présent dans mot, faux sinon. Comme indiqué plus haut, les différentes notions nécessaires à l'implémentation de cette fonction auront été abordés à l'aide des exercices de la première série.

Lorsque l'élève, pour vérifier si son code fonctionne correctement, lancera l'exercice, un navigateur web s'ouvrira sur une interface telle que reproduite dans l'illustration en début de journal. Pour faciliter les tests, il y aura, en plus, un champ texte qui affichera le mot secret, et dans lequel on pourra saisir le mot secret de son choix. Ce champ texte ne sera évidemment pas présent dans la version finale du jeu.

Les tests consisteront donc à sélectionner successivement plusieurs des lettres du clavier, et vérifier qu'elles sont affichées lorsqu'elles sont contenues dans le mot secret, ou qu'une partie du pendu s'affiche dans le cas contraire.

Une fois ce premier exercice correctement réalisé, on passe à l'exercice suivant (exercice b), pour lequel l'élève devra au préalable remplacer le a dans la ligne from workshop.fr.a import * par un b pour obtenir from workshop.fr.b import *. Il devra également ajouter la déclaration de fonction suivante: def obtenirMasque(mot,pioches). Le fichier ressemblera alors à ça:

# coding: utf-8

import sys
sys.path.append(".")
from workshop.fr.b import *

def lettreEstDansMot(lettre,mot):
# Ici, il y aura le code que l'élève a écrit à l'occasion de l'exercice 'a'.

def obtenirMasque(mot,pioches):

go(globals())

Vous l'aurez compris, l'exercice consistera à implémenter la fonction obtenirMasque(mot,pioches), dont les notions nécessaires pour cela auront été abordés à l'aide de l'autre série d'exercices. Les tests seront réalisés dans les mêmes conditions que pour l'exercice précédent.

Et ainsi de suite pour les exercices c, d, e… Chaque nouvel exercice reprend ce qui a été codé lors des exercices précédents, et ajoutera une nouvelle fonctionnalité à implémenter, jusqu'à l'exercice final, à l'issue duquel toutes les fonctionnalités du jeu auront été implémentées.

Là aussi, j'ai crée un dépôt GitHub pour tester la faisabilité technique du projet, et également voir les difficultés que présenterait l'internationalisation d'un tel projet. Les répertoires en (version anglaise des exercices) et fr (version française) ne sont pas destinés à être fournis aux élèves, car ils contiennent, pour chaque exercice, un exemple de solution. Ils contiennent, en outre, des indications destinées aux enseignants. Seuls le répertoire workshop, ainsi que les deux fichiers ZIP, seront fournis aux élèves.

Pour l'instant, les deux dépôts Github présentés ci-dessus ont été crées essentiellement à titre de preuves de concept. Des différents retours que j'ai eu jusqu'à présent, autant l'intérêt pédagogique que la pertinence technique de l'outil mentionné dans ce journal semblent établis. Ces deux dépôts vont donc maintenant évoluer et être complété de manière à pouvoir être mis en œuvre par les enseignants. Si vous avez des suggestions à faire à ce propos, n'hésitez pas…

  • # Programmation objet ?

    Posté par . Évalué à 2 (+2/-0). Dernière modification le 09/08/19 à 18:50.

    Marrant, quand j'étais au lycée il y a fort fort longtemps, on avait appris le BASIC sur TO7/70. Ça m'avait royalement gonflé de dessiner des carrés de couleur à l'écran, alors du Python, il va vraiment falloir être pédagogue.
    Je ne me suis intéressé à l'informatique que 3 ans plus tard, grâce à quelqu'un qui m'a vraiment appris à programmer en BASIC, il me fascinait en gagnant tous les jeux-concours sur Minitel. Ses programmes faisaient de l'apprentissage au jeu de l'âne, il avait programmé toutes les probabilités de tirer telle ou telle carte au poker…

    • [^] # Re: Programmation objet ?

      Posté par . Évalué à 4 (+3/-0).

      Salut !

      il avait programmé toutes les probabilités de tirer telle ou telle carte au poker

      Je pense qu'il s'agit plutôt d'un tirage de main, non ?

      Parce que la proba de tirer une carte, bah… :)

    • [^] # Re: Programmation objet ?

      Posté par . Évalué à 7 (+5/-0).

      En parlant de Basic, enfin, dans mon cas, QBasic, je me souviens d'une interface (au sens API) capable de générer des images (et du son) à partir de chaînes de caractères. Mais bon, c'est nettement plus récent: c'était il y a 18 ans, et le logiciel lui-même était déjà obsolète. N'empêche, il était accompagné d'une doc de qualité qui permettait d'apprendre sans accès au Web, et ne cachait pas (trop) le fonctionnement réel sous-jacent.

      Pour le coup, moi, c'est bien l'intro faite à ma classe par un prof dans ma 1ère années de seconds que je ne portais pourtant pas dans mon coeur qui m'a filé le virus de l'informatique… 1 an plus tard, j'étudiais par moi-même l'assembleur, le C, et le fonctionnement de windows (je n'avais jamais entendu parler de systèmes autres que DOS ou windows).
      Ce qu'il nous avait montré était juste du printf/scanf pourtant… enfin, en QB, bien sur. Je ne suis pas le seul a avoir aimé ça, d'ailleurs, mon ami de l'époque (qui m'a appris à utiliser google et hotmail, à l'époque) et moi avons ensuite passé énormément de temps au CDI, notamment sur un site nommé de mémoire "qbworld", fait par un type du nom (pardon pour l'écorchage) d'achraf cherti, ou un truc du genre. J'y ai découvert les effets plasma, tunnel, raytracing, entres autres.

      Autre souvenir, de terminale STI électronique, je codais déjà depuis quelques années du coup (bon, ok, 3 ans et des bananes) et les profs d'élec voulaient nous apprendre le C. Je m'ennuyais forcément (j'avais commencé à étudier le C++ a ce moment, avec le bouquin nul à chier "C++ pour les nuls" blindé d'idiomes et de culture ricains traduit mot-à-mot, de fautes, et assommant comme un célèbre livre de Zola), alors je codouillais d'abord un truc qui rebondissait en mode curses… enfin, conio, puisque c'était un vieil IDE borland, puis j'y ajoutais une raquette, puis un système de scores, puis de la couleur en fonction des positions, et enfin de la musique elle-aussi en fonction des position: que du procédural, avec un bel effet années 80…

      Ce truc (le son) a hypnotisé mes camarades de classes, je sais pas pourquoi (j'avais fait ça par désoeuvrement), et les profs ont transformé les TPs pour qu'ils tournent autour de ça.
      À l'époque, plus personne n'utilisait DOS depuis longtemps, sauf moi, pour le code. Les téléphones portables étaient déjà dans toutes les mains, même si moins beaux et intrusifs que de nos jours.
      Du coup, je me demande si vraiment, c'est un problème d'esthétique que d'intéresser les jeunes au code.

      • [^] # Re: Programmation objet ?

        Posté par . Évalué à 3 (+3/-0). Dernière modification le 10/08/19 à 12:13.

        http://qbworld.asher256.com ?
        Un des innombrables sites persos qui vont bientôt disparaître si les navigateurs bloquent l'accès aux sites sans https ?

        • [^] # Re: Programmation objet ?

          Posté par . Évalué à 3 (+1/-0).

          Yep, celui-là, merci. J'aurais été bien incapable de retrouver l'URI…

          Un des innombrables sites persos qui vont bientôt disparaître si les navigateurs bloquent l'accès aux sites sans https ?

          Perso, aller sur certains sites sans https ne me dérange pas, tant que je n'ai pas a saisir d'informations, c'est "juste" le risque d'être pisté.
          Reste évidemment le risque d'usurpation d'identité, mais sur un site ou il n'y à aucune information saisissable et pas de softs réellement destinés à être utilisés (plutôt à être étudiés) ça me semble être un gain inutile pour l'attaquant.

          Bref, un navigateur qui m'interdit le protocole http, je pense qu'il ira juste faire un tour dans /dev/null. C'est pas comme si https empêchait les gens de se faire tracker par des google ou facebook de toute façon.

      • [^] # Re: Programmation objet ?

        Posté par (page perso) . Évalué à 2 (+1/-0).

        Du coup, je me demande si vraiment, c'est un problème d'esthétique que d'intéresser les jeunes au code.

        Ben quand même, une console texte, ce n'est pas très folichon. Avec une interface web, à l'aide de quelques règles CSS, on peut arriver à faire quelque chose de visuellement fun. Bon, les exercices présentés dans ce journal ne sont pas un bon exemple de ce point de vue, vu mon niveau en CSS… D'ailleurs, s'il y a des volontaires maitrisant CSS pour enjoliver les exercices…

        De plus, le fait d'utiliser des technos web, c'est pour leur montrer que, non, leur smartphone, ce n'est pas seulement pour avoir accès Facebook, Instagram, Twitter ou que sais-je encore. On peut aussi l'utiliser pour avoir accès à des applications que l'on a soi-même crées.

        Toolkit Atlas : pour facilement ajouter une interface graphique à vos programmes (voir page perso) !

    • [^] # Re: Programmation objet ?

      Posté par (page perso) . Évalué à 2 (+1/-0).

      Marrant, quand j'étais au lycée il y a fort fort longtemps, on avait appris le BASIC sur TO7/70. Ça m'avait royalement gonflé de dessiner des carrés de couleur à l'écran, alors du Python, il va vraiment falloir être pédagogue.

      Je ne sais pas si ça va faire une grande différence, mais le but n'est pas d'apprendre Python, mais d'apprendre la programmation. Donc, on va, à priori, laisser toutes le subtilités de Python de coté. En outre, grâce à l'interface web, on va pouvoir faire des exercices bien plus amusants que le traçage de carrés.

      Pour ce qui est de la programmation objet, comme on peut en avoir un aperçu et , ça peut être tout à fait abordé dans le cadre d'exercices dédiés.

      Toolkit Atlas : pour facilement ajouter une interface graphique à vos programmes (voir page perso) !

  • # Précisions sur l'informatique dans le secondaire.

    Posté par . Évalué à 9 (+9/-0).

    Il semble qu'il y ait dans cet article un peu de confusion sur la place de la programmation et de l'informatique dans l'éducation nationale.

    La programmation est au programme pour tous, depuis quelques temps déjà, au collège avec scratch (ou d'autres langages de programmation par blocs) en cours de mathématiques et en cours de techno. En commençant par la prog. par blocs, il n'y a donc pas ces problèmes d'interface graphique.

    La difficulté, outre le manque de temps pour la programmation, est que les exercices sont sensés être en lien avec les maths.

    Vous pouvez voir les sujets récents du brevet:
    https://www.apmep.fr/IMG/pdf/Brevet_Metropole_1_juillet_2019_DV-2.pdf
    https://www.apmep.fr/Brevet-2019-1-article

    En suite, en lycée générale la programmation en Python est déjà au programme pour tout le monde dès la seconde depuis deux ans dans les cours de mathématiques.

    Pour vous faire une idée:

    https://cache.media.eduscol.education.fr/file/Mathematiques/73/3/Algorithmique_et_programmation_787733.pdf

    Il y aura à partir de l'an prochain, pour tout le monde en seconde une nouvelle matière appelée sciences numériques et technologie (SNT), cette matière ne contiendra que très peu de programmation, c'est plus une matière de culture générale sur le numérique, une sorte d'éducation civique du numérique.

    Pour ceux qui veulent vraiment de l'informatique et de la programmation, il faudra choisir la spécialité numérique et sciences informatiques (NSI) qui contient de la programmation en Python, de l'algorithmique avec de la complexité (algo de tris, algo gloutons, algorithmes des plus proches voisins, preuve de terminaison etc en 1er, programmation dynamique, récursivité, ABR, graphe en term) du réseaux, du web (html, javascript) de l'architecture, de la base de données etc.
    Cette spécialité est loin d'être proposée dans tout les lycées.

    Le sujet 0 de première, sachant que cette épreuve de première est pour les élèves qui arrêtent la spécialité en première et se veut donc beaucoup plus simple que l'épreuve de term:

    https://cache.media.eduscol.education.fr/file/Annales_zero_BAC_2021_1e/87/9/S0BAC21-1e-SPE-NSI_1133879.pdf

    Pour revenir sur le fond de l'article, et donc la question de l'interface utilisateur dans l'enseignement de la programmation avec Python, l'éducation nationale a déjà fait un choix fort à ce niveau, avec une vision proche de la programmation fonctionnelle.
    L'idée est de passer par un éditeur de texte intégrant une console python (repl.it est un bon exemple) ou par des jupyter notebooks, et de passer systématiquement par l'usage de fonction. Pour schématiser l'élève écrit ses fonctions côtés éditeurs, et il les appelle côté console.

    Le but est de séparer au maximum et dès le départ la partie logique, de la partie interface.
    La partie interface n'est d'ailleurs pas du tout abordée en maths, elle le sera uniquement en NSI. Mais comme NSI propose du web, les élèves devraient pouvoir créer (en étant pas mal guidé), leur propre interface lors des projets.
    De plus, un des but de cet enseignement est de bien séparer HTML et Javascript, front-end et back-end. Introduire Python avec une interface web risque d'amener des confusion à ce niveau.

    • [^] # Re: Précisions sur l'informatique dans le secondaire.

      Posté par . Évalué à 6 (+5/-1). Dernière modification le 11/08/19 à 10:08.

      La difficulté, outre le manque de temps pour la programmation, est que les exercices sont sensés être en lien avec les maths.

      Comme d'habitude l'éducation nationale est à coté de la plaque, imaginons un instant que l'on inverse les choses et que l'informatique soit la matière principale et utilisée systématiquement avec les autres matières …

      cela ressemblerait un peu plus au monde réel ou notre vie professionnelle (et pas que … ) est reliée à l'informatique d'une manière ou d'une autre.

      Au lieu de présenter la programmation comme un science à part entière, l'éducation nationale en fait une "sous matière" des maths

      Comme d'hab vous allez droit dans le mur … mais bon cela fait l'affaire des écoles privées d'info après tout et certainement d'autres lobbies.

      PS:

      Désolé d'avoir des mots un peu limite voire même blessant, cela n'a rien de personnel, et je connais assez bien l'environnement scolaire pour avoir suivi d'assez près la scolarité de mes filles.
      Je suis aussi persuadé que la France a des enseignants majoritairement motivés et de plus compétent, le problème ne vient pas des personnes qui sont sur le terrain.

      Cet article dans linuxfr en est la preuve …

      mais j'ai le sentiment qu'ils sont sacrifiés par une hiérarchie complétement déconnectés de la réalité. Et incapable d'adapter l'éducation de nos enfants au monde réel d'aujourd'hui, ce qui est déjà une erreur, mais en plus incapable de se projeter dans l'avenir que devront affronter nos gamins.

      Le "mammouth" est encore d'actualité

      Le budget de l'éducation nationale est le 1er ou le 2eme de l'état, j'aimerais savoir ou cela passe …

      • [^] # Re: Précisions sur l'informatique dans le secondaire.

        Posté par . Évalué à 4 (+4/-0).

        Je pense que le problème n'est plus d'être la matière principale ou une sous matière, etc.

        Le problème c'est le recrutement, il est beaucoup plus simple de mettre la pression sur les profs de maths pour qu'ils se mettent à l'informatique, que de recruter des informaticiens qui ont des bases théoriques solides.

        C'est aussi le problème des écoles privées d'info, pas bcp de gens bien formés en sorte..

        Et le niveau des futurs certifiés d'informatique sera surement dramatique.

        • [^] # Re: Précisions sur l'informatique dans le secondaire.

          Posté par . Évalué à 1 (+0/-1). Dernière modification le 12/08/19 à 09:12.

          Le problème c'est le recrutement

          C'est sur que si l'on ne se base que sur la promotion interne, l'association math - informatique date du siècle dernier.

          Il s'agit de 2 disciplines différentes sur plein de domaine.

          D'ailleurs n'importe qui peut devenir prof dans un lycee ou il y a un cursus obligatoire ?

          Si c'était faisable je reconnais volontiers que cela me plairait de finir prof d'informatique

          Mais avec mon cursus de poursuite d'étude (sans jamais les attraper), un dossier scolaire en rouge clignotant classifié "fouteur de bordel"
          Ceci dit j'ai quand même un bac + 2 (obtenu mon bac avec 2 ans de retard :))

          cela serait un comble de finir dans l'éducation nationale …

          • [^] # Re: Précisions sur l'informatique dans le secondaire.

            Posté par . Évalué à 2 (+0/-0).

            D'ailleurs n'importe qui peut devenir prof dans un lycee ou il y a un cursus obligatoire ?

            En à coté (vacataire), ça passe sans soucis, en temps plein, faut passer un concours, et accepter le poste qu'on te propose (dans la zone de l'académie quand même); le choix tu l'auras plus tard :/

            Il ne faut pas décorner les boeufs avant d'avoir semé le vent

          • [^] # Re: Précisions sur l'informatique dans le secondaire.

            Posté par (page perso) . Évalué à 1 (+0/-0).

            À noter que les futurs professeurs d'informatique dans les lycées seront titulaires d'un CAPES d'informatique (qui va être crée en 2020), et non plus titulaires d'un CAPES de mathématique, ou de je ne sais quoi, option informatique…

            Comme quoi, il y du progrès ; il semblerait qu'il y aurait même une agrégation d'informatique en projet.

            Toolkit Atlas : pour facilement ajouter une interface graphique à vos programmes (voir page perso) !

          • [^] # Re: Précisions sur l'informatique dans le secondaire.

            Posté par . Évalué à 3 (+0/-0).

            Un camarade de promo, le genre président de BDE pour pouvoir organiser de méga fiesta, est maintenant directeur d'une école d'ingé…

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

      • [^] # Re: Précisions sur l'informatique dans le secondaire.

        Posté par . Évalué à 3 (+3/-2).

        j'ai le sentiment qu'ils sont sacrifiés par une hiérarchie complétement déconnectés de la réalité.

        Malhereusement ce n'est pas le propre de l'éducation nationale, c'est ce qui se passe dans toute société ou il y a un niveau hierarchique trop ense (chef puis chef du chef, puis chef du chef du chef ….). Le plus triste c'est que ce sont les enfants qui en subissent les conséquences dans le cas de l'EN. Mais c'est je pense un problème culturel français.

    • [^] # Re: Précisions sur l'informatique dans le secondaire.

      Posté par (page perso) . Évalué à 1 (+0/-0).

      […]

      Merci pour toutes ces informations.

      Pour ce que j'en sais, les cours de programmation s'inscrivent effectivement dans une discipline plus large, mais seront obligatoires, ainsi que l'utilisation de Python, donc exit Scratch et consorts. En outre, la place accordée à la programmation sera assez importante, mais c'est peut-être un choix des enseignants, sachant qu'ils n'ont pas de directives précises à ce sujet. Maintenant, cela diffère peut-être en fonction des lycées…

      Pour revenir sur le fond de l'article, et donc la question de l'interface utilisateur dans l'enseignement de la programmation avec Python, l'éducation nationale a déjà fait un choix fort à ce niveau, avec une vision proche de la programmation fonctionnelle.
      L'idée est de passer par un éditeur de texte intégrant une console python (repl.it est un bon exemple) ou par des jupyter notebooks, et de passer systématiquement par l'usage de fonction. Pour schématiser l'élève écrit ses fonctions côtés éditeurs, et il les appelle côté console.

      Là aussi, de ce qu'on m'en a dit, chaque élève se verra doté d'un ordinateur portable qui lui sera propre, avec un environnement de développement Python, donc les services comme Repl.it ne seront pas utilisés, même s'il n'y a rien qui s'y oppose. Pour le reste, comme les consignes qu'ils ont reçus sont assez vagues, c'est eux qui décident…

      Le but est de séparer au maximum et dès le départ la partie logique, de la partie interface.
      La partie interface n'est d'ailleurs pas du tout abordée en maths, elle le sera uniquement en NSI. Mais comme NSI propose du web, les élèves devraient pouvoir créer (en étant pas mal guidé), leur propre interface lors des projets.

      De plus, un des but de cet enseignement est de bien séparer HTML et Javascript, front-end et back-end. Introduire Python avec une interface web risque d'amener des confusion à ce niveau.

      Pour ce qui est de l'interface web, ce sera totalement transparent. Au lieu d'utiliser print(…), ils utiliseront une autre commande qui, au lieu d'afficher un contenu dans une console texte, l'affichera dans l'interface web de l'exercice à l'endroit prévu pour cela. De la même manière, au lieu d'utiliser des input(…) pour récupérer des données utilisateurs, ils les récupèreront via les paramètres d'un callback. Ils n'auront pas affaire à HTML, JavaScript, DOM, CSS…. Dans un second temps, il sera tout à fait possible de proposer des exercices pour aborder ces technologies.

      Toolkit Atlas : pour facilement ajouter une interface graphique à vos programmes (voir page perso) !

      • [^] # Re: Précisions sur l'informatique dans le secondaire.

        Posté par . Évalué à 1 (+1/-0).

        Pour ce que j'en sais, les cours de programmation s'inscrivent effectivement dans une discipline plus large, mais seront obligatoires, ainsi que l'utilisation de Python, donc exit Scratch et consorts. En outre, la place accordée à la programmation sera assez importante, mais c'est peut-être un choix des enseignants, sachant qu'ils n'ont pas de directives précises à ce sujet.

        Scratch restera au collège, pour la matière de tronc commun de seconde, le programme est le suivant:

        http://cache.media.education.gouv.fr/file/CSP/41/0/2de_Sciences_numeriques_et_technologie_Ens-commun_1025410.pdf

        Il n'y a qu'une petite page sur les "Notions transversales de programmation" qui est apparu assez tard dans la rédaction du programme.
        La programmation n'y est pas centrale car une grosse partie des enseignants qui l'enseigneront n'ont et n'auront pas de formation en programmation. (ce ne seront pas tous des profs d'info ou de maths)
        Vu le peu de certifié en informatique annoncé (et "recrutable"), il sera extrêmement rare que cet enseignement soit assuré par des informaticiens. (même dans 5 ans ou plus)

        Un manuel au hasard:
        https://www.editionsdidier.com/fr/sous-collection/sciences-numeriques-et-technologie-snt-2de

        (le peu de python me semble de mauvaise qualité)

        Là aussi, de ce qu'on m'en a dit, chaque élève se verra doté d'un ordinateur portable qui lui sera propre, avec un environnement de développement Python, donc les services comme Repl.it ne seront pas utilisés, même s'il n'y a rien qui s'y oppose. Pour le reste, comme les consignes qu'ils ont reçus sont assez vagues, c'est eux qui décident…

        Non chaque élève ne sera pas équipé d'un ordinateur portable. C'est possible que cela soit mis en place dans quelques lycées mais ce sera ultra-minoritaire. Et repl.it était juste cité comme exemple pour illustrer le couple editeur + console, j'aurais tout aussi bien pu citer spyder.

        Pour ce qui est de l'interface web, ce sera totalement transparent. Au lieu d'utiliser print(…), ils utiliseront une autre commande qui, au lieu d'afficher un contenu dans une console texte, l'affichera dans l'interface web de l'exercice à l'endroit prévu pour cela. De la même manière, au lieu d'utiliser des input(…)

        Il n'y a pas vraiment lieu de remplacer input ou print, car l'idée est de s'en passer, en utilisant des fonctions et la console.

  • # CodinGame

    Posté par . Évalué à 4 (+6/-2).

    Super ludique pour apprendre la programmation dans le langage de votre choix et l’algorithmie :
    CodinGame

    • [^] # Re: CodinGame

      Posté par (page perso) . Évalué à 3 (+1/-0).

      Pour info, car ça fait un peu pub quand même (je comprends que certains aient moinssé), cette personne ne travaille pas pour CodinGame :).

      • [^] # Re: CodinGame

        Posté par . Évalué à 2 (+2/-0).

        Je confirme, c’est juste que j’ai personnellement apprécié le concept et que j’y ai passé un certain nombre d’heures très ludiques :)

      • [^] # Re: CodinGame

        Posté par . Évalué à 2 (+0/-0).

        C'est pas comme si les notes non massives était pertinentes, non plus… Ironiquement, d'ailleurs.

        • [^] # Re: CodinGame

          Posté par (page perso) . Évalué à 2 (+0/-0).

          Où est-ce qu'on peut ouvrir une merge request / pull request pour ajouter la possibilité de pertinenter les votes ?

  • # un pendant python à Ruby Shoes!

    Posté par . Évalué à 7 (+5/-0).

    Question bête. Est-ce que Ruby Shoes a un équivalent python ? Je me rappelle m'être bien amusé à découvrir ruby avec ce petit framework.

    shoesrb

    Je ne baserais pas tout une année scolaire sur ce genre de truc mais comme outil de découverte non rébarbatif je trouve ça bien.

  • # Code

    Posté par (page perso) . Évalué à 3 (+1/-0).

    Je regardais le code sur GitHub (parce que j’ai pas compris ce que obtenirMasque() devait faire) et je suis tombé sur hangman-exercises/fr/a.py#L12.

    Si j’étais prof et que mes élèves me faisaient une boucle for pour trouver si une lettre est dans un mot en Python, je mettrais genre 5/20 (pour “l’encre”).

    • [^] # Re: Code

      Posté par (page perso) . Évalué à 2 (+1/-0).

      C'est bien pour ça qu'il y a ceci

      Comme indiqué dans le journal, le but ce n'est pas d'apprendre Python, mais la programmation en général. Donc, après avoir trouvé la solution pythonesque, un nouvel énoncé leur sera soumis dont la solution ressemble à celle proposée dans le fichier ci-dessus, histoire de les entraîner à écrire des boucles for.

      Toolkit Atlas : pour facilement ajouter une interface graphique à vos programmes (voir page perso) !

      • [^] # Re: Code

        Posté par (page perso) . Évalué à 3 (+1/-0).

        Est-ce que le but c’est de leur apprendre la programmation correctement ou juste de leur faire faire des boucles for inutile ?

        Non, parce que je pense que var in other_var existe dans une majorité de langage.

        • [^] # Re: Code

          Posté par . Évalué à 4 (+4/-0).

          Ce n'est pas le cas en C, ce qui est loin d'être négligeable.

          Mais l'important ici, c'est que l'élève comprenne que le in cache la complexité et que derrière il y a un coût linéaire. Bien expliciter ce qu'abstrait le in me parait être une bonne chose, et une fois que c'est compris, on peut l'utiliser sans problème.

          • [^] # Re: Code

            Posté par . Évalué à 2 (+0/-0).

            Ce n'est pas le cas en C, ce qui est loin d'être négligeable.

            Je suis plutôt rouillé en C, mais il me semblait bien qu’il existait quelque chose.

            Pour le reste, je suis d’accord avec toi.

            ¯ : macron (typographie), petit signe diacritique, qui prétend ne pencher ni à gauche ni à droite, mais se place nettement au dessus des vraies lettres, qu’il considère avec mépris.

            • [^] # Re: Code

              Posté par (page perso) . Évalué à 1 (+0/-0).

              Dans ce cas précis , strchr(…) serait préférable, mais les deux seraient de toute manière plutôt l'équivalent de string.find(…). C'est var in other_var, en tant que construction du langage, qui n'a pas d'équivalent en C

              Toolkit Atlas : pour facilement ajouter une interface graphique à vos programmes (voir page perso) !

      • [^] # Re: Code

        Posté par . Évalué à 1 (+0/-0). Dernière modification le 19/08/19 à 14:27.

        ce qui me dérange, c'est l'utilisation de la boucle for pour faire cela, il me semble qu'un while aurait été plus approprié (mais plus verbeux).
        j'ai l'impression qu'on dénature la boucle for en non seulement en sortant avent la fin normale mais aussi aussi en sortant directement de la fonction ainsi.
        Vu la simplicité de la fonction ça ne pose aucun problème de compréhension, mais est-ce que ce n'est pas dangereux (à éviter) d'avoir des returns éparpillés dans une fonction et directement dans le corps des boucles ?

Envoyer un commentaire

Suivre le flux des commentaires

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