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

324

Question d'origine

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

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

Le langage avec lequel nous travaillons est Python , mais les conseils dans n'importe quel langage 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 conviennent aux débutants

Veuillez décrire la ressource avec un lien vers celle-ci afin que je puisse y jeter un œil. Je veux que tout le monde sache que j'ai certainement utilisé certaines de ces idées. Vos soumissions seront regroupées dans cet article.


Ressources en ligne pour enseigner aux débutants:


Livres imprimés recommandés pour les débutants

Justin Standard
la source
Je ne comprends pas pourquoi cela devrait être fermé. Au moins 295 utilisateurs ont trouvé cette question (et les 92 réponses) assez utiles pour la voter, 290 allant jusqu'à la considérer comme l'une de leurs préférées. La question a débouché sur une agrégation très utile des ressources pédagogiques. Cela n'a pas vraiment débouché sur des «arguments» ou des «débats», mais vraiment beaucoup de bons conseils sur la façon de traiter l'un des «facteurs humains» difficiles dans la programmation. Je pense que clôturer une question comme celle-ci est draconien et préjudiciable à la communauté StackOverflow.
Justin Standard
@JustinStandard Avez-vous envisagé de convertir vos modifications en plusieurs réponses aux commentaires? Par exemple ici , ici et ici
Jason Plank

Réponses:

118

J'ai dû travailler avec plusieurs programmeurs débutants (je n'ai jamais écrit de ligne de code) et je ferai un atelier après l'école avec des élèves du secondaire cet automne. C'est la chose la plus proche que j'ai à la documentation. C'est toujours un travail en cours, mais j'espère que ça aide.

1) FizzBuzz. Commencez avec des programmes en ligne de commande. Vous pouvez écrire des jeux ou des outils amusants très rapidement et vous apprendrez toutes les fonctionnalités du langage très rapidement sans avoir à apprendre les outils GUI au préalable. Ces premières applications devraient être suffisamment simples pour que vous n'ayez pas besoin d'utiliser de véritables outils de débogage pour les faire fonctionner.

Si rien d'autre, des choses comme FizzBuzz ne sont de bons projets. Vos premières applications ne devraient pas avoir à gérer les bases de données, le système de fichiers, la configuration, etc. Ce sont des concepts qui déroutent la plupart des gens, et lorsque vous apprenez simplement la syntaxe et les fonctionnalités de base du cadre, vous n'avez vraiment pas besoin de plus de complexité.

Quelques projets:

  • Bonjour le monde!
  • Prenez l'année de ma naissance et calculez mon âge (juste (maintenant - alors) pas de corrections de mois). (mathématiques simples, entrée, sortie)
  • Demandez une direction (haut, bas, gauche, droite), puis dites à l'utilisateur son sort (tomber dans un trou, trouver un gâteau, ect). (Logique booléenne)
  • FizzBuzz, mais comptez une fois par seconde. (Boucles, temporisateurs et plus de logique)
  • Selon leur âge, certains aiment vraiment une application qui appelle les utilisateurs une insulte aléatoire à un certain intervalle. (Boucles, tableaux, minuteries et aléatoire si vous rendez l'intervalle aléatoire)

2) Projet simple Une fois qu'ils ont une bonne compréhension des fonctionnalités du langage, vous pouvez démarrer un projet (des jeux simples et amusants fonctionnent bien). Vous devriez essayer de terminer le premier projet dans les 6 à 12 heures. Ne passez pas de temps à le concevoir tôt. Laissez-les le concevoir même s'il craint. S'il tombe en morceaux, parlez de ce qui s'est passé et pourquoi il a échoué, puis choisissez un autre sujet et recommencez.

C'est là que vous commencez à introduire les capacités de débogage de vos outils. Même si vous pouvez voir le problème en lisant le code, vous devez leur apprendre à utiliser les outils, puis leur montrer comment vous pouvez le voir. Cela sert le double objectif d'enseigner les outils de débogage et d'enseigner comment identifier les erreurs sans outils.

Une fois, ou si, le projet devient fonctionnel, vous pouvez l'utiliser pour introduire des outils de refactoring. C'est bien si vous pouvez ensuite étendre le projet avec des fonctionnalités simples que vous n'avez jamais prévues. Cela signifie généralement une refactorisation et un débogage important, car très peu de gens écrivent même du code à moitié décent la première fois.

Quelques projets:

  • Jeu du pendu
  • Expérimentation de la robotique ( Vex et Mindstorms sont des options)

3) Projet réel Démarrez un projet réel qui peut prendre un certain temps. Utilisez le contrôle de source approprié et assurez-vous d'avoir un calendrier. Exécutez ce projet comme un vrai projet, si rien d'autre sa bonne expérience d'avoir à gérer les outils.

De toute évidence, vous devez ajuster cela pour chaque personne. La chose la plus importante que j'ai trouvée est de faire appliquer même les premières applications simples à ce qui intéresse la personne.

Quelques projets:

  • Tetris
  • Moteur de blog basé sur un fichier texte
  • Travail robotique plus avancé
Eric Haskins
la source
C'est un bon guide. Personnellement, je ne peux pas me frayer un chemin hors d'un sac en papier (j'aimerais voir quelqu'un le faire dans la vraie vie, en fait), donc cela ressemble à un bon guide pour m'enseigner aussi.
keyofnight
Ceci est une très bonne réponse. Ma seule objection est que Tetris n'est pas un bon choix pour un premier ou un deuxième match. À ce niveau, la détection de collision peut être un problème difficile - c'est formidable s'ils peuvent le résoudre.
phkahler
@phkahler Je vois votre point, mais je crois que Tetris est intéressant car il y a tellement d'implémentations OSS / démo que vous pouvez analyser avant et après avoir écrit votre code.
Eric Haskins
30

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

Les deux plus gros 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 la possibilité d'erreurs de syntaxe. Alice vous permet de construire des mondes 3D et d'avoir votre contrôle de code (simples) personnages et animations 3D, ce qui est généralement beaucoup plus intéressant que d'implémenter des listes liées.

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

Avertissement: j'ai travaillé sur Alice.

Jason Pratt
la source
Je l'ai appris grâce à la dernière conférence de Randy Pausch. Le raisonnement derrière ce projet m'a époustouflé.
Jesvin Jose
28

Je recommande Logo (alias la tortue) pour descendre les concepts de base. Il fournit un bon bac à sable avec une rétroaction graphique immédiate, et vous pouvez démontrer les boucles, les variables, les fonctions, les conditions, etc. Cette page fournit un excellent tutoriel.

Après Logo, passez à Python ou Ruby. Je recommande Python, car il est basé sur ABC, qui a été inventé dans le but d'enseigner la programmation.

Lorsque j'enseigne la programmation, je dois appuyer la suggestion d'EHaskins de projets simples, puis de projets complexes. La meilleure façon d'apprendre est de commencer par un résultat précis et un jalon mesurable. Il garde les leçons concentrées, permet à l'élève de développer des compétences, puis de s'appuyer sur ces compétences, et donne à l'étudiant quelque chose à montrer à ses amis. Ne sous-estimez pas le pouvoir d'avoir quelque chose à montrer pour son travail.

Théoriquement, vous pouvez vous en tenir à Python, car Python peut faire presque n'importe quoi. 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 avoir une idée de son fonctionnement, ou exécuter des scripts entiers à la fois. Vous pouvez exécuter vos scripts interprétés à la volée ou les compiler en binaires. Il existe des milliers de modules pour étendre la fonctionnalité. Vous pouvez créer une calculatrice graphique comme celle fournie avec Windows, ou vous pouvez créer un client IRC, ou autre chose.

XKCD décrit un peu mieux la puissance de Python: "Vous volez! Comment?"  "Python!"

Vous pouvez passer à C # ou Java après cela, bien qu'ils n'offrent pas beaucoup de choses que Python n'a pas déjà. L'avantage de ceux-ci est qu'ils utilisent la syntaxe de style C, que de nombreuses langues (j'ose dire la plupart?) Utilisent. Vous n'avez pas encore à vous soucier de la gestion de la mémoire, mais vous pouvez vous habituer à avoir un peu plus de liberté et moins de prise en main par l'interpréteur de langue. Python applique des espaces et des indentations, ce qui est agréable la plupart du temps mais pas toujours. C # et Java vous permettent de gérer votre propre espace blanc tout en restant fortement typé.

De là, la norme est C ou C ++. La liberté dans ces langues est presque existentielle. Vous êtes désormais en charge de votre propre gestion de la mémoire. Il n'y a pas de collecte de déchets pour vous aider. C'est là que vous enseignez les algorithmes vraiment avancés (comme mergesort et quicksort). C'est là que vous apprenez pourquoi «défaut de segmentation» est un mot maudit. C'est ici que vous téléchargez le code source du noyau Linux et regardez dans les Abysses. Commencez par écrire un tampon circulaire et une pile pour la manipulation de chaînes. Montez ensuite.

Magus
la source
En fait, vous ne gérez pas complètement la mémoire en C. Vous pouvez avoir malloc, etc., et le gérer gratuitement pour vous. Vous n'avez qu'à dire au système quand vous voulez plus de mémoire et quand vous en avez fini avec la mémoire que vous avez utilisée.
compman
12

Package Python VPython - Programmation 3D pour Ordinary Mortal ( tutoriel vidéo ).

Exemple de code:

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01

while 1:
    rate (100)
    ball.pos = ball.pos + ball.velocity*dt
    if ball.y < ball.radius:
        ball.velocity.y = -ball.velocity.y
    else:
        ball.velocity.y = ball.velocity.y - 9.8*dt

Balle rebondissante VPython http://vpython.org/bounce.gif

jfs
la source
Bon juste après avoir appris les concepts de base. La création de visuels est un excellent moyen de motiver les gens à apprendre la programmation.
phkahler
12

Commencez avec les graphiques Turtle en Python.

J'utiliserais les graphiques de tortue fournis en standard avec Python. Il est visuel, simple et vous pouvez utiliser cet environnement pour introduire de nombreux concepts de programmation comme les appels d'itération et de procédure avant d'aller trop loin dans la syntaxe. Considérez la session interactive suivante en python:

>>> from turtle import *
>>> setup()
>>> title("turtle test")
>>> clear()
>>>
>>> #DRAW A SQUARE
>>> down()        #pen down
>>> forward(50)   #move forward 50 units
>>> right(90)     #turn right 90 degrees
>>> forward(50)
>>> right(90)
>>> forward(50)
>>> right(90)
>>> forward(50)
>>>
>>> #INTRODUCE ITERATION TO SIMPLIFY SQUARE CODE
>>> clear()
>>> for i in range(4):
        forward(50)
        right(90)
>>>
>>> #INTRODUCE PROCEDURES   
>>> def square(length):
        down()
        for i in range(4):
            forward(length)
            right(90)
>>>
>>> #HAVE STUDENTS PREDICT WHAT THIS WILL DRAW
>>> for i in range(50):
        up()
        left(90)
        forward(25)
        square(i)
>>>
>>> #NOW HAVE THE STUDENTS WRITE CODE TO DRAW
>>> #A SQUARE 'TUNNEL' (I.E. CONCENTRIC SQUARES
>>> #GETTING SMALLER AND SMALLER).
>>>
>>> #AFTER THAT, MAKE THE TUNNEL ROTATE BY HAVING
>>> #EACH SUCCESSIVE SQUARE TILTED

En essayant d'accomplir les deux dernières missions, ils auront de nombreuses tentatives infructueuses, mais les échecs seront visuellement intéressants et ils apprendront rapidement en essayant de comprendre pourquoi cela n'a pas attiré ce qu'ils attendaient.

dyoung
la source
11

L'essentiel est que la personne en question ait un problème qu'elle veut résoudre. Si vous n'avez pas de programme que vous voulez écrire (et quelque chose de sensé et bien défini, pas "je veux écrire le prochain tremblement de terre!"), Alors vous ne pouvez pas apprendre à programmer, parce que vous n'avez rien pour vous motiver . Je veux dire, vous pourriez lire un livre et avoir une compréhension approximative de la syntaxe et de la sémantique d'un langage, mais tant que vous n'aurez pas un programme que vous voudrez écrire, vous ne saisirez jamais l'ortie.

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

DrPizza
la source
La meilleure façon d'apprendre n'importe quel sujet technique, je pense, est d'apprendre à résoudre de petits problèmes incrémentaux.
cbednarski
8

Je ne sais pas si quelqu'un a mentionné cela ici, encore, mais vous pourriez vouloir vérifier Zed Shaw de savoir Python the Hard Way

J'espère que cela t'aides

inspecteur G4dget
la source
7

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

CodageSans commentaires
la source
Agréable! Il semble facile et puissant d'utiliser Ruby
Luc M
5

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

http://pine.fm/LearnToProgram/

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

Jarin Udom
la source
4

S'il est intéressé, les petits détails ne sont-ils pas les bonnes parties? En utilisant python, vous en avez déjà coupé l'interface graphique afin que la confusion ait disparu. Pourquoi ne pas choisir un projet, un jeu ou quelque chose, et le mettre en œuvre. Le jeu de devinettes de nombres hi-lo classique peut être simplement implémenté à partir de la ligne de commande dans 20-30 lignes de code (selon la langue bien sûr) et vous donne des variables, des conditions, des boucles et des entrées utilisateur.

jj33
la source
4

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

Croyez-le ou non, après quelques mois d'écriture de tonnes de code merdique, il va commencer à avoir l'idée et à écrire de meilleurs programmes. À ce stade, vous pouvez vous enliser dans les détails (mémoire, etc.) et également 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 s'améliorent sur quelque chose, aussi petit soit-il. Laissez votre frère s'entraîner et il s'améliorera à chaque fois qu'il s'assoit au clavier.

Modifier: [Justin Standard]

Esteban, cela me rappelle un récent message d'horreur de codage , et je ne pense que vous avez raison. Mais je pense qu'il vaut toujours la peine de trouver des méthodes pour guider sa pratique. Sans aucun doute, je veux qu'il écrive autant de code qu'il sait faire. C'est une des raisons pour lesquelles je demande des exemples de projets.

Esteban Araya
la source
Oui, je sais de quel poste vous parlez de Justin. La lecture m'a rappelé comment la plupart des choses que j'ai apprises sont venues d'essayer et d'apprendre de mes propres erreurs. Je ne peux vraiment pas insister sur l'importance d'apprendre en faisant!
Esteban Araya
2

Tout d'abord, commencez comme tout le monde: avec un programme Hello World . C'est simple et cela leur donne une idée de base de la disposition d'un programme. Essayez de vous souvenir de la première fois que vous avez programmé et de la difficulté de certains concepts - commencez simplement.

Après Hello World, passez à la création de variables de base, l'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-le les parcourir. N'essayez simplement pas d'en introduire trop en une seule fois, sinon ce sera écrasant et déroutant.

Brandon Wood
la source
2

Quelque chose que vous devriez faire très attention lorsque vous enseignez à votre frère à programmer, c'est qu'il ne compte pas trop sur vous. Souvent, quand je me retrouve à 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 "Que se passera-t-il si j'ajoute 2 à une chaîne?" vous devriez lui dire de l'essayer et de voir par lui-même. J'ai également remarqué que lorsque je ne peux pas transmettre un concept à quelqu'un, cela aide de voir un exemple de code où nous pouvons regarder chaque segment individuellement et l'expliquer morceau par morceau. En passant, les débutants en programmation ont souvent des problèmes avec l'idée d'une programmation orientée objet,

Anton
la source
2

J'enseignais 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 des générations plus anciennes se souviennent comme des entrées de base. Les plus complexes d'entre eux utilisent des ncurses qui nient en quelque sorte leur utilisation comme aide pédagogique, mais certains d'entre eux sont de minuscules petites choses et vous pouvez apprendre des charges sans qu'on vous les enseigne.

Personnellement, je pense que Python et Ruby feraient d'excellentes premières langues.

EDIT: la liste des affectations de programmation pour débutants apparues pendant la nuit pourrait être exactement ce que vous recherchez.

étincelles
la source
2

Cela dépend vraiment du style d'apprentissage de votre frère. Beaucoup de gens apprennent plus vite en se salissant les mains et en s'y mêlant, en cristallisant les concepts et la vue d'ensemble à mesure qu'ils progressent et développent leurs connaissances.

Moi, je préfère commencer par la vue d'ensemble et descendre dans le vif du sujet. La première chose que je voulais savoir, c'était comment tout cela s'enchaînait, puis tout ce charabia orienté objet, puis les classes et les instances, etc. J'aime connaître les concepts sous-jacents et un peu de théorie avant d'apprendre la syntaxe. J'ai eu un petit avantage car j'ai écrit quelques jeux en BASIC il y a 20 ans mais rien de plus depuis.

Il est peut-être utile d'observer un processus de production en commençant par un énoncé de mission global, puis un plan et / ou un organigramme, puis d'élaborer un pseudo-code (en se penchant vers la syntaxe que vous utiliserez finalement) avant d'écrire réellement le code.

La règle d'or ici est de déterminer le style d'inclinaison de votre élève.

CAD bloke
la source
2

Si votre frère a accès à iTunes, il peut télécharger des conférences vidéo d'un cours d'initiation à l'informatique donné par Richard Buckland à l'Université de New South Wales. Il est un instructeur attrayant et couvre les bases de l'informatique et du langage C. Si rien d'autre, dites à votre frère de jouer les vidéos en arrière-plan et certains concepts pourraient pénétrer 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

CodeCurious
la source
2

il y a un wikibook qui est assez bon pour apprendre le python .

Je ne sais pas comment sont les wikibooks pour d'autres langues, mais j'ai personnellement appris le python à partir du wikibook comme c'é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 livres là-bas, vous verrez comment cela fonctionne

Jiaaro
la source
2

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

Quelques projets possibles (sans ordre particulier):

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

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

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

  • Créez un programme qui prend une entrée numérique et affiche la note en lettres à laquelle il se traduira. Il finira par évaluer les entrées par rapport aux instructions if et elif pour trouver où elles se situent.

  • 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 (vraisemblablement grand) de pièces de monnaie et convertissez-le en plus grandes dénominations. Par exemple, 149 centimes = 1 dollar, 1 quart, 2 centimes et 4 centimes.

  • Créez un gestionnaire de listes simple. Pouvoir 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 puis tester si les nombres saisis 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 construction du carré: http://pastebin.org/6544

Je suggérerais é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 la pratique de la programmation et non du script pour lequel beaucoup de gens utiliseraient vraiment python, mais les exemples que j'ai donnés sont à peu près directement tirés de mon apprentissage via python et cela a très bien fonctionné pour moi. Bonne chance!

Sean O'Hollaren
la source
2

Rendez-le juste amusant!

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

Łukasz Lew
la source
2

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

Jacinda
la source
2

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 travailler dès le début. Ils sont tous plus intéressants que «Hello World». Cela vaut bien l'argent que j'ai dépensé, et comme il est sorti un peu, vous pourrez peut-être trouver une copie d'occasion moins chère sur Ebay ou Amazon.

chrisfs
la source
1

Si vous voulez enseigner les bases de la programmation, sans être spécifique au langage, il existe une application appelée Scratch qui a été créée dans le MIT. Il est conçu pour aider les gens à développer leurs compétences en programmation. Au fur et à mesure que les utilisateurs créent des projets Scratch, ils apprennent à créer des conditions, des boucles, etc.

Lea Cohen
la source
1

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 lutter contre certains des problèmes les plus difficiles, rien n'est plus satisfaisant que le moment où vous le résolvez par vous-même.

DanV
la source
1

J'ai appris en résolvant les problèmes d'une manière indépendante du langage en utilisant des organigrammes et PDL (Program Design Language). Après quelques semaines, j'ai appris à convertir le PDL que j'avais écrit dans une langue. Je suis content d'avoir appris de cette façon parce que j'ai passé la majorité de mes années à programmer, à résoudre des problèmes sans être lié à une langue. Le langage que j'utilise a toujours été un détail d'implémentation et ne faisait pas 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 l'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 pense que le moyen le plus simple est de décider que c'est d'avoir un projet en tête et d'aborder les concepts au besoin. Cela vous permet de les appliquer au besoin sur quelque chose que vous souhaitez faire. Lors de l'apprentissage d'une langue, il est bon d'avoir plusieurs projets simples à l'esprit et quelques-uns avec une complexité progressive. Décider de ceux-ci vous aidera à définir les concepts nécessaires et leur ordre.

bruceatk
la source
1

Je recommanderais également de regarder certains screencasts - ils sont généralement créés dans le contexte d'une technologie spécifique et non d'un langage, bien que si du code Python s'affiche, cela suffira :). Le fait est - ils sont créés par de bons programmeurs et regardent à quel point un bon programme de programmeurs est une bonne chose. Vous et votre frère pourriez également faire de la programmation par les pairs, ce pourrait être une meilleure idée. N'oubliez pas d'expliquer POURQUOI vous faites quelque chose de cette façon et non de cette façon. Je pense que la meilleure façon d'apprendre la programmation est à partir de bons exemples et essayez de ne même pas voir les mauvais.

martinsb
la source
1

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

David
la source