324 votes

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

Question D'Origine

Je suis actuellement engagés dans la formation de mon frère au programme. Il est un débutant, mais très intelligent. (Et il veut réellement apprendre). J'ai remarqué que certains de nos séances ont obtenu de s'enliser dans des détails mineurs, et je ne crois pas que j'ai été très bien organisé. (Mais les réponses à ce post a beaucoup aidé.)

Que puis-je faire de mieux pour lui enseigner de manière efficace? Est-il un ordre logique que je peux utiliser pour exécuter par le biais de concept par concept? Existe-il des complexités que je devrais éviter à plus tard?

La langue que nous travaillons avec Python, mais des conseils dans n'importe quelle langue est la bienvenue.


Comment les Aider

Si vous avez des bons veuillez ajouter la ligne suivante dans votre réponse:

  • Débutant Exercices et des Idées de Projets
  • Des ressources pour enseigner aux débutants
  • Screencasts / blogue / livres électroniques gratuits
  • Imprimer les livres qui sont bonnes pour les débutants

Veuillez décrire la ressource avec un lien afin que je puisse prendre un coup d'oeil. Je veux que chacun sache que j'ai certainement été à l'aide de certaines de ces idées. Vos contributions seront rassemblées dans ce post.


Ressources en ligne pour enseigner aux débutants:


Recommandée pour l'Impression des Livres pour enseigner aux débutants

118voto

Eric Haskins Points 4214

J'ai eu à travailler avec plusieurs débutant (n'a jamais écrit une ligne de code) les programmeurs, et je vais faire après l'école atelier avec les élèves de l'école secondaire à l'automne. C'est la chose la plus proche que j'ai de la documentation. C'est toujours un travail en cours, mais j'espère que cela aide.

1) FizzBuzz. Commencer avec des programmes en ligne de commande. Vous pouvez écrire des jeux amusants, ou des outils, très rapidement, et vous apprendre toutes les fonctionnalités de la langue très rapidement sans avoir à apprendre les outils d'interface graphique en premier. Ces premières applications devraient être suffisamment simple pour que vous n'aurez pas besoin d'utiliser de vrais outils de débogage pour les faire travailler.

Si rien d'autre choses comme FizzBuzz sont de bons projets. Les premières applications devraient pas avoir à traiter avec DBs, système de fichiers, la configuration, ect. Ce sont des concepts qui vient de confondre la plupart des gens, et quand vous êtes juste à l'apprentissage de la syntaxe et de la structure de base des fonctionnalités que vous n'avez vraiment pas besoin de plus de complexité.

Certains projets:

  • Bonjour Tout Le Monde!
  • Prendre une année de ma naissance, et de calculer mon âge (juste (maintenant - alors) pas de mois corrections). (un simple calcul, entrée, sortie)
  • Demandez une direction(Haut, bas, gauche, droite), puis indiquer à l'utilisateur de leur sort (tomber dans un trou, trouver un gâteau, ect). (La logique booléenne)
  • FizzBuzz, mais compter une fois chaque seconde. (Boucles, des minuteries et plus logique)
  • En fonction de leur âge, certains vraiment comme une application qui appelle les utilisateurs aléatoire insulte à un certain intervalle. (Boucles, des tableaux, des minuteries et aléatoire si vous faites l'intervalle aléatoire)

2) Projet Simple, une Fois qu'ils ont une bonne connaissance de la langue de fonctionnalités, vous pouvez créer un projet(simple, amusant jeux fonctionnent très bien.). Vous devriez essayer d'avoir le premier projet à être en mesure d'être terminé dans les 6 à 12 heures. Ne pas passer du temps à l'architecte dès le début. Permettez-leur de la conception, même si elle les suce. Si elle tombe en morceaux, parler de ce qui s'est passé et pourquoi elle a échoué, puis choisir un autre sujet et commencer à nouveau.

C'est là que vous commencez à introduire les fonctions de débogage de vos outils. Même si vous pouvez voir le problème en lisant le code que vous devez leur enseigner comment utiliser les outils, puis montrez-leur comment vous avez pu le voir. Qui sert le double objectif de l'enseignement des outils de débogage et de l'enseignement sur la façon d'erreurs d'identification, sans outils.

Une fois, ou si le projet est fonctionnel, vous pouvez l'utiliser pour introduire le refactoring. Ses bon si vous pouvez ensuite développer le projet avec des fonctions simples qui vous n'avez jamais prévu pour. Cela signifie généralement refactoring et significative de débogage, depuis très peu de gens écrivent même la moitié décent code de leur première fois.

Certains projets:

  • Jeu du pendu
  • Expérimenter avec la robotique(Vex et Mindstorms sont les options)

3) Projet Réel de Démarrer un projet réel qui peut prendre un certain temps. Utilisation appropriée de contrôle à la source, et assurez-vous d'avoir un planning. Exécuter ce projet comme un véritable projet, si rien d'autre de sa bonne expérience d'avoir à traiter avec les outils.

Évidemment, vous devez ajuster pour chaque personne. La chose la plus importante que j'ai trouvé est de faire même la première des applications simples qui s'appliquent à ce que la personne qui l'intéresse.

Certains projets:

  • Tetris
  • Texte fichier basé sur le moteur de blog
  • Plus avancées de la robotique de travail

42voto

Teifion Points 20581

J'ai récemment écrit un article intitulé Comment enseigner la programmation de votre petite amie , il a peu à faire avec les copines et tout sur l'enseignement de quelque chose de technique à quelqu'un qui ne le comprend pas.

On me dit que c'est aussi drôle.

30voto

Jason Pratt Points 4782

Vous pouvez essayer d'utiliser Alice. C'est un programme 3D conçu pour une utilisation dans le cours d'introduction de la programmation des classes.

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

  • les erreurs de syntaxe
  • motivation (écrit quelque chose de significatif et de plaisir plutôt que fictive)

Alice utilise une interface de glisser-déposer pour la construction de programmes, de manière à éviter la possibilité d'erreurs de syntaxe. Alice vous permet de créer des mondes en 3D et avoir votre code de contrôle (simple) de personnages 3D et de l'animation, qui est généralement beaucoup plus intéressante que la mise en œuvre de listes chaînées.

Les programmeurs expérimentés peuvent regarder vers le bas à Alice comme un jouet et se moquer de glisser les lignes de code, mais la recherche montre que cette approche fonctionne.

Avertissement: j'ai travaillé sur Alice.

28voto

Magus Points 529

Je recommande Logo (alias la tortue) pour obtenir les concepts de base vers le bas. Il fournit un bon bac à sable avec immédiate des informations graphiques, et vous pouvez demostrate boucles, variables, les fonctions, les conditions, etc. Cette page fournit un excellent tutoriel.

Après le Logo, passer à Python ou Ruby. Je recommande Python, comme il est basé sur ABC, qui a été inventé dans le but de l'enseignement de la programmation.

Lors de l'enseignement de la programmation, je dois deuxième EHaskins la suggestion de projets simples, puis des projets complexes. La meilleure façon d'apprendre est de commencer avec une solution définitive et mesurable étape. Il maintient les leçons axées, permet à l'étudiant de développer les compétences et de mettre à profit ces compétences, et donne à l'élève quelque chose à montrer à vos amis. Ne sous-estimez pas le pouvoir d'avoir quelque chose à montrer pour le travail.

Théoriquement, vous pouvez coller avec Python, Python, il est possible de presque tout faire. C'est un bon véhicule pour enseigner la programmation orientée objet et la plupart des algorithmes. Vous pouvez exécuter Python en mode interactif comme une ligne de commande pour obtenir une idée de comment cela fonctionne, ou d'exécuter des scripts entiers à la fois. Vous pouvez exécuter vos scripts interprétés à la volée, ou de les compiler dans des fichiers binaires. Il y a des milliers de modules pour étendre les fonctionnalités. Vous pouvez faire un graphique de la calculatrice comme celui fourni avec Windows, ou vous pouvez faire un client IRC, ou quoi que ce soit d'autre.

XKCD décrit Python de puissance, un peu mieux: "You're flying! How?" "Python!"

Vous pouvez passer à C# ou Java, après que, bien qu'ils n'offrent pas beaucoup que Python n'a pas déjà. L'avantage de ces derniers est qu'ils utilisent les C-la syntaxe de style, que beaucoup (oserais-je dire de plus?) d'utilisation des langues. Vous n'avez pas besoin de s'inquiéter à propos de la gestion de la mémoire, mais vous pouvez s'habituer à avoir un peu plus de liberté et moins de l'assistance de l'interprète de langage. Python applique des espaces et la mise en retrait, ce qui est agréable la plupart du temps mais pas toujours. C# et Java qui vous permet de gérer votre propre espace tout en restant fortement typées.

À partir de là, la norme est de C ou de C++. La liberté dans ces langues est presque existentielle. Vous êtes maintenant responsable de votre propre gestion de la mémoire. Il n'y a pas de collecte des ordures pour vous aider. C'est là que vous enseignez la vraiment algorithmes avancés (comme mergesort et quicksort). C'est là que vous découvrez pourquoi une "segmentation fault" est un mot de malédiction. C'est l'endroit où vous téléchargez le code source du noyau Linux et le regard dans l'Abîme. Commencez par écrire un tampon circulaire et une pile pour la manipulation de chaînes. Ensuite, travailler votre chemin jusqu'à.

15voto

Mark Harrison Points 77152

Une bonne python cours est MIT Une Douce Introduction à la Programmation avec Python. Il est gratuit en ligne, et vous n'avez pas à être un MIT uberstudent pour le comprendre.

Edit [Justin Standard]

Ce cours utilise de ce livre électronique gratuit: how to Think Like a Computer Scientist
Je suis certainement de trouver qu'il est très utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X