Journal Apprentissage du code par la pratique

Posté par (page perso) . Licence CC by-sa
Tags : aucun
20
2
mar.
2015

Cher journal,

Il y a quelques jours avec mon pote Loick on s'est mis en tête de concocter quelques exos de programmation à but pédagogique et tournés vers la pratique du code (on bosse tous les deux chez CodinGame). On s'est donc lancé dans ce mini-projet parce que l'idée nous bottait bien et parce que la plate-forme nous semble appropriée pour mettre les mains dans le cambouis rapidement. Pour essayer, on a fait deux exos, chacun dans leur style et j'aimerais les partager avec vous pour savoir ce que vous en pensez :

L'idée c'est de savoir si ça de l'intérêt d'en faire d'autres. Vos retours, idées et critiques sont donc les bienvenues :-)

Merci !
Frédéric

  • # exemple de la vrai vie

    Posté par . Évalué à 10.

    On a très rarement à écrire ce genre d'algo dans la vrai vie de programmeur. Il s'agit surtout de coller des morceaux entre eux de façon la moins sale possible.

    Peux être que la mise en œuvre des design patterns classiques pourrait être une bonne façon d'apprendre.

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

  • # Chiffres ≠ Entiers

    Posté par (page perso) . Évalué à 8.

    Quelques remarques sur le premier exo :
    - Chiffres ≠ Nombres (ou Entiers) : ça m'a piqué deux fois les zoreilles. Certes, on peut trier les chiffres aussi, mais je pense que "nombres" est le bon mot à utiliser (ou "entiers"). C'est le prof2math qui parle ; c'est important.
    - Je n'ai pas vu les contraintes dans la description de la tâche. Je suis Modo sur SPOJ ; un site anglophone d'apprentissage d'algo, très utilisé (bon OK pas trop en France) ; on impose les contraintes claires dans les descriptions. C'est important pour les habitudes.
    - la prise de son est moyenne (pas pourave non plus) ; il semble que cela manque de meubles dans la pièce ; ou tout autre artefact pour étouffer le retour.
    - Je pense que la vidéo devrait faire défiler la sortie attendue pour l'exemple en incrustation (genre en haut à droite) ; c'est pas trop dur.
    - Je pense qu'il faudrait prendre parti avant (ou après, mais pas pendant) l'exemple sur les deux optis. À savoir 1) théorème : À chaque étape le dernier du tableau est en place, donc le prochain tableau à trier sera plus court d'une case. 2) On peut arrêter si une passe se fait sans tri. (Mon avis est de proposer 1) avant l'exemple, et 2) après, en option.
    - Je reconnais que c'est pas facile de donner une consigne simple et claire sans donner en Français l'algorithme direct…

    Ce journal m'a bien plu, d'ailleurs je me connecte, plusse et commente !
    Il m'intéresse car je cherche tout ce qu'on peut proposer aux plus jeunes pour apprendre à programmer. C'est un peu l'avenir (sortez les violons s'il vous plaît). Et votre proposition est excellente.
    Dès 12 ans (en gros), je conseille FranceIOI pour mes bons élèves, sur leur temps libre. Ça passe tranquille ; on en discute lors de quelques récrés. Ils avancent lentement, mais sûrement.
    Pour ceux qui sont plus grands et plus matheux, mon conseil serait les premiers exos de Project Euler puis ceux de SPOJ, mais il y a un trou, une abysse à combler entre grands débutants et les "moyens". Les classiques de Coding Game me semble encore plus durs même.

    Je vais même essayer de faire manipuler ces gobelets-chiffrés (ou numériques) par mes petits protégés lors d'activités extra-scolaire (on part en classe de neige, et on s'occupe de tout, des veillées en particulier…) ; on verra le résultat. Je demanderai à tous d'écrire sur papier les étapes, sans référence à un langage de programmation. Ensuite, à ceux qui connaissent Python, je peux leur demander de faire la traduction des "consignes" en Python.

    J'ai hâte de voir d'autres exemples simples. Je suis sûr qu'il y a une niche.
    Mon avis est que l'ÉN devrait elle même la combler (créer non seulement une structure d’accueil, mais financer la production de contenu), mais ça c'est un débat éthique/politique/financier, et en attendant je prends ce qu'il y a de bon.

    • [^] # Re: Chiffres ≠ Entiers

      Posté par (page perso) . Évalué à 2.

      Merci Francky pour ces commentaires très instructifs. J'ai volontairement omis la section "contraintes" dans l'intention de lever la barrière à l'entrée.
      Si vous avez des idées de contenu, je suis preneur !

      • [^] # Brain Fuck

        Posté par (page perso) . Évalué à 1.

        Je connais des gens qui pratiquent le Brainfuck ; là les contraintes sont indispensables.
        Je vois qu'il n'est pas disponible sur Coding Game, ça ne me manque pas perso.
        Pour les autres langages, je suis d'accord, ici c'est pas gênant.

        Notez pour ceux qui veulent ce genre de jeu, avec animation, il y a l'excellent Cargo Bot : parfait pour s’affûter en récursivité vicieuse.

  • # Sujet 2 : chemin le plus court

    Posté par (page perso) . Évalué à 3. Dernière modification le 02/03/15 à 18:36.

    Dans la description :

    Ou tout simplement utiliser les librairies de votre language.

    Je pense à : Ou tout simplement utiliser les bibliothèques de votre langage.

    L'idée de donner des liens Wikipédia est très bonne.
    Cela peut aider avant la résolution.
    Je propose d'ajouter PE81, mais aussi 82, 83 en guise de liens pour ceux qui ont réussi.
    Une fois résolu, on a accès aux solutions de ceux qui partagent, ce qui permet d'apprendre beaucoup. Je dis pas que tous les commentaires sont pertinents, d'ailleurs ils sont à noter…
    Personnellement j'ai appris énormément grâce à ça.

    FranceIOI propose une solution officielle à chacun de ses exercices (je ne suis pas toujours fan du style). Prévoyez-vous d'en faire autant ?
    Cela me semble toutefois très important, car on peut réussir avec un code tout pourave, puis lire un code solution bien plus claire, éventuellement avec quelques variantes qui proposent des astuces.

    Mon avis sur le sujet : très bien, mais il manque de nombreux exercices bien plus simples. Ceux qui ont déjà ce niveau-là ont déjà beaucoup de sujet à faire, les débutants complets ont en moins. La niche est là, je pense.

  • # Idées de contenu

    Posté par (page perso) . Évalué à 2.

    J'aimerais voir des exos ultra-simples en français adaptés aux plus jeunes.
    Je pense que SPOJ n'est pas le bon lieu pour ça, que Coding Game a un potentiel attractif intéressant sur sa forme.

    En guise d'exemples, je pense que reprendre le programme de maths collège à partir de la 5ème, et adapter de nombreux cas.

    Ex1 : Donner une expression littérale dans la description (genre 5x + 3y - z) et donner en entrée les paramètres (x, y, z). Évaluer, afficher.
    (objectif : utiliser des variables)

    Ex2 : le même mais avec deux expressions littérales (données en description), pour les mêmes paramètres.
    (objectif : utiliser des variables, et espérer qu'on utilise pas x pour le premier calcul!!!)

    Ex3 : test d'égalité. En description, donner par exemple x(3x - y) = 6z - y. Trois paramètres en entrée.

    Ex4 : première boucle. Donner une expression littérale en description à un seul paramètre (genre 3x(x + 3) ), et N en entrée.
    Afficher le calcul de l'expression pour n allant de 0 (inclus) à N (exclus).

    Ex5 : premier 'tant que' : Donner une équation à une inconnue, et garantir qu'elle a une solution entière positive (pas trop grande), la trouver.
    (voir aussi les idées, sur feuille3, du lien en dessous)


    Oui tout cela à l'air hyper simple, mais c'est qu'il faut pour commencer pour les tous petits.

    Il y a quelques années, j'avais écrit en LaTeX une initiation à Python3, c'était autant un exercice pour moi qui venait d'apprendre LaTeX que Python, qu'une proposition de premier cours accessible. J'étais très content du résultat, des amis ont commencé avec. Mais c'était trop perso et discutable sur de nombreux points.

    Aujourd'hui, j'aimerais refaire ça, mais pas en pdf, plutôt sur en HTML hébergé sur du durable, avec comité de lecture (donc pas tout seul),…
    Les exos pourraient être ceux de Coding Game. Le cours pourrait se décliner en Python, mais aussi en C, C++ et autres.
    Je tiens absolument au caractère libre de la solution, et si possible avec l'ÉN (oui le mammouth).

    Entre temps, j'ai bossé pour avoir l'agreg, maintenant que c'est fait, je suis disposé à aider pour un tel projet.

  • # Mon avis

    Posté par (page perso) . Évalué à 3.

    J'ai testé les deux exercices et voici donc mon avis :

    Concernant le tri à bulle, je suis assez sceptique sur l'usage de la vidéo : faire une vidéo demande beaucoup de travail et je me demande comment vous allez gérer les différentes langues… S'il faut faire 3-4 vidéos à chaque fois, bon courage ! En plus ici le concept est très simple mais cela ne sera pas toujours évident à faire. Autre point concernant la vidéo : c'est très difficile de s'adapter à la vitesse de compréhension de celui qui découvre, en cela, je trouve l'utilisation d'animations courtes et de texte plus intéressante.

    Le second exercice sur le plus court chemin est selon moi beaucoup plus intéressant. Alors ce n'est pas parfait, mais pour moi la forme est plus pertinente. Mais surtout, surtout, vous utilisez vraiment ce qui fait la force de CodinGame à savoir l'exécution visuelle du code. Pourquoi ne pas avoir fait la même chose avec les gobelets pour le tri ? Demander à l'utilisateur les indices des cases à intervertir et observer les 2 gobelets se croiser, on peut aussi ajouter une façon de récupérer une valeur si on a pas appris à utiliser les tableaux. Là ce serait vraiment cool, on verrait visuellement ses erreurs ! D'un point de vue pédagogique ce serait vraiment innovant et cela rajouterait une vraie valeur ajoutée.

    Je suis un habitué de France-IOI mais je regrette le côté peu ludique du site qui doit décourager beaucoup de monde (cela s'arrange avec les exercices Algorea). Au contraire, CodinGame apporte du visuel et pourrait devenir une plate-forme intéressante pour apprendre les bases de la programmation (ou même de l'informatique de manière générale). Mais pour cela, il faut vraiment utiliser au maximum les capacités offertes par votre plate-forme. J'ai déjà en tête plein d'exercices possibles (tous les classiques en algo + les structures de données les plus classiques + le fonctionnement interne d'un ordinateur).

    Et sur le fond, cela peut participer à faire connaître votre site et à former des jeunes qui vont ensuite naturellement participer aux concours. Donc cela me semble pertinent :).

    • [^] # Re: Mon avis

      Posté par (page perso) . Évalué à 1.

      +1000 pour l'animation.
      J'ai appris à coder il y a fort fort longtemps sur un 8086, en Turbo PASCAL, (j'ai presque honte).
      M'enfin, mon meilleur souvenir, c'était de trier la mémoire vidéo avec différents tris. (Oui on avait accès à ça, en lecture/écriture). Du coup on avait l'animation du tri des caractères ASCII qu'on y mettait. (Il y avait le mode texte pour la mémoire vidéo!) Et non, ce n'était pas instantané, on n'avait pas besoin de mettre de 'delay' entre chaque étape.

      Ces animations ont participé grandement à ma compréhension des différents algorithmes de tri.
      Il faut jouer là-dessus au maximum, pour le côté pédagogique, comme pour le côté ludique.

      Pour la vidéo, je rejoins le commentaire. Mais sans la faire disparaître, elle pourrait se contenter, sans parole, d'exécuter la consigne avec les gobelets, et d'incruster au fur et à mesure la sortie en haut à droite. Les consignes étant décrites avant (et/ou après), chacun peut les lire à son rythme.

  • # Intéressant

    Posté par (page perso) . Évalué à 7.

    Pour ma part je trouve l'approche de la vidéo très intéressante en cela qu'elle permet de rendre l'algorithme concret en manipulant ses étapes et met en évidence l'aspect répétitif du processus. De cela on comprend l'intérêt de l'automatiser et son implémentation n'est plus qu'une traduction des manipulations que l'on a faites. La complexité de l'algorithme se retrouve dans la quantité de mouvements faits et on peut donc même comprendre qu'un algorithme est plus efficace qu'un autre juste en les déroulant. C'est un exercice qui me semble tout à fait adapté à la découverte de l'algorithmique et de la programmation.

    Comme suggéré dans un commentaire précédent je pense aussi que le visualiseur serait le bienvenu sur le premier exercice. Avec la vidéo pour voir les étapes attendues et le visualiseur pour voir les étapes que l'on fait, cela me semble une bonne combinaison.

    Puis-je suggérer de tourner les vidéos dans la remorque d'un camion avec des maquettes en carton pâte ?

  • # Langue des commentaires

    Posté par . Évalué à 2.

    Étant donné que ce type d'exercice s'applique très bien à des débutants, il est possibles que ceux-ci soient trop jeune pour comprendre couramment l'anglais. La vidéo étant en français, j'aurais trouvé super que les commentaires le soient aussi. Je pense qu'une entrée supplémentaire dans la barre à droite permette de choisir la langue (entre anglais et français – français sélectionné par défaut), en plus du type d'éditeur et du langage de programmation.
     

    Je comprends tout à fait l'intérêt d'apprendre à programmer en anglais (je suis en 2ème année en école d'ingé d'info), mais typiquement si je veux initier mon petit frère de 12 ans à la programmation, il m'est impossible de lui présenter quelque-chose qui contiendrais trop d'anglais (quelques boutons en anglais ce n'est pas grave, mais les consignes c'est important).


    Il y a des vidéos de danse qui illustre les différents tris sur youtube
    https://www.youtube.com/results?search_query=sort%20dance

    bépo powered

    • [^] # Re: Langue des commentaires

      Posté par . Évalué à -1.

      Je comprends tout à fait l'intérêt d'apprendre à programmer en anglais (je suis en 2ème année en école d'ingé d'info)

      Pour ma part, je préfère du français à de l'anglais baragouiné à l'écrit.

      Parce que après non seulement il faut traduire le code pour le comprendre, mais en plus il faut traduire de l'anglais d'abord… Pourquoi pas rajouter du XML et du Java par dessus ?!

      "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

      • [^] # Re: Langue des commentaires

        Posté par . Évalué à 1.

        Si c'est du franglais mal traduit, c'est sur que je préfèrerai avoir du français. Par contre si c'est de l'allemand mal traduit, ça sera infiniment plus simple pour moi que de l'allemand pas traduit du tout. C'est donc à mon sens une bonne chose d'apprendre une langue commune, et il se trouve que c'est l'anglais actuellement pour l'informatique.

        Sinon tu es allé voir les vidéos ?

        bépo powered

Suivre le flux des commentaires

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