Je parlais avec certains des mentors dans une compétition de robotique locale pour les enfants de 7e et 8ème niveau. Le robot utilisait Pbasic et le timbre de base de Parallaxe. L'un des principaux problèmes était qu'il s'agissait d'un projet à court terme qui obligeait à construire le robot, à leur apprendre à programmer à PBASIC et à leur permettre de programmer le robot. Tout en seulement 2 heures environ une semaine sur quelques mois. Pbasic est un peu agréable en ce sens qu'elle a intégré des caractéristiques pour tout faire, mais une surcharge d'informations est possible pour le cas échéant.
Ma pensée est la simplicité est la clé. P>
Lorsque vous avez des enfants qui ont du mal à saisir: p> Il n'y a pas beaucoup de point dans la diffusion "appropriée" Programmation orientée objet sur eux. P> Quels sont les éléments essentiels nécessaires pour favoriser un intérêt pour la programmation? P> Modifier strong>:
J'aime la notion d'interprétation sur le PC comme outil d'apprentissage. En raison des plateformes cibles, probablement probablement contraintes, je voudrais cibler les langues appropriées pour les travaux intégrés. (Python et même Lua exigent plus de ressources que la cible susceptible d'avoir. Et je suis un peu comme Lua.) Je suppose que c'est l'une des rares vertus de base, il a été dirigé sur des systèmes de moins de 4k pendant plus de 30 ans. C peut ne pas être une mauvaise option s'il existe des outils "amicaux" disponibles, tels que CH. P> P>
14 Réponses :
Briser le problème (programme de lecture) dans un petit ensemble de sections (modules) qui font une chose et le font très bien. P>
"Faites-le très bien" pour les enfants == "fait plus ou moins ce qu'ils attendaient pour les paramètres limités qu'ils ont considérés"
Cela a été dit sur SO avant, mais ... Essayez gratter . C'est un outil d'apprentissage incroyable pour les enfants. Il enseigne les bases des concepts de programmation de manière pratique et indépendante de la langue. Après un peu de jeu avec elle, ils peuvent descendre pour apprendre la mise en œuvre d'une langue spécifique des concepts qu'ils comprennent déjà. P>
Lorsque vous avez des enfants qui ont du mal à saisir: p>
si x> 10 puis
code> p> blockQuote> Peut-être que c'est un signe qu'ils ne devraient pas faire de la programmation? P>
Quels sont les éléments essentiels nécessaires pour favoriser un intérêt pour la programmation? P> blockQuote>
voir le succès sans effort. Créer quelque chose en marche en quelques minutes. Beaucoup de langages de programmation peuvent l'offrir, y compris l'effrayant C ++. P>
Afin d'éviter la complication avec #includes, plusieurs fichiers source, modularisation et compilation, pourquoi ne pas avoir l'air d'avoir ailleurs? Essayez d'écrire quelques macros Excel ou d'utiliser tout autre logiciel avec une langue de script intégrée de base pour automatiser certaines tâches? P>
Une autre idée pourrait être de jouer avec des pages Web. Ce n'est pas une programmation exactement, mais du moins facile d'atteindre quelque chose et de montrer aux autres avec fierté. P>
Je suis d'accord. J'ai appris à programmer à l'aide de C ++ (bien qu'il ait été enseigné plutôt sur le style C), et le fait que je puisse faire un simple programme de type calculatrice copié à partir d'une main-sortie le premier jour de classe a été magique.
-1: Nous parlons d'enfants, en avez-vous? De plus, vous ne pouvez pas faire: "Si x> 10, alors
@mrjoltcola: Je vois ton point. En fait un bon. Mais un enseignant ne peut-il pas simplement le préparer et dire que les types l'ignorent et laissez-la pour les "classes supérieures"?
Je suis d'accord sur 1/2 de votre point. Chaque enfant n'est pas adapté à cela. Dépend de l'âge. À certains âges, il pourrait être trop tôt pour finir les rangs, afin de parler, de sorte que la clé est de capturer leur imagination et son attention. Quoi qu'il en soit, mon bowvote a inversé, puisque l'Asker a déclaré 7ème et 8e année. Habituellement, les brillants sont évidents d'ici là, à l'exception de ceux qui manquent d'opportunités (enfants pauvres sans PC).
Oui, tu as encore raison.
Pour la robotique, j'aime C. J'ai cherché un CH comme étant "meilleur des deux mondes".
Le plus important n'est pas une grande plaque de chaudière pour rendre le programme le plus simple exécuté.
Si vous commencez par un tas de p> et dites-leur qu'ils "Ne t'inquiète pas, ils ne sont pas censés comprendre que" - tu vas mettre à la fois les plus brillants et les plus stupides. P> La bonne chose à propos de Python est que l'impression "Hello World" est imprimée "Bonjour monde " p> p>
Juste pour fournir une perspective différente, lorsque j'apprendais à programmer à cet âge, j'ai vu des choses comme ça et l'a vu comme une profondeur inexplorée. Je savais qu'il y avait une sorte de chose qui se passe qui rendait ce genre de choses importante et elle a piqué ma curiosité d'explorer encore plus loin. Je ne pense pas que la programmation est un champ qui récompense ceux qui recherchent une gratification instantanée. Au lieu de cela, c'est un champ pour les personnes qui aiment la résolution de problèmes.
Bon point - J'avais l'habitude de recommander TCL / TK parce que vous pourriez commencer par une interface graphique, cela signifiait que les enfants pouvaient sentir qu'ils faisaient des programmes «réels». Commandline Exemples ressentis déconnectés des applications qu'ils ont été utilisées pour l'utiliser, je commencerai probablement avec JavaScript
Amusant, résultats rapides. Capturez la portée de l'attention du gamin.
Les coquilles d'interprétation comme la plupart des offres de langues de script (ligne de commande) qui permettent à l'étudiant de taper 1 ou 2 doublures est une grosse affaire. P>
python: P>
>>> 1+1 2
Bon point ... "10?" Je suis génial! ";: Goto 10" Un programme de base rapide et sale me rendrait Giddy quand j'étais cet âge.
Vous devez les faire arrêter de penser comme un utilisateur et de commencer à penser comme un programmeur. Ils ont besoin de prendre une étape à la fois. Demandez-leur ce qu'ils doivent penser afin de comprendre le problème qu'ils soient, puis écrivez-les comme des étapes. Si vous pouvez alors vous casserez chaque étape encore plus dans le même mater. Lorsque vous avez terminé, vous aurez le programme en anglais, ce qui facilite le programme de réel. P>
Je l'ai fait avec un ami qui ne pouvait tout simplement pas l'obtenir et il peut maintenant. Il avait l'habitude de regarder quelque chose que je faisais et d'être déconcerté et je dirais qu'il a fait des choses plus complexes que cela. P>
Ouais, je pense que tu as un bon point. C'est la différence entre les utilisateurs d'ordinateurs «modernes» et les utilisateurs d'ordinateurs lorsque j'étais enfant. Aujourd'hui, vous venez de cliquer et d'exécuter, alors vous n'avez probablement pas dû connaître au moins de base.
Mon conseil: Commencez par un modèle simple de la façon dont un ordinateur fonctionne. Je suis particulier à Machines de pile en tant que bons outils pour l'enseignement du calcul. p>
N'oubliez pas que les débutants apprennent deux disciplines à la fois: comment les ordinateurs fonctionnent et la logique abstraite impliquée (les bases de l'informatique), ainsi que comment écrire des programmes correspondant à leur logique prévue (apprendre une syntaxe et des idiomes de langage spécifiques) . Vous devez résoudre les deux préoccupations de manière imbriquée pour que les étudiants deviennent rapidement efficaces. C'est aussi la raison pour laquelle Les programmeurs expérimentés peuvent souvent récupérer de nouvelles langues rapidement.
Il vaut la peine de noter Python a grandi d'un projet d'une langue nommée ABC , qui a été ciblé aux débutants. Par exemple, le colon requis n'est pas strictement
Le thème commun dans les langues qui sont faciles pour les débutants - en particulier les enfants à ramasser, c'est qu'il y a très peu de barrière à l'entrée et aux commentaires immédiats. Si "Hello World" n'a pas l'air beaucoup comme Imprimer "Bonjour, World!" Code>, ça va être plus difficile pour les gens de ramasser. Les caractéristiques suivantes au long de ces lignes viennent à l'esprit: p>
J'ai 3 mots: Karel le robot. C'est une "langue" vraiment simple conçue pour enseigner aux gens la base de la programmation: p>
Cherchez-le sur le Web. Vous pouvez regarder cela, bien que je ne l'ai jamais essayé: http://karel.sourceforge.net/ p>
Bien que cela ne soit pas lié à la programmation d'un robot, je pense que la programmation Web est un endroit idéal pour commencer avec les enfants qui vieillissent. C'est comme ça que j'ai commencé à cet âge exact. Cela se traduit facilement par quelque chose que les enfants comprennent s'ils utilisent le tout. Commencez par HTML, lancez JavaScript et ils veulent bientôt faire des fonctionnalités nécessitant des scripts côté serveur ou une sorte, et les choses se passent de là. P>
Avec le genre d'enfants qui sont déjà intéressés par la robotique, cependant, je vais faire une langue différente comme celle que celles déjà décrites. Si vous voulez travailler dans un champ comme une robotique, vous n'avez pas besoin d'être convaincu d'essayer quelque chose de difficile. Vous devez être contesté. P>
Eep, prudent si un enfant commence par la programmation Web, il pourrait fuir hurler et ne jamais découvrir les autres types de programmation .:)
Il y a quelques années, j'ai vu une présentation à Ignite! Seattle de l'une des personnes travaillant sur le projet maintenant connue sous le nom de KODU qui envisageait de langage de programmation pour les enfants. Il a passé du temps à parler de ce que les caractéristiques de la langue courantes pourraient simplement être jetées dans un environnement de programmation destiné à enseigner des fondamentaux. P>
Beaucoup de constructions impératives chéries, telles que c-style pour les boucles, étaient simplement laissées en faveur d'une simple approche de messagerie d'objet. La programmation orientée objet n'est pas difficile à comprendre lorsque vous pensez des "objets" et des "messages"; La partie difficile est lorsque vous traitez des choses que les programmeurs, mais pas les enfants, se soucient, comme l'héritage et les contrats et des abstractions balayantes. J'ai cette chose (nom), agissez-vous maintenant (verbe), de cette façon (adverbe comme rapidement), quand chose (voit / heurte) quelque chose (avec un attribut) (c'est votre si). Les événements sont vraiment des conditions et disposent de tout le pouvoir des conditions, mais il appartient à l'heure d'exécution de s'identifier lorsque ces événements se produisent. P>
Ce type d'approche axée sur les événements et la messagerie se traduit probablement mieux aux robots que de la programmation procédurale, de toute façon, il pourrait donc être un bon moyen de regarder le problème. Essayez de ne pas réfléchir à ce que vous auriez "besoin" de savoir pour programmer en C ou Pascal ou quelque chose; Pensez à ce que vous voudriez pouvoir faire quelque chose. p>
Kudu semble plus ciblé vers les enfants de niveau élémentaire. Quand j'étais cet âge (Jr. High), j'étais programmée à Atari Basic, Apple Basic, Z80 Basic, MS Basic. J'ai donc une certaine quantité de "foi" dans la capacité de l'élève à saisir les concepts de programmation.
Oui, comme je l'ai fait, mais la base ne m'a rien apprenu sur des objets et que les seules structures de données pratiques étaient des matrices. Donc, à bien des égards, cette approche de messagerie objet est en fait plus sophistiquée que cela.
L'un des arguments les plus persistants dans lesquels j'ai eu avec d'autres programmeurs est de savoir si une première langue devrait ou non nécessiter des langues de type explicites. Beaucoup sont d'avis que l'apprentissage d'une langue qui vous oblige à déclarer explicitement des informations de type est une qui vous apprendra à programmer MISSiblement em>. Inversement, on peut dire que les langues dynamiques pourraient présenter une courbe d'apprentissage moins exigeante. Ça va de toute façon, je suppose. P>
+1 pour l'apporter. J'aime que l'idée d'enseigner tôt sur ce type est importante et je pense que c'est un concept assez simple, ce n'est donc pas un grand obstacle à surmonter ... mais j'imagine que d'autres seraient (fortement) en désaccord.
Oui. J'ai appris avec le traitement avant et il est basé sur Java. Il y a la laideur Java là-bas mais c'est génial pour les débutants! traitement.org
Je me souviens de "avoir" la différence entre "chaînes" et types numériques dans le dos de base quand j'étais enfant. C'était comme une ampoule allumée lorsqu'il a cliqué sur lequel un octet de RAM et de caractère étaient les mêmes. (Merci à des quantités libérales de lutte and piquant) Certains des premiers programmes que j'ai écrites "largué" le contenu de la mémoire sur un 64k Atari, lorsque vous êtes arrivé à votre programme dans la RAM, vous pouvez voir toutes vos constantes de chaîne et commentaires entrecoupés entre jetons de base . (Je ne savais pas qu'ils étaient appelés des jetons à l'époque, mais vous apprenez tout le jargon au collège.)
a équipe de chercheurs , à partir du riz, puis se répandant à Brown, Chicago, Nord-Est , Northwestern et Utah, ont étudié cette question pendant environ 15 ans. Je ne peux pas résumer toutes leurs découvertes ici, mais voici certaines de leurs conclusions les plus importantes: P>
La syntaxe irrégulière peut être une barrière à l'entrée. P> Li>
La langue doit être divisée en sous-ensembles concentriques et choisir un sous-ensemble approprié au niveau des connaissances de l'élève. Par exemple, leur plus petit sous-ensemble s'appelle le langage "Début étudiant". P> Li>
Les messages d'erreur du compilateur doivent être adaptés au niveau des connaissances des étudiants. Si vous utilisez des sous-ensembles, différents sous-ensembles peuvent donner des messages différents pour la même erreur. P> LI>
Les débutants trouvent difficile d'apprendre la distinction EM>: des phases séparées pour le type de vérification et de l'exécution de type, avec différents types d'erreurs. Pour cette raison, les débutants font mieux avec une langue où les types sont vérifiés au moment de l'exécution, c'est-à-dire une langue dactylographiée dynamiquement. P> li>
Les débutants trouvent difficile de raisonner sur les variables mutables et les objets mutables. Si vous enseignez la programmation fonctionnelle pure, en revanche, vous pouvez tirer parti de l'expérience des étudiants avec l'algèbre du secondaire et du collège. P> Li>
Les élèves de départ sont plus engagés par un environnement de programmation interactif que par l'ancien modèle d'édition-compile-link-go. p> li>
Les élèves de départ sont engagés par Splash et par interactivité. C'est bien si la bibliothèque standard de votre langue fournit un support intégré pour créer et afficher des images. Il vaut mieux si ces images sont prises en charge dans l'environnement de programmation interactif, au lieu de nécessiter un lecteur ou un spectateur distinct. Et il est encore meilleur si votre bibliothèque standard peut prendre en charge les images em> déplacer em> ou une autre sorte d'animation. P>
Fait intéressant, ils ont de très bons résultats avec des images 2D. Même si nous sommes tous entourés d'exemples d'infographie 3D, les élèves semblent être très engagés à utiliser uniquement des images bidimensionnelles. P> Li> ul>
Ces résultats ont été obtenus principalement avec les étudiants des collèges et ont été reproduits dans plus de 20 universités. Toutefois, l'équipe de recherche a également fait du travail avec des étudiants du secondaire et des collèges. Les premiers papiers sur ce travail ne sont que de sortir, alors je suis moins conscient des nouvelles découvertes et je ne suis pas capable de les résumer. P>
J'aime le commentaire "Phase", je pense que j'aime la notion de quelque chose qui a une syntaxe de "C comme" propre, mais la nature interprétée de la vieille école basique. Ch, Picoc et Tinyc ressemblent à ce qu'ils s'approchent quelque chose qui serait utile. Picoc était en fait conçu pour être intégré aussi, ce qui est un peu intéressant.
Le deplicaté proposé ( Stackoverflow.com/questions/2436092/... ) est certainement un voir aussi B> mais c'est pas i> un duplicata de cette question.
La simplicité est la clé. Malheureusement, la base est jolie archaïque. Je ne suis pas vraiment familier avec Python, mais cela vient fortement recommandé. Certainement pas c, et seulement Java hors du désespoir, si vous ne trouvez pas quelque chose d'autre. Il est important que toute langue que vous utilisiez ne pas réorganiser la "pensée magique" que certaines incantations obscures feront d'une manière merveilleuse, et la clé de la programmation consiste à apprendre toutes les incantations secrètes. La clé de la programmation est clairement i> Compréhension de ce qui se passe, au niveau des détails où vous y êtes exposé.
Bien sûr, si vous voulez quelque chose qui est vraiment simple, il y a toujours Whitespace . Comment une langue peut-elle être plus simple qu'une personne qui n'a pas de mots-clés ni de symboles? (;))