Python 3 pour l'apprenti sorcier.

Organisons-nous !

a marqué ce sujet comme résolu.

Salut !

Ce sujet a pour but d'organiser la rédaction du premier cours de ce projet, à savoir « Python 3 pour l'apprenti sorcier », dont la rédaction collaborative est menée sur ce dépôt GitHub.

Suite à une remarque pleine de bon sens dans les issues, il est clair qu'il faut qu'on définisse un plan, grâce auquel il sera plus facile d'avancer en parallèle…

D'abord, l'objectif du cours est de transmettre une bonne base à propos de la programmation Python, à des débutants complets. Je pense qu'on peut sainement se dire que cette "bonne base" correspond plus ou moins à ce qu'on peut attendre d'un élève d'ISN en Terminale (mais en carrément plus solide, évidemment1) :

  • Manipuler des variables, reconnaître les types de données (sans oublier que ce sont tous des objets) ;
  • Utiliser et écrire des fonctions (passage par référence, arguments optionnels, keyword arguments) ;
  • Connaître les structures de contrôle du flot d'exécution :
    • if/else,
    • while(/else),
    • for(/else),
    • try/except/finally(/else),
    • with ... (as ...);
  • Gérer les exceptions (sans forcément savoir définir des nouveaux types d'exception) ;
  • Manipulations simples sur des fichiers (lire/écrire dans un fichier, a minima en mode texte) ;
  • Manipuler les builtins (list, tuple, set, str,…) ;
  • Utiliser quelques fonctions (et objets) de la bibliothèque standard, aller piocher des infos dans la doc ;

En somme, être capable d'écrire un programme Python structuré (compatible avec un projet d'ISN). La limite haute du cours c'est le mot-clé class, qui marquera le début du cours suivant sur la conception et la programmation orientées objet : à la fin de ce cours l'apprenant a juste besoin de savoir utiliser des objets et savoir plus ou moins que tout est un objet. Ça fait déjà un bel éventail, j'en conviens.

Mettons-nous d'accord sur le plan. Une fois un consensus atteint, on pourra créer les issues correspondantes sur GitHub.

Voilà un premier jet du plan :

  1. Introduction

    • Généralités
    • Installation (à terminer)
  2. Premier contact avec la console interactive (déjà écrit)

    • premières notions de programmation (expression, sémantique, syntaxe)
    • manipulation rapide de chaînes et de nombres
  3. "Des noms et des objets" (déjà écrit)

    • Notion de variable
    • Notion de type: certains objets sont des données (str, int, float) et d'autres sont des actions (fonctions)
  4. Branchements confitionnels (entamé)

    • Booléens
    • prédicats (not, or, and)
    • if/else
    • while
  5. Collections

    • Listes
    • tuples,
    • dictionnaires
    • boucle for
    • opérateur in
  6. Fonctions

    • Définition d'une fonction (def, return)
    • arguments optionnels
  7. Gestion des exceptions

    • try/except/finally
    • raise (en se servant d'exceptions standard, style RuntimeError, ValueError…)
  8. Manipulation de fichiers

    • open()
    • read()/write()
    • itération sur un fichier en mode texte
    • with open(...) as monfichier:

Tout cela devrait évidemment être entrecoupé de TD/TPs qui seront d'abord des exemples détaillés, puis qui deviendront progressivement de simples cahiers des charges au fur et à mesure que le cours avancera.

Évidemment, rien n'est figé dans le marbre.

Qu'en pensez-vous ? Voyez-vous des oublis ? Avez-vous des remarques ? Suggestions ?


  1.  

+16 -0

J'ai parcours une petite partie du tutoriel : il est GÉ-NIAL ! Franchement, même si je suis plus débutant et que mon commentaire est du coup faussé, c'est super pédagogique ! Je vais bientôt te faire une PR pour quelques petites fautes d'orthographe. ;)

+2 -0

Je l'ai lu également pendant une insomnie et franchement c'est très bien écrit.

Le vocabulaire est à la fois vulgarisé ET adapté. En gros le cours fait souvent l'analogie entre un truc vulgarisé (une étiquette, un post-it) et le terme adapté (référence, …) c'est vraiment appréciable.

Ça part vraiment sur une très bonne voie.

En temps normal j'me serais contenté d'un +1, mais comme je me doute qu'il faut une méga dose de motivation pour venir à bout d'un tel sujet, me suis dit qu'il fallait l'exprimer.

Bon courage.

+5 -0

D'un côté, apprendre à manipuler les structures de base (listes, dictionnaires…) est essentiel et il est légitime d'inclure cela dans un tel cours. De l'autre, ça me semble aussi un bon moyen, dans un cours sur la programmation orientée objet, de fournir une compréhension pratique de ce qu'est un objet. J'ai vaguement esquissé une piste de plan1 ici.

Ca ne pose pas de problèmes si les deux cours sont lus à la suite mais, dans le cas contraire, un cours sur l'OOP commençant par les classes me semble un peu abstrait.


  1. Une piste d'ébauche de plan pour être exact. =P 

+0 -0

Je lis régulièrement ton cours, à côté des autres que j'ai déjà commencé (celui de Swinnen et celui de OC), je trouve que le tien est plus accrocheur que les autres, il demande beaucoup moins de volonté pour poursuivre la lecture :) !

Je t'encourage beaucoup à poursuivre.

Après, je pense qu'en toute fin du cours, une courte introduction à la POO serait intéressante et pousserait le lecteur à chercher plus loin et à continuer d'améliorer ses connaissances.

+1 -0

Merci !

En fait, la POO fait l'objet d'un tutoriel à part dans le parcours que l'on a prévu.

La raison principale, c'est que pour faire certaines choses avec Python (comme la programmation système) il n'y a absolument pas besoin de POO, du coup, autant conserver la base dans ce tuto et renvoyer vers le tuto POO pour ceux qui désirent continuer dans cette voie à la fin de celui-ci. :)

+0 -0

Une remarque qui m'est venu en parcourant le cours de Swinnen :

Lorsque tu proposes des TP (surtout ceux au départ), il serait bien d'indiquer si une fonction de la librairie standard de python fait le même job que ce qu'on doit recréer et s'il y en a une laquelle. Ça ferait à la fois prendre conscience à l'élève que ce qu'il écrit est probablement déjà mieux fait ailleurs si c'est une opération qui est souvent faite, mais aussi cela lui éviterait d'utiliser son propre code pour ses futurs projets, allégeant et clarifiant ainsi la lecture pour tous (et évitant potentiellement de nombreuses erreurs).
Par exemple en ISN, on demande un projet commun en fin d'année. Ce sera forcément un plus si les élèves utilisent le maximum d'outils à leur disposition et qu'en plus ils montrent qu'ils ont cherchés à maximiser leurs performances et leurs connaissances.

+4 -0

Il avance très peu, faute de disponibilité. L'écriture se déroule ici. Si tu souhaites participer, n'hésite surtout pas à te manifester dans une issue, histoire qu'on sache ce que tu prévois de faire. ^^

+0 -0

Est-ce juste GitHub, la plateforme, qui te pose problème ou également git, le gestionnaire de versions ? ^^

Dans tous les cas, tu peux toujours envoyer ton texte en MP à un rédacteur, lequel se chargera de faire la liaison avec GitHub. L'organisation se déroule ici.

+0 -0

C'est vrai que Git demande un coût d'apprentissage. J'en suis conscient. D'un autre côté il est aussi possible de modifier directement les fichiers sur GitHub.

Du reste, github (et le principe de pull-requests etc.) demande aussi un petit overhead d'apprentissage. Mais je pense que cette techno est tellement porteuse (et meilleure que la "concurrence") que cet apprentissage est un excellent investissement à court, moyen et long terme.

+0 -0

Juste je me proposais pour des tâches plus annexes comme des relectures ou autres

Dans ce cas-là, tu peux, je pense, te contenter de GitHub. Sans écrire du contenu à proprement dit, tu peux participer de plusieurs manières :

  • Intervenir dans les issues (y compris en créer) : ce sont des fils de discussion à travers desquels on s'organise.
  • Commenter les PR : c'est là que les auteurs proposent des modifications au niveau du texte. Un exemple de commentaire .
  • Ajouter des line notes : cela permet de commenter un point précis d'une PR. Tu as des exemples ici.

Mais, en effet, apprendre git (et GitHub) est un très bon investissement. Tu peux pour ce faire lire ce bouquin, gratuit (la version anglaise est très bien, donc j'imagine que celle française n'est pas trop mauvaise).

+2 -0
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