utiliser - python pdf




Les meilleures façons d'apprendre à un débutant à programmer? (20)

Question d'origine

Je suis actuellement engagé dans l'enseignement de mon frère à programmer. Il est un débutant total, mais très intelligent. (Et il veut vraiment apprendre). J'ai remarqué que certaines de nos séances se sont enlisées dans des détails mineurs, et je ne me sens pas très organisée. ( Mais les réponses à ce post ont beaucoup aidé. )

Que puis-je faire de mieux pour l'enseigner efficacement? Y a-t-il un ordre logique que je peux utiliser pour parcourir concept par concept? Y a-t-il des complexités à éviter plus tard?

Le langage avec lequel nous travaillons est Python , mais les conseils dans n'importe quelle langue sont les bienvenus.

Comment aider

Si vous en avez de bons, veuillez ajouter ce qui suit dans votre réponse:

  • Exercices pour débutants et idées de projets
  • Ressources pour enseigner aux débutants
  • Screencasts / articles de blog / livres électroniques gratuits
  • Imprimez des livres qui sont bons pour les débutants

Veuillez décrire la ressource avec un lien pour que je puisse y jeter un coup d'œil. Je veux que tout le monde sache que j'ai certainement utilisé certaines de ces idées. Vos soumissions seront agrégées dans ce post.

Ressources en ligne pour l'enseignement des débutants:

Livres d'impression recommandés pour l'enseignement des débutants


Après avoir parcouru quelques livres électroniques gratuits, j'ai trouvé que le meilleur livre pour apprendre à programmer était Head First Programming publié par O'Reily Press. Il utilise Python comme langage et vous donne des programmes sur lesquels vous pouvez travailler dès le début. Ils sont tous plus intéressants que "Hello World". Il vaut bien l'argent que j'ai dépensé pour cela, et comme il a été sorti un peu, vous pourriez être en mesure de trouver une copie utilisée moins cher sur Ebay ou Amazon.


C'est un livre fantastique que mes petits frères avaient l'habitude d'apprendre:

http://pine.fm/LearnToProgram/

Bien sûr, le plus important est de commencer IMMÉDIATEMENT un programme réel et utile après avoir terminé le livre.


Fais juste plaisir!

Étonnamment Scala pourrait être le plus facile si vous essayez Kojo


J'ai appris en apprenant à résoudre les problèmes de manière agnostique en utilisant des organigrammes et PDL (Program Design Language). Après quelques semaines de cela, j'ai appris à convertir le PDL que j'avais écrit dans une langue. Je suis content d'avoir appris cela parce que j'ai passé la majorité de mes années à programmer, à résoudre des problèmes sans être lié à une langue. La langue que j'utilise a toujours été un détail d'implémentation et non une partie de la conception.

Devoir résoudre le problème en le décomposant en étapes de base est une compétence clé. Je pense que c'est une des choses qui sépare ceux qui peuvent programmer de ceux qui ne le peuvent pas.

En ce qui concerne la façon dont vous abordez l'ordre des concepts d'une langue, je crois que la façon la plus simple est de décider si vous avez un projet en tête et d'aborder les concepts tels qu'ils sont nécessaires. Cela vous permet de les appliquer comme ils sont nécessaires sur quelque chose que vous êtes intéressé à faire. Lors de l'apprentissage d'une langue, il est bon d'avoir plusieurs projets simples en tête et quelques-uns avec une complexité progressive. Décider de ceux-ci vous aidera à définir les concepts qui sont nécessaires et leur ordre.


J'avais l'habitude d'enseigner la programmation et votre frère a un avantage principal sur la plupart de mes étudiants qu'il veut apprendre :)

Si vous décidez d'aller avec C un ami a un site qui a le genre de programmes que ceux d'utilisation des générations plus âgées se rappellent comme des types de base. Le plus complexe d'entre eux utilise ncurses qui en quelque sorte nie leur utilisation comme un outil d'enseignement un peu, mais certains d'entre eux sont des petites choses minuscules et vous pouvez apprendre des charges sans être enseigné à.

Personnellement, je pense que Python et Ruby feraient d'excellentes langues maternelles.

EDIT: liste des affectations de programmation débutant apparu du jour au lendemain pourrait être juste ce que vous cherchez.


Je le laisserais écrire des tonnes de code. Laissez-le conduire dans tout ce que vous faites, et soyez disponible pour répondre aux questions.

Croyez-le ou non, après quelques mois d'écritures tonnes de code de merde, il va commencer à avoir l'idée et commencer à écrire de meilleurs programmes. À ce stade, vous pouvez vous embourber dans les détails (mémoire, etc.), et aussi parler des principes généraux de conception.

J'ai entendu dire que ce qui sépare les grands artistes des médiocres, c'est que chaque fois qu'ils pratiquent, ils améliorent quelque chose, aussi petit soit-il. Laissez votre frère s'exercer, et il s'améliorera chaque fois qu'il s'assoit au clavier.

Edit: [Justin Standard]

Esteban, cela me rappelle un poste d'horreur codé récent, et je pense que vous avez raison. Mais je pense qu'il vaut toujours la peine de trouver des méthodes pour guider sa pratique. Pas question, je veux qu'il écrive autant de code qu'il sait faire. C'est une raison pour laquelle je demande des exemples de projets.


Je pense qu'une fois qu'il a les bases (variables, boucles, etc), vous devriez essayer de l'aider à trouver quelque chose de spécifique qui l'intéresse et l'aider à apprendre les nécessités pour y arriver. Je sais que je suis beaucoup plus enclin et motivé à faire quelque chose si cela m'intéresse. Aussi, assurez-vous de le laisser se débattre avec certains des problèmes les plus difficiles, rien n'est plus satisfaisant que le moment où vous le comprendre par vous-même.


Je pense que Python est une excellente idée. Je lui donnerais quelques tâches de base à faire par lui-même et je lui dirais que toutes les impasses qu'il touche peuvent probablement être résolues par un voyage sur google. Pour moi, au moins, résoudre un problème par moi-même le rendait toujours mieux que quelqu'un qui me disait la solution.

Quelques projets possibles (sans ordre particulier):

  • Simulateur de pièce de monnaie. Laissez l'utilisateur entrer un nombre d'essais souhaité pour le retournement de pièces. Exécutez-le et affichez les résultats avec le pourcentage pour les têtes ou les queues.

  • Faire un convertisseur de température avec un menu qui prend l'entrée de l'utilisateur pour choisir quel type de conversion l'utilisateur veut faire. Après avoir choisi la conversion et le faire, il devrait revenir au menu principal.

    Voici un exemple de convertisseur étendu avec la même idée: http://pastebin.org/6541

  • Faire un programme qui prend une entrée numérique et affiche le grade de lettre qu'il traduirait. Il finira par évaluer l'entrée par rapport aux instructions if et elif pour trouver où elle va.

  • Faites un quiz simple qui passe par plusieurs choix multiples ou remplissez les questions vides. À la fin, il affichera comment l'utilisateur a fait. Il peut choisir toutes les questions qu'il veut.

  • Prenez une entrée d'un certain nombre (probablement grand) de penny et convertissez-le en plus grandes dénominations. Par exemple, 149 centimes = 1 dollar, 1 trimestre, 2 pièces de 10 cents et 4 centimes.

  • Créez un gestionnaire de liste simple. Etre capable d'ajouter / supprimer des listes et ajouter / supprimer des entrées dans ces listes. Voici un exemple de gestionnaire de liste de Noël: http://pastebin.org/6543

  • Créez un programme qui va construire et ensuite tester si les nombres entrés forment un carré magique (avec un tableau 2D). Voici un exemple de code, mais il devrait vraiment imprimer le carré à chaque étape afin de montrer où l'utilisateur est en termes de buliding le carré: http://pastebin.org/6544

Je suggère également de faire des choses avec xTurtle ou un autre module graphique pour mélanger les choses et l'empêcher de devenir ennuyeux. Bien sûr, c'est beaucoup de pratique et pas les scripts que beaucoup de gens utiliseraient vraiment pour python, mais les exemples que j'ai donnés sont directement tirés de l'apprentissage via python et ça a été très bien pour moi. Bonne chance!


Je vous recommande également de regarder des screencasts - ils sont généralement créés dans le contexte d'une technologie spécifique et non d'une langue, mais si le code Python est affiché, cela fera :). Le point est - ils sont créés par de bons programmeurs et en regardant comment de bons programmeurs de programmation est une bonne chose. Vous et votre frère pourriez aussi faire de la programmation par les pairs, ce qui pourrait être une meilleure idée. N'oublie pas d'expliquer pourquoi tu fais quelque chose comme ça et pas comme ça. Je pense que la meilleure façon d'apprendre la programmation est de bons exemples et d'essayer de ne pas voir les mauvais.


L'élément clé est que la personne en question doit avoir un problème qu'elle veut résoudre. Si vous n'avez pas un programme que vous voulez écrire (et quelque chose de sensé et bien défini, pas "Je veux écrire le prochain Quake!") Alors vous ne pouvez pas apprendre à programmer, parce que vous n'avez rien pour vous motiver . Je veux dire, vous pouvez lire un livre et avoir une compréhension approximative de la syntaxe et de la sémantique d'une langue, mais jusqu'à ce que vous ayez un programme que vous voulez écrire, vous ne pourrez jamais saisir l'ortie.

Si cet élan existe alors tout le reste n'est que des détails mineurs.


Quelque chose dont vous devriez être très conscient alors que vous apprenez à votre frère à programmer est pour lui de ne pas trop compter sur vous. Souvent, quand je me trouve à aider les autres, ils commencent à penser à moi comme un livre de réponses à toutes leurs questions et au lieu d'expérimenter pour trouver une réponse ils me demandent simplement. Souvent, le meilleur professeur est l'expérimentation et chaque fois que votre frère a une question comme "Qu'est-ce qui se passera si j'ajoute 2 à une chaîne?" vous devriez lui dire de l'essayer et de voir par lui-même. J'ai aussi remarqué que lorsque je n'arrive pas à faire passer un concept à quelqu'un, il est utile de voir un exemple de code dans lequel on peut regarder chaque segment individuellement et l'expliquer morceau par morceau. En guise de remarque, les novices en programmation ont souvent des problèmes avec l'idée d'une programmation orientée objet, ils diront qu'ils le comprennent quand vous leur apprenez, mais ils n'en auront pas un concept clair avant de l'avoir implémenté.


Robert Read a écrit un guide utile, Comment être un programmeur , qui couvre un large éventail de problèmes de programmation qu'un débutant trouverait utile.


Si votre frère a accès à iTunes, il peut télécharger des conférences vidéo d'un cours d'introduction à l'informatique dispensé par Richard Buckland à l'Université de Nouvelle-Galles du Sud. Il est un instructeur engageant et couvre les principes fondamentaux de l'informatique et le langage C. Si rien d'autre, dites à votre frère de jouer les vidéos en arrière-plan et certains concepts pourraient couler par osmose. :)

COMP1917 Higher Computing - 2008 Session 1 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444

Si le lien ne fonctionne pas, voici un chemin:

Accueil -> iTunes U -> Ingénierie -> COMP1917 Higher Computing - 2008 Session 1


Si votre frère aime les puzzles, je recommanderais Python Challenge . Je ne l'utiliserais pas comme un outil d'enseignement formel dans un tutoriel 1: 1, mais c'est quelque chose qu'il peut faire quand vous n'êtes pas ensemble pour vous mettre au défi et vous amuser.


Tout d'abord, démarrez comme tout le monde: avec un programme Hello World . C'est simple, et cela leur donne une idée de base de la mise en page d'un programme. Essayez de vous souvenir du moment où vous avez commencé à programmer, et de la difficulté de certains concepts. Commencez simplement.

Après Hello World, passez à la création de quelques variables de base, arithmétique, puis à la logique booléenne et aux instructions if / else. Si vous avez l'un de vos anciens manuels de programmation, consultez quelques-uns des premiers exemples et faites-les passer en revue. N'essayez simplement pas d'en introduire trop à la fois, sinon ce sera écrasant et confus.


Tu pourrais essayer d'utiliser Alice . C'est un programme 3D conçu pour être utilisé dans les classes de programmation d'introduction.

Les deux plus grands obstacles pour les nouveaux programmeurs sont souvent:

  • erreurs de syntaxe
  • motivation (écrire quelque chose de significatif et amusant plutôt que artificiel)

Alice utilise une interface glisser-déposer pour construire des programmes, évitant ainsi la possibilité d'erreurs de syntaxe. Alice vous permet de construire des mondes 3D et d'avoir votre contrôle de code (simple) en 3D et en animation, ce qui est généralement beaucoup plus intéressant que l'implémentation de listes liées.

Les programmeurs expérimentés peuvent regarder Alice comme un jouet et se moquer de faire glisser et déposer des lignes de code, mais la research montre que cette approche fonctionne.

Disclaimer: J'ai travaillé sur Alice.


http://tryruby.hobix.com/">Essayez Ruby (dans votre navigateur)


il y a un wikibook qui est plutôt bon pour apprendre Python .

Je ne sais pas comment les wikibooks sont pour d'autres langues, mais j'ai personnellement appris le python du wikibook tel qu'il était en février 2007

ps - si vous n'êtes pas familier avec les wikibooks , c'est essentiellement la version wikipedia de la création de livres. c'est un peu difficile à décrire, mais si vous consultez quelques-uns des livres, vous verrez comment cela fonctionne







language-agnostic