Cours de Python pour des collégiens (5e)

Recherche d'idées de projets et de T.P.

Le problème exposé dans ce sujet a été résolu.

Bonsoir à tous,

Je fais appel à votre imagination et à vos talents de programmeurs. À partir de la rentrée scolaire, je vais donner des cours de programmation à des collégiens en classe de 5e. Je ne connais pas tous les détails de ces cours, mais je sais qu'ils auront lieu à une fréquence d'une heure par semaine ; la chose que j'ignore est si j'aurai le choix du langage, mais je pense que oui. Le cas échéant, je choisirai le Python (impératif dans un premier temps) pour les raisons habituelles qui font que c'est un langage adapté pour une initiation à la programmation.

Mais je fais face à une difficulté. En effet, je suis à la recherche d'idées amusantes de T.P. et de projets à leur donner à faire. Il y a plusieurs difficultés. La première — mais qui fait aussi l'intérêt de ce projet ! —, bien sûr, vient du fait que le public sera composé de jeune collégiens, si bien que leur bagage scientifique sera restreint. C'est pour cela que j'ai du mal à trouver des idées. L'objectif, bien sûr, est de leur proposer un projet réalisable de manière autonome (ou en binôme) pour terminer les sessions de cours et de T.P.

C'est là que je bloque. J'ai déjà prévu, une fois que nous aurons travaillé sur les listes, de leur faire implémenter la formule de Luhn pour calculer le dernier chiffre d'un numéro de carte bancaire. J'ai aussi un nombre d'idées qui me semble suffisant pour agrémenter mon cours d'exercices, d'exemples et de T.P. Mais je n'arrive pas à trouver une idée pour le projet final. Idéalement, il faudrait que ça soit un minimum ludique (nous nous adressons à des adolescents ! :p ) et ne nécessite pas un bagage théorique trop conséquence. J'ajoute que nous travaillerons sur des programmes console dans un premier temps. J'ai donc pensé aux classiques pendu, casino, etc., mais j'aimerais bien quelque chose d'un peu moins planplan. :-°

Avez-vous des idées de génie ? o/ Merci par avance !

Salut,

Je prêche un peu pour ma paroisse, mais ça pourrait être intéressant de les faire utiliser turtle. Outre le fait que le module offre une fenêtre, il est plutôt simple à manipuler et ça offre pas mal de possibilités d'entraînements/exercices. Pour ce qui est des idées, je ne sais pas trop ce qui correspondrait pour que ça soit ludique. Y'a des idées pour t'inspirer sur le tutoriel et sur ce sujet.

C'est un peu vague, à toi de voir pour creuser si ça te va mais je pense que c'est bien adapté à la situation :P

Juste par curiosité, tu fais cet enseignement dans quel cadre ?

+2 -0

Turtle est une bonne idée.

Une autre idée un peu idiote mais marrante serait de leur faire faire un combat de pokemons au tour par tour. Ça me semble assez facile si on se contente de demander à l'utilisateur de choisir une action parmi une poignée et que l'on tire celle de l'ordi au sort.

C'est moins riche en termes d'algorithmique, mais ça demande d'organiser son code proprement (et ce n'est pas trivial), donc je n'ai toujours pas réussi à "tuer" cette idée d'un point de vue pédagogique, raison pour laquelle je te la soumets.

+1 -0

J'ai pensé à turtle. C'est une bonne idée, mais le problème est que ça force à apprendre beaucoup d'éléments syntaxiques qui ne font pas intrinsèquement partie du langage, du coup il va probablement falloir un temps considérable avant de pouvoir l'introduire. Or, j'ai peur que mon auditoire ne décroche bien avant cela en l'absence d'idée rigolote.

Mais effectivement, de toute manière je parlerai de turtle à un moment ou à un autre.

Juste par curiosité, tu fais cet enseignement dans quel cadre ?

Un collège/lycée pas très loin de chez moi souhaitait mettre en place des cours de programmation pour ses élèves avec pour objectif de leur donner des cours de la cinquième à la terminale. L'établissement a choisi une petite vingtaine d'élèves intéressés et a cherché quelqu'un pour assurer ces cours, car ils n'avaient personne dans leur équipe en mesure de les assurer. Je me suis porté candidat (j'étais probablement le seul :-° ) et j'ai décroché le poste.

Une autre idée un peu idiote mais marrante serait de leur faire faire un combat de pokemons au tour par tour. Ça me semble assez facile si on se contente de demander à l'utilisateur de choisir une action parmi une poignée et que l'on tire celle de l'ordi au sort.

C'est moins riche en termes d'algorithmique, mais ça demande d'organiser son code proprement (et ce n'est pas trivial), donc je n'ai toujours pas réussi à "tuer" cette idée d'un point de vue pédagogique, raison pour laquelle je te la soumets.

C'est une bonne idée, je vais y réfléchir. Ce n'est pas grave que du point du vue algorithmique, ce soit rudimentaire, car je pensais plutôt garder la partie algo pour les séances de T.P. et d'exercices. Pour un projet autonome, l'algorithmique pure me paraît un peu trop rébarbative.

Modification — Corrections orthographiques.

L'avantage quand il s'agit de volontaire, même s'ils sont encore jeunes et peuvent vite changer d'idée, c'est que c'est généralement plus facile de les captiver.

Sinon je pense que des petits jeux simple et textuel avec pas mal d'interaction entre le programme et l'utilisateur comme un pendu, un morpion, un puissance 4, des trucs assez simpliste.

Tu pourrais aussi t'inspirer de site d'exercices comme France-IOI (les premiers sont assez simples et ludiques).

Le jeu du shifumi, avec tkinter, juste un affichage des images dans un canvas avec comptage des points. Avant on peut le faire par affichage simple en console pour avoir quelques notions de base comme le tirage au sort d'un élément dans une liste d'éléments.

Après, il n'y a pas forcément besoin de beaucoup de fonctions quand on utilise turtle. Tu peux par exemple tracer des figures assez simplement, ce qui peut être une bonne introduction. Et puis, petit à petit, tu peux proposer des exercices plus complexes faisant intervenir d'autres fonctions introduites pour l'occasion. Si tu regardes mon tutoriel, c'est un peu la marche suivie : on commence en douceur (avec la configuration qui n'est pas forcément nécessaire) et on développe petit à petit.

Je ne pense donc pas que la barrière syntaxique se justifie. Et puis, pas besoin de tout connaître par cœur, tu peux leur donner un petit pense-bête répertoriant les fonctions utiles si besoin, ou les écrire dans les énoncés.

C'est vraiment sympa en tout cas. Tu auras combien d'heure par semaine pour leur faire ton enseignement ?

+0 -0

C'est vraiment sympa en tout cas. Tu auras pas semaine pour leur faire ton enseignement ?

Plaît-il ? :-'

Pour turtle, il faut que j'y réfléchisse. En fait, ça rendre un peu en conflit avec l'organisation à laquelle j'avais réfléchi, ce qui n'est pas pour m'arranger. En outre, je ne sais pas si l'établissement acceptera que je commence par le Python. Au départ, ils avaient pour idée de commencer par le C, et je n'ai pas encore vu avec eux s'il était envisageable de changer. Du coup, je cherche des idées idéalement assez génériques pour être exploitables dans différents langages.

Le jeu du shifumi, avec tkinter, juste un affichage des images dans un canvas avec comptage des points. Avant on peut le faire par affichage simple en console pour avoir quelques notions de base comme le tirage au sort d'un élément dans une liste d'éléments.

fred1599

Très bonne idée, j'en prends bonne note ! Merci beaucoup.

Justement, le volume horaire prévu est assez bas : 1 h/semaine.

Avec ce volume horaire, la progression risque d'être assez lente. L'idée des combats (Pokémon ou autres) me plaît bien. Sur les conseils de fred1599, j'ai regardé sur France IOI et j'ai trouvé ça et ça. Ça me plaît bien, qu'en pensez-vous ?

Tu n'as plus qu'à vérifier les pré-requis, jouer avec la console, créer des exercices liés au projet pour que lorsque vous ferez ensemble le projet, ils ne soient pas perdu.

Beaucoup de pratiques, peu de théorie, l'apprentissage théorique via la pratique, c'est le top !

Sur les conseils de fred1599, j'ai regardé sur France IOI et j'ai trouvé ça et ça. Ça me plaît bien, qu'en pensez-vous ?

c_pages

J'allais te proposer de regarder les archives d'Algorea, justement. A priori c'est assez adapté aux collégiens (entre les premiers tours et les demi-finales, y en a pour tous les niveaux). Sur ces exos-là y a un petit jeu de fonctions adapté qui vient avec, ça paraît être un bon compromis par rapport aux grosses libs qui nécessitent beaucoup d'éléménts de langage. En plus c'est bien de découvrir l'algo à cet âge. :)

Je pense justement qu'on ne sort pas de l'aspect ludique. Déjà ce sont des exos créés (pour les plus récents, disons) dans la continuité du concours Castor, donc les 5e sont justement le public visé. Ça me surprend que ça soit classifié dans de « l'algo pure rébarbative », mais bon…


Ceci dit je n'avais pas vu que c_pages faisait une différence entre cours et TP. Du coup je ne comprends pas vraiment en quoi peut constituer un cours à ce niveau-là, et encore moins si on y incorpore un projet ?

Oui effectivement sur Algorea et IOI il y a de bonnes idées. Ce que je voudrais surtout éviter, ce sont des choses du type algos de tri généraux, ou reprogrammation des fonctions de la bibliothèque standard. Bref, j'aimerais bien éviter le cours habituel des universités, en gros.

Pour ça, mélanger des Algorea et des IOI avec des choses plus funs du type pierre-feuille-ciseau ou combat Pokémon me semble chouette.

Un truc tout bête aussi à partir du moment ou ils ont vu les conditions c'est une histoire interactive en console, un peu à la manière des livres dont vous êtes le héros (l'histoire évolue en fonction des choix du joueur parmi une liste d'actions possibles). L'avantage étant que ça fait appel à leur imagination et qu'ils font chacun un jeu différent et peuvent échanger entre eux. Je me dis que ça peut être pas mal au départ pour bien expliquer les conditions.

+1 -0

Pour les tous premiers TP, peut-être un calculateur d'âge, sous plusieurs formes ? Par exemple, en rentrant sa date de naissance, on aurait son âge en années, en jours, en années décimales (12,52 ans par ex.)…

Ça reste rudimentaire, mais ça peut faire une bonne introduction. Ils verraient leur âge autrement que comme un simple nombre à deux chiffres (12 ans, ça fait 4483 jours), et ils pourraient s'initier aux calculs mathématiques.

+1 -0

Voici 2 premiers jeux simples qui me paraissent adaptés pour des élèves de 5ème.

Jeu n°1 : Demander au joueur de taper l'alphabet (dans l'ordre ;) ) le plus vite possible. On va donc chronométrer le temps entre le A et le Z. Chaque faute de frappe peut être éliminatoire, ou générer un malus (1 sec. par faute). Et dans un 2ème niveau, le joueur doit taper l'alphabet, mais à l'envers, de Z à A.

Jeu n°2 : Jeu de mémorisation.

Le programme affiche 3 lettres pendant 1 seconde, le joueur doit taper ces 3 lettres, dans l'ordre.

Puis le programme affiche 4 lettres (les 3 lettres de l'étape 1, plus une 4ème aléatoire), toujours pendant 1 seconde, et le joueur doit taper les 4 lettres, dans l'ordre.

Et ainsi de suite tant que le joueur ne fait pas d'erreur.

Si tu veux exploiter l'idée à fond, dans un 2nd temps, pour un jeu ou un autre, les scores seront écrits dans une base de données centrale, avec gestion des pseudos, et affichage du classement.

La formule de Luhn me semble loin des préoccupations d'un gamin de 5ème. Le calcul du check-digit d'un EAN-13 me paraît un peu plus concret, à condition de prévoir quelques produits concrets pour vérifier les calculs.

Mais, que ce soit la formule de Luhn ou le check-digit, l'intérêt pédagogique, c'est de leur expliquer POURQUOI on a ces formules de contrôle.

Autre programme possible : Le crible d'Eratosthène. Il faut se coordonner avec le prof de maths… mais, si cette notion de nombre premier est bien au programme de 5ème, le rapprochement entre les 2 matières est un bonus indéniable.

+1 pour le convertisseur d'age c'est simple et en plus les conversations de tout type sont au programme de math de 5e

LudoBike

Même pour des 5ème, ça prendra 3 minutes à faire ça, limite un petit exercice pour préparer au projet, et découvrir quelques petites notions, comme input et int, sinon je vois pas la plus-value en tant que projet.

Je continue à penser qu'il faudra un travail avec une partie graphique, c'est important que l'élève voit le fruit de son travail par l'image et non écrit dans une console…

Turtle est sympa, on pourrait par exemple dessiner un dessin sympa à l'aide de coordonnées définies préalablement par le professeur.

Pour les nombres premiers pas de bol, c'est la 3ème (page 372)… mais sur le principe faire des cours de programmation pour se retaper des maths, ça va en gaver pas mal !

Ça reste rudimentaire, mais ça peut faire une bonne introduction. Ils verraient leur âge autrement que comme un simple nombre à deux chiffres (12 ans, ça fait 4483 jours), et ils pourraient s'initier aux calculs mathématiques.

rezemika

Faire de l'informatique pour faire des mathématiques, c'est motivé la moitié des élèves à ne plus choisir cette branche, malgré que se soit un facteur pour ce métier, ça en reste pas moins des 5ème avec des notions très basiques et frileuses dans cette matière.

Mouais. Je rejoins quand même c_pages sur l'idée qu'en 5e, il vaut mieux axer son cours sur l'aspect ludique. Surtout dans le contexte d'un cours au collège !

nohar

Le ludique c'est toujours mieux, mais c'est pas toujours possible malheureusement…

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte