教新手入门的最佳方法?

xminus 发布于 2018-02-26 python 最后更新 2018-09-21 10:04 1239 浏览

原始问题 我目前正在教我的兄弟编程。他是一个初学者,但非常聪明。 (他实际上想学习)。我注意到我们的一些会议陷入了一些小细节,我不觉得自己组织得很好。 (但这篇文章的答案帮了很大忙。) 我能更好地教他有效地做什么?有没有一种逻辑顺序可以用来贯穿概念概念?到了晚些时候我应该避免复杂吗? 我们正在使用的语言是Python,但欢迎任何语言的建议。


如何帮助 如果你有好的,请在你的回答中加入以下内容:
已邀请:

nfugit

赞同来自:

如果他有兴趣,那么好的部分是不是小细节?使用python,你已经切断了它的GUI,以免混淆。为什么不选择一个项目,一个游戏或其他东西,并实施它。经典的hi-lo猜谜游戏可以通过命令行在20-30行代码中简单实现(取决于当然的语言),并为您提供变量,条件,循环和用户输入。

wquod

赞同来自:

首先,像其他人一样开始:使用Hello World程序。这很简单,它给了他们对程序布局的基本感受。尝试并记住你第一次编程的时候,以及一些概念有多么困难 - 从简单开始。 在Hello World之后,继续创建一些基本变量,算术,然后转换为布尔逻辑和if/else语句。如果你有一本旧的编程教科书,请查看一些早期的例子,并让他解决这些问题。只是不要试图一次介绍太多,否则会令人无法抗拒。

ddolor

赞同来自:

我实际上会主张用更少的指令选择更简单的语言。我亲自在BASIC学习了did Jeff。这样,您就不必深入研究诸如面向对象编程等更复杂的问题,甚至不需要过程。一旦他可以处理简单的控制流程,然后继续处理一些更复杂的事情,但只是简单的功能。 也许从非常简单的程序开始,只添加2个数字,然后发展到可能需要分支的东西,然后可能读取输入并对其进行响应,然后进行某种循环,然后开始将它们组合在一起。只需从小处着手,继续前进。在掌握基础知识之前,不要做任何大型项目(否则可能太艰巨,他可能会放弃)。一旦他掌握了BASIC或你选择的任何东西,就可以转向更复杂的东西。 只是我的0.02美元

bsit

赞同来自:

在教你的兄弟进行编程时,你应该非常关注的一件事是让他不要太过依赖你。通常当我发现自己在帮助别人时,他们会开始把我看作是他们所有问题的答案,而不是试着找到答案,他们只是问我。通常最好的老师是实验,每次你的兄弟都有一个问题,比如“如果我给一个字符串加2,会发生什么?”你应该告诉他尝试一下,亲自看看。另外我注意到,当我无法将概念传达给某人时,可以看到一些示例代码,我们可以逐个查看每个片段并逐个解释它。作为一个侧面提示,新编程人员通常在面向对象编程思想方面遇到困难,他们会说,当你将它教给他们时,他们会理解它,但在实际实施之前不会清楚它的概念。

eet

赞同来自:

您可以尝试使用Alice。这是一个用于入门级编程课程的3D程序。 新程序员面临的两大障碍往往是:

  • 语法错误
  • 动机(写出有意义而有趣的东西而不是人为的东西)
  • Alice使用拖放界面来构建程序,避免了语法错误的可能性。 Alice可以让你构建3D世界,让你的代码控制(简单)3D角色和动画,这通常比实现链表更有趣。 有经验的程序员可能会低头看待Alice作为玩具,并嘲笑拖放代码行,但research表明此方法有效。 免责声明:我曾在爱丽丝工作。

nodio

赞同来自:

一个好的Python课程是MIT的A Gentle Introduction to Programming Using Python。这是免费的在线,你不必是麻省理工学院的理解。

Edit [Justin Standard] This course uses this free online book: How To Think Like a Computer Scientist
I'm definitely finding it quite useful.

ueum

赞同来自:

我不得不与几位初学者(从来没有写过一行代码)的程序员一起工作,今年秋天我会和高中学生一起做一个课后工作坊。这是我需要记录的最接近的东西。这仍然是一项进展,但我希望它有帮助。 1) FizzBu​​zz。从命令行程序开始。您可以快速编写一些有趣的游戏或工具,并且您可以快速学习所有语言功能,而无需先学习GUI工具。这些早期的应用程序应该足够简单,以至于不需要使用任何真正的调试工具来使它们工作。 如果没有其他事情像FizzBu​​zz是好项目。您的前几个应用程序不应该处理数据库,文件系统,配置等。这些概念只是混淆了大多数人,当你刚刚学习语法和基本框架特性时,你并不需要更多的复杂性。 一些项目:

  • Hello World!
  • 记下我出生的那一年,并计算我的年龄(只是(现在 - 然后)没有月份更正)。 (简单的数学,输入,输出)
  • 询问一个方向(上,下,左,右),然后告诉用户他们的命运(落在一个洞里,找到一个蛋糕等)。 (布尔逻辑)
  • FizzBu​​zz,但每秒钟计数一次。 (循环,定时器和更多逻辑)
  • 根据他们的年龄,一些真的很喜欢一个应用程序,它会在某个时间间隔内调用用户随机侮辱。 (循环,数组,定时器,以及随机间隔)
  • 2)简单项目一旦他们掌握了语言功能,就可以开始一个项目(简单,有趣的游戏很好用)。你应该尝试让第一个项目能够在6-12小时内完成。不要花时间来尽早设计它。让他们设计它即使它很糟糕。如果它分崩离析,请谈论发生了什么事以及为什么会失败,然后选择另一个话题并重新开始。 这是您开始引入工具调试功能的地方。即使您通过阅读代码可以看到问题,您应该教会他们如何使用这些工具,然后向他们展示如何看到它。这有助于教授调试工具和教授如何在没有工具的情况下识别错误的双重目的。 一旦或者如果项目变得有用,您可以使用它来引入重构工具。如果您可以使用一些您从未计划过的简单功能扩展项目,那就太好了。这通常意味着重构和重要的调试,因为很少有人第一次写出一半体面的代码。 一些项目:
    • Hang子手游戏
    • 尝试使用机器人技术(VexMindstorms是选项)
    • 3)真实项目开始一个可能需要一些时间的真实项目。使用适当的源代码管理,并指出有一个时间表。像一个真正的项目一样运行这个项目,如果没有其他的经验,就不得不处理这些工具。 显然你需要为每个人调整这个。我发现的最重要的事情就是使第一个简单的应用程序适用于该人感兴趣的内容。 一些项目:
      • 方块
      • 基于文本文件的博客引擎
      • 更高级的机器人技术

yeum

赞同来自:

我曾经教过编程,你的兄弟比我想要学习的大多数学生有一个主要优势:) 如果您决定使用C a friend has a site,它具有某些程序,那些使用老一代的程序记忆为基本输入。他们中更复杂的人使用ncurses,这种方式有些否定他们作为辅助教具的用途,但其中一些是小小的东西,你可以在没有被教导的情况下学习装载。 就我个人而言,我认为Python和Ruby会成为优秀的第一语言。 编辑: list of beginner programming assignments在一夜之间出现可能就是您正在寻找的。

fearum

赞同来自:

我认为“人群的智慧”在这里工作。大多数人如何学习如何编程?许多人声称他们通过复制其他人的程序,通常是他们想在BASIC中玩的游戏。 也许这条路线也能与他一起工作?

lmagni

赞同来自:

如果您想讲授编程的基础知识,而不是语言特定的,那么在MIT中创建一个名为Scratch的应用程序。它旨在帮助人们发展编程技能。当用户创建Scratch项目时,他们会学习创建条件,循环等。还有一个临时项目社区,可以下载项目的形式 - 这样您就可以探索其他人的项目并了解他们是如何构建的。

ut_et

赞同来自:

我最近写了一篇题为How to teach your girlfriend programming的文章,与女朋友以及向不明白的人教技术的一切无关。 我被告知这也很有趣。

msed

赞同来自:

这真的取决于你哥哥的学习风格。许多人通过让自己的手变脏而更快地学习,只要进入它,在进步和建立他们的知识的过程中,概念和大局就会得到体现。 我,我更愿意从大局开始,深入探讨本质。我想知道的第一件事是,它是如何融合在一起的,然后是所有面向对象的gobbledygook,然后是关于类和类的东西。实例等。在学习语法之前,我喜欢了解底层概念和一些理论。我有一些优势,因为我在20年前在BASIC写了一些游戏,但没有多少。 也许在实际编写代码之前,首先从总体任务说明开始,然后制定计划和/或流程图,然后详细阐述一些伪代码(倾向于最终将使用的语法),这对于制作流程非常有用。 这里的黄金法则是把你的学生的学习风格弄明白。

godio

赞同来自:

http://tryruby.hobix.com/">尝试Ruby(在您的浏览器中)

inemo

赞同来自:

我同意Leac。有时如果我感到无聊,我实际上会玩Scratch。这是一种非常有趣的查看代码的视觉方式。 它的工作原理是,他们给你一堆“块”(这些看起来像拉丁),你可以堆叠。通过堆叠这些块,并与画布进行交互(您可以在其中放置小精灵,图形),您可以创建游戏,电影,幻灯片......这非常有趣。 完成后,您可以将其上传到Scratch网站,这是一个适用于Scratch应用程序的youtube-ish门户。不仅如此,您还可以下载网站上的任何提交内容,并学习或扩展其他Scratch应用程序。

eenim

赞同来自:

这是我的小兄弟过去学习的一本很棒的书: http://pine.fm/LearnToProgram/ 当然,最重要的是在完成本书后立即开始一个真正有用的程序。

qquod

赞同来自:

我建议从C/C++开始。我发现它是所有其他语言的良好基础。而且,不同版本的BASIC可能会非常不方便,而且与实际编程没有真正的关联。

veos

赞同来自:

我认为学习编程是因为你想学习编程,永远不会像学习编程那样好,因为你想做点什么。如果你能找到你的兄弟有兴趣做的工作,因为他想让它工作,那么你可以把他留给谷歌,他会这样做。他会让你在附近检查他是否正沿着正确的道路前进。 我认为抽象教学中编程最大的问题之一是它没有一个真实世界的环境,学习者可以在情感上进行投资。编程很难,并且必须有一些真正的回报来使它值得付出努力做到这一点。就我而言,我在uni完成了计算机科学,在那里学习了Pascal和COBOL,并在此之前在家里学习了BASIC,但直到90年代我成为一名自雇网站设计师时,我才真正了解它,客户在他们的网站上需要功能,并且愿意支付比功能多10倍的功能。把食物放在桌子上是一个动力! 所以我学习了Perl,然后是ASP/VBScript,然后是JavaScript,然后是Flash/ActionScript,然后是PHP - 这些都是为了创造我想要发生的事情。

ddolor

赞同来自:

我认为,一旦他掌握了基本知识(变量,循环等),你应该试着帮助他找到他感兴趣的具体内容,并帮助他学习实现目标的必要性。我知道如果我感兴趣的话,我会更加倾向并且有动力去做某件事。此外,请确保让他尽力解决一些棘手的问题,没有什么比你自己解决问题更令人满意。

eipsum

赞同来自:

我只是让他写很多代码。让他驾驶你所做的一切,并且随时回答问题。 不管你信不信,经过几个月的写作蹩脚的代码,他会开始明白并开始编写更好的程序。在这一点上,你可能陷入细节(记忆等),也谈论一般的设计原则。 我听说,伟大的艺术家与平庸艺术家的区别在于,每次他们练习时,他们都会在某些方面有所改进,无论多小。让你的兄弟练习,每当他坐在键盘上时,他都会改进。

Edit: [Justin Standard] Esteban, this reminds me of a recent coding horror post, and I do think you are right. But I think its still worthwhile to find methods to guide his practice. No question, I want him writing as much code as he knows how to do. Thats one reason I'm asking for sample projects.

lquia

赞同来自:

我通过学习如何使用流程图和PDL(程序设计语言)以语言不可知的方式解决问题而受教。几周后,我学会了将我写过的PDL转换成一种语言。我很高兴自己能够这样学习,因为我花了大部分时间编程,解决了问题而不受语言限制。我使用的语言一直是实现细节,而不是设计的一部分。 通过将问题分解成基本步骤来解决问题是一项关键技能。我认为这是将那些可以编程的和不能编程的编程分开的东西之一。 至于你如何处理语言概念的顺序,我认为最简单的方法就是决定是否有一个项目,并根据需要处理概念。这可以让你根据需要将它们应用于你感兴趣的事情。在学习一门语言时,考虑几个简单的项目和一些渐进的复杂性是很好的。决定这些将帮助您绘制出所需的概念和顺序。

pullam

赞同来自:

首先,我认为已经有了一些很好的答案,所以我会尽量不要太多。

  • 让他们写很多代码,让他们问问题以保持大脑的果汁流动。
  • 我会说,不要让真正的详细信息陷入困境,直到他们或者遇到他们的含义,或者他们问。
  • 我认为我要确保的最重要的一点是他们理解框架的核心概念。我知道你正在使用Python(我不知道),但是例如,让ASP.NET让人们了解模型背后的页面/代码可能是一个真正的挑战,但它的关键他们明白这一点。举个例子,我最近在论坛上提出了一个关于“我的数据访问代码放在'cs'文件或'aspx'文件
    ”的问题。 所以我想说,大多数情况下,让他们引导,只是在那里支持他们在需要的地方,并提出更多的问题来保持兴趣。只要确保他们有基本面,并且不让他们在走路前跑步。 祝你好运!

wnihil

赞同来自:

我也会推荐观看一些屏幕录像 - 它们通常是在特定技术而不是语言的背景下创建的,但如果显示了Python代码,那么它们就会做:)。关键是 - 他们是由一些优秀的程序员创建的,并且看好程序员编程是一件好事。你和你的兄弟也可以做一些同行编程,这可能是一个更好的主意。不要忘记解释为什么你这样做,而不是那样。 我认为学习编程的最好方式是从好的例子,尽量不要看到坏的例子。

fomnis

赞同来自:

Robert Read写了一篇有用的指南How to be a Programmer,其中涵盖了大量的编程问题,初学者会发现它们很有帮助。

funde

赞同来自:

已经有一堆很好的答案,但对于一个绝对的初学者,我会全心全意地推荐Hackety Hack。它是由不合理的多产why_the_lucky_stiff专门为新程序员提供BASIC/LOGO/Pascal环境而创建的。它基本上是一个漂亮的Ruby IDE,包含一些优秀的库(Flash视频,IM,Web服务器)和交互式课程。它为编程提供了一个很好的选择,因为它选择了有趣,有用的课程。 “你好,世界”可能不会让人印象深刻,但在20分钟内创建一个自定义即时通讯客户端可以激励某人继续学习。玩的开心!

hiure

赞同来自:

一行一行地复制一些简单的代码,让他们在阅读和解释过程中一起阅读。他们很快就会解决问题。我开始使用Acorn杂志的代码片段对Acorn Electron进行编程。当我6岁时,我不知道编程,我习惯复制文本,但逐渐学会了不同的单词意味着什么。

vfugit

赞同来自:

我会在第一次教学时推荐几乎所有语言都使用的基础知识,但是在没有语言的情况下这样做。概述所有的基本概念如果 - 否则如果 - 否则,循环,类,变量类型,结构等所有基础概念都是大多数语言的基础。然后转向真正理解布尔,比较和复杂的AND OR语句,以了解更复杂的语句的结果。 通过这样做,他将理解编程的概念,并且更容易进入语言,从那里学习语言,函数和语法的复杂细节。

xet

赞同来自:

我最喜欢的“开始学习代码”项目是Game Snakes Tron ,因为它允许您启动缓慢(变量来存储当前的“蠕虫位置”如果蠕虫长于一个“块”,则蠕虫定位,使蠕虫移动,如果/切换以允许用户改变蠕虫的方向,......)。它还允许从长远来看包括越来越多的东西到项目中,例如,面向对象的编程(一个蠕虫是一个有机会同时产生两个蠕虫的对象)和继承(从“Snakes”到“Tron”或其他蠕虫略微改变行为的方式)。 我建议你使用Microsoft's XNA来启动。根据我的经验,如果您可以在屏幕上看到某些内容,开始编写程序会更有趣,而且XNA使得在屏幕上移动内容变得非常容易。很容易做一些小小的改变,然后再看看,例如通过改变颜色,他可以看到他的行为有效果 - >成功的印象。成功是有趣的,这是继续学习的动力。

et_est

赞同来自:

这可能听起来很愚蠢,但你为什么试图教你的兄弟编程? 通常最好的学习环境包括一个可以通过敏锐的初学者(一个样本程序),充足的资源(谷歌/教程/书籍)和一个知识渊博的建议来实现的目标,这些建议可以在需要时提供指导。 你肯定可以帮助你解决前两个问题的建议,但最后一个是你的主要角色。

nvelit

赞同来自:

我建议采取与本书Accelerated C++类似的方法,它们涵盖了C++的一些通常用于制作简单程序的部分。对于任何新加入编程的人来说,我认为只需要付出一点努力就可以让他们感兴趣。一旦你了解了Python的基础知识,那么你应该坐下来让他体验一下这门语言。 在本学期我的一门大学科目中,他们采取了一种叫做“基于问题的学习”(PBL)的方法,在这种方法中,他们使用讲座来激发学生对不同问题的解决方法。既然你的兄弟很热心,你应该采取类似的方法。设置他的小型项目,并让他自己解决。然后一旦完成,你可以通过他的方法,并用不同的方法进行比较和对比。 如果你可以给他恰当的帮助,让他朝正确的方向发展,那么他应该没问题。为他提供一些很好的网站和书籍也是一个好主意。 我还建议在开始阶段远离IDE。使用命令行和文本编辑器将使他更深入地了解编译/汇编代码所涉及的过程。 我希望我能得到一些帮助。 :)

bmagni

赞同来自:

这个线程作为初学者(> 100行代码)程序员对我非常有用。 基于我所经历的一切,一旦我完成了“Hello World”并转向了变量和“if/else”语句,我就用了太多的语法;不知道如何处理他们。 因此,通过一个有趣的简单项目,我可能会重新获得我的兴趣。这里有相当多的项目建议。 我可以在这里提问吗? 首先学习像Autohotkey这样的脚本语言会更好吗?

Edit: [Justin Standard] I think learning something macro-based like Autohotkey will only help minimally. Try learning a "real" programming language first. The easiest to get started with (according to most people) are python and ruby. I favor python, but both are pretty simple. There is also a full stackoverflow post that answers the question of which language to start with.

wnihil

赞同来自:

起初我对不同的程序是如何工作感兴趣,所以我开始看着源代码。然后当我开始了解程序是如何工作的时候,我会改变某些参数来看看会发生什么。所以基本上我在学习如何写作之前就学会了如何阅读。这恰恰是大多数人学习英语的方式。 所以,如果我试图教某人如何编程,我会给他们一个小程序来尝试阅读和理解它是如何工作的,并让他们只是玩弄源代码。 只有到那时我才会给他们“任务”去努力完成。 现在,如果他们有特别的理由想要学习如何编程,那么从他们想要完成的任务开始,肯定是一个好主意。例如,如果他们想熟练掌握像blender这样的应用程序,那么从Alice开始,这绝对是一个好主意。 我绝对推荐坚持使用垃圾收集的语言,比如DPerl或者一些解释性语言,比如javascript。在Perl 6接近完成之前,远离Perl可能是一个好主意,因为它解决了一些阅读和理解Perl的困难。

funde

赞同来自:

一开始有很多事情让我感到沮丧,但不过是简单的机制。概念,我立即采取。但错过一个右大括号?在一个非平凡的程序中很容易做,而且往往很难调试。 所以,我的卑微建议是:不要低估基本知识(比如打字好)。它听起来很矫揉造作,甚至很愚蠢,但是当我偶然发现了一种简单的方法来输入代码结构的完整“骨架”,然后将其填入时,它在我的学习过程的早期为我节省了很多痛苦。 对于Python中的“if”语句,从下面开始:

if  :
在C/C++/C#/ Java中:
if () 
{
}
在Pascal/Delphi中:
If () Then
Begin
End
然后,在开始和结束令牌之间输入。一旦这成为一个固定的习惯,所以你没有想到就会这样做,更多的大脑被释放出来做有趣的事情。我承认,这不是一个很华丽的建议,但是我亲眼看到的一个很棒!
Edit: [Justin Standard] Thanks for your contribution, Wing. Related to what you said, one of the things I've tried to help my brother remember the syntax for python scoping, is that every time there's a colon, he needs to indent the next line, and any time he thinks he should indent, there better be a colon ending the previous line.

taut

赞同来自:

我的个人经历从初级使用Logo Writer开始(这种方式已经演变成Scratch),因为我是一个小子元素,电脑不像现在这么棒,但是暂时把我带到了不知名的地方,我以前就是这么想的......我认为这就是我对这个行业的兴趣所在......我可以说,这些基于这种简单和冷静的第一印象使得这些商品永远铭刻在我的脑海中。这就是应该教授编程教学的基础知识......一个渴望神奇的简单过程。 回到我的第一个CS 101中,我从建立龙舌兰日出(一步一步的过程,可以随时用正确的成分重复,这将导致相同的输出)的算法开始,从那里开始我们继续使用Scheme实现基本的数学函数(就像EHaskins所说的......从小处开始然后建立起来),然后从那里到循环,布尔逻辑,结构的概念,然后构建成对象的概念和一些模拟执行。 。 这种方法的好处之一是,语言不是目标,而只是学习编程概念和基础知识(就像操作员,功能和其他数学一样)的工具。 恕我直言,学习编程的基础知识和创建基础可能是你可以教给你兄弟的最好的东西,一旦目标被覆盖,你就可以继续使用像python这样的更通用的语言,并教给他们更高的概念,如架构和设计模式(让他们在这个过程中变得自然,所以他会从早期阶段就习惯良好实践,并将其视为过程的一部分)......我们远未重新发明温暖的水,但我们总是必须从创造火焰开始。 从那里开始,天空就是极限!

lvel

赞同来自:

这个怎么样:Nat Torkington的Spawning the next generation of hackers

uvero

赞同来自:

在我的偏见中,C是最好的开始。语言很小,高级功能无处不在,低级功能让您可以学习机器。 我发现C Primer Plus, 5th Edition对于几乎没有编程经验的初学程序员非常有帮助。它假定没有以前的编程经验,读起来很有趣,涵盖C深入(包括最新的C99标准)。

lillo

赞同来自:

有一本名为代码的书。我不记得是谁写的,但它经历了我们(程序员)所了解和理解的很多东西的基础知识,我们所交谈的人也知道。一切从你如何计算二进制文件到处理器的工作方式。它没有任何处理编程语言的东西(从我记得的地方来看),但它是一个相当不错的入门书。我承认,我也是这所学校的一员,他们相信你必须知道计算机如何工作才能有效地为它编程。

vvelit

赞同来自:

我推荐Logo(又名乌龟)来了解基本概念。它提供了一个带有直接图形反馈的良好沙盒,并且可以实现循环,变量,函数,条件等。This page提供了一个很好的教程。 在Logo之后,转到Python或Ruby。我推荐Python,因为它基于ABC,它是为编程教学而发明的。 在编程教学时,我必须首先回顾EHaskins对简单项目和复杂项目的建议。学习的最佳方式是从一个确定的结果和一个可衡量的里程碑开始。它让课程保持专注,让学生建立技能,然后建立在这些技能上,并给学生炫耀给朋友的东西。不要低估为某人的工作展示某种东西的能力。 理论上,你可以坚持使用Python,因为Python几乎可以做任何事情。这是教授面向对象编程和(大多数)算法的好工具。您可以像命令行一样以交互模式运行Python,以了解其工作原理,或者一次运行整个脚本。您可以立即运行解释的脚本,或将它们编译为二进制文件。有成千上万的模块来扩展功能。您可以制作一个图形计算器,就像Windows捆绑的图形计算器一样,或者您可以创建一个IRC客户端或其他任何东西。 XKCD更好地描述了Python的能力:

"You're flying! How?" "Python!" 之后您可以转移到C#或Java,尽管它们不提供Python尚未提供的很多东西。这些好处是他们使用C语言的语法,很多(我敢说最多?)语言使用。你不需要担心内存管理,但是你可以习惯于让语言解释器拥有更多的自由度和更少的手持空间。 Python强制执行空格和缩进,这在大多数情况下都很好,但并非总是如此。 C#和Java允许您在保持强类型的同时管理自己的空白。 从那里,标准是C或C++。这些语言的自由几乎是存在的。你现在负责你自己的内存管理。没有垃圾收集来帮助你。这是你教授真正高级算法的地方(比如mergesort和quicksort)。这是你了解为什么“分段错误”是一个诅咒词的地方。这是您下载Linux内核的源代码并注视深渊的地方。首先编写一个循环缓冲区和一个字符串操作栈。然后工作你的方式。

funde

赞同来自:

如果你的兄弟可以访问iTunes,他可以下载由新南威尔士大学的理查德巴克兰(Richard Buckland)提供的计算机科学入门课程的视频讲座。他是一位引人入胜的讲师,涵盖了计算机基础知识和C语言。如果没有别的,告诉你的兄弟在后台播放视频,一些概念可能通过渗透进入。 :) COMP1917高级计算 - 2008年会话1 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444 如果链接不起作用,请使用以下路径: 主页 - > iTunes U - >工程 - > COMP1917高级计算 - 2008年第一部分

qut

赞同来自:

对于我来说,在IDE中进行探索和实验本身帮助我学习了Java和Visual Basic,但是我学会了艰难编程的基础知识:Perl 5.当时没有一个免费的IDE,所以它意味着在记事本中输入代码,保存它,然后运行perl解释器。 我会说,IDE使编程的基础知识更容易。首先尝试使用控制结构和变量。用Java说:

int a = 5;
for (int i = 0; i < a; i++) {
     System.out.println("i is now " + i);
}
基本上,仅仅学习控制结构和变量就可以让初学者开始编写有趣的东西。

xquis

赞同来自:

关键是有关人员需要解决一些他们想解决的问题。如果你没有一个你想写的程序(以及某些明智而明确的,而不是“我想写下一个Quake!”),那么你不能学习编程,因为你没有什么可以激励你。我的意思是,你可以阅读一本书,并对语言的语法和语义有一个粗略的理解,但是直到你有一个你想写的程序,你永远不会掌握荨麻。 如果这种推动力存在,那么其他一切都只是小细节。

ab_non

赞同来自:

Python对新开发人员来说很容易学习。你不会纠结于内存管理和类型定义的细节。 Dive Into Python是一个很好的Python编程初学者指南。当我的妹妹想学习编程时,我指出她很容易阅读和理解的“起步”系列书籍。我发现很难开始教导某人,因为你没有一个词典来和他们一起使用。首先让他读几本书或教程,并向你提出问题。从那里你可以分配项目和分级。我发现很难教授编程,因为我经历了将近15年的磨合。

et_est

赞同来自:

Project Euler有许多有趣的数学问题,可以为初学程序员提供很好的材料,让他们切入其中。问题开始变得简单并且难度增加,网站为full of sample solutions in various programming languages

faut

赞同来自:

我推荐Charles Petzold的书Code - The Hidden Langauge of Computer Hardware and Software作为计算机工作原理的优秀通用介绍。 这本书中有很多信息(382页),可能需要一些绝对的初学者来阅读,但它非常值得。 Petzold设法解释许多计算机和编程的核心概念,从简单的代码,中继,内存,CPU到操作系统和应用程序。图形用户界面以非常清晰和愉快的方式。它将为任何读者提供对编写代码时幕后实际发生的事情的良好理解。 我当然希望它在我第一次学习编程的时候就在身边!

matque

赞同来自:

有一个wikibook that is pretty good for learning python。 我不知道wikibooks是如何用于其他语言的,但是我个人是从2007年2月的wikibook中学习了python ps - 如果您不熟悉wikibooks,则基本上是书籍创作的维基百科版本。这很难描述,但如果你看看那里的几本书,你会看到它是如何工作的

set

赞同来自:

我不知道什么会对你的兄弟最好,但我知道我从Python开始。我从很小的时候就开始玩各种游戏,想要自己创作,所以我的叔叔向我介绍了python和pygame库。它有很多教程,使得它很容易(在我看来,比用openGL更容易)。 它 限于2d,但您应该从简单的开始。 我的叔叔之所以推荐Python是因为他当时对它感兴趣,但我推荐它,因为它很容易学习,直观(或者像编程语言一样直观),并且简单(但当然不是简单) 。 我个人发现基本的编程仅仅是为了学习当时无聊的编程,但在我去的时候却吸收了相当大的热情。我真的很想学习,以建立一些东西,而不仅仅是为了学习它。

yut

赞同来自:

学习任何东西的最好方法是从基本开始。你可以找到任何好的教科书来解释什么是编程,内存,算法。 下一步选择语言,这取决于老师知道什么或学生为什么要学习。 那么它就是代码,代码,代码。从书中对每个例子进行编码。然后稍微改变它做另一个动作。学习编程是一个积极的过程,而不是被动的过程。您不能只阅读C++ How to Program by Dietal,然后希望编写C++而不必在阅读时积极完成它。 即使你是一位经验丰富的编码人员,也可以在书中编写代码来学习新知识。

godio

赞同来自:

首先问他这个问题:“你想用电脑做什么事?” 然后选择适合他的答案的一组活动,并选择一种允许这些事情完成的语言。如果它是一个简单(或可简化)的脚本环境(例如AppleScript,Ruby,任何shell(Ksh,Bash或甚至.bat文件),那么情况会更好。 原因是:

  1. 如果他对结果感兴趣,那么他的动机可能比如果你让他算上斐波那契的兔子。
  2. 如果他获得了他喜欢的结果,那么他可能会想出您所创建活动的变体。
  3. 如果你在教他,他还没有追求严肃的职业生涯。以后总有时间切换到“工业强度”语言。

ket

赞同来自:

教会年轻人的好资源是免费电子书“用Python发明自己的游戏”: http://pythonbook.coffeeghost.net/book1/IYOCGwP_book1.pdf

mest

赞同来自:

有些事情需要考虑......不是每个人都有能力进行编程: 有些人不能通过以下事情: A = 1 B = 2 A = B (这些人仍然会认为A = 1) Jeff has talked about this too.事实上,我的例子是在链接(并解释,启动)。

xporro

赞同来自:

这看起来很奇怪,但是我开始通过在以前的工作中自动执行任务和数据分析来编写代码。这是通过录制然后研究Excel宏生成的代码来完成的。当然这种方法假设你可以通过VB学习。

afuga

赞同来自:

一些额外的信息,有人可以附加到杰森普拉特在Alice上的早期帖子...特别是Storytelling Alice变体。 虽然该研究的目标是中学女生,但Caitlin Kelleher写的white paper很有趣。

dut

赞同来自:

我和我的子元素一起使用的是CEEBot。它不是python,但它在一个有趣的机器人编程类游戏中教C/Java风格的编程。它瞄准10-15岁,但它是一个非常好的。

cnisi

赞同来自:

拥有小的可获得的目标是学习任何技能的最佳途径之一。编程也不例外。 Python是一门伟大的语言,因为它易于学习,清洁并且仍然可以完成先进的事情。 Python只受限于你的想象力。 让人感兴趣的一种方法是给他们一小时左右的小型项目。当我最初开始学习python时,我正在玩Code Golf。他们有很多小小的挑战,可以帮助教授编程的基础知识。我会建议仅仅试图解决一天中的挑战之一,然后玩弄所学的概念。你必须学习编程乐趣,否则兴趣将很快失去。

uqui

赞同来自:

如果他有兴趣,我不会担心关注游戏或什么。我只是抓住那些初学者'教你自己x'书你要抛出并给它他,让他通过它奋斗。也许在谈论之后再做另一个。之后我会与他配对,这样他就可以知道他读的书是多么的浅薄和蹩脚。然后我开始让他为自己编码。一个网站跟踪垒球统计数据或任何与他有关的事情。对我来说,这是一天中葡萄酒的数据库。 之后,我会开始介绍真实的书籍,领域设计等。

yalias

赞同来自:

Python包VPython - 普通人的3D编程(video tutorial)。 Code example:

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
VPython bouncing ball http://vpython.org/bounce.gif

xnobis

赞同来自:

我浏览了评论,看起来没有人提到Foundations of Programming来自www.CodeBetter.com。虽然需要一点基础,但它肯定是学习过程中的下一步。

ksit

赞同来自:

作为一名非程序员,我从实用程序员那里找到了一本“如何编程”的书,从最基本的角度来看非常有帮助。它适合初学者,平易近人,易于阅读。它不会让你从初学者到专家,但是它会为你准备好选择语言之后该怎么做,然后拿起你的第一本“学习用语言(这里是语言)”的书。

fharum

赞同来自:

其他几个初始平台:

  • 一个好的可编程计算器(这就是我在70年代学到的),HP25然后是HP41,现在是TI69等。
  • 互动式小说平台,如“Inform 7”,提供了整个事物的另一个角度
  • 闪光/ ActionScript中 所有这些都是不同的和吸引人的,其中任何一个都可能引发获得初学者和跑步者所需的那种兴趣。 LBB

oautem

赞同来自:

我建议Think Python

uin

赞同来自:

一旦他掌握了基本知识,我建议将Tower of Hanoi作为一项很好的练习。 我建议从木制玩具开始,如果有的话;让他自己试着解决问题,并以系统的方式描述他的方法。向他展示递归在哪里发挥作用。向他解释移动次数取决于磁盘的数量。 然后,让他编写一个程序,用您选择的语言打印动作序列。

uautem

赞同来自:

你的问题很大程度上取决于你兄弟的年龄和教育程度,但如果他是一个子元素/青少年,我会建议先做一些GUI编程或图形编程(使用Canvas等)。它看起来不错,你有立竿见影的效果。算法很无聊,对于年轻人来说太抽象了(在15岁之前)。 当我开始在ZX Spectrum上进行编程时(我的年龄是12岁),我喜欢在屏幕上绘制各种各样的东西,但它仍然很有趣。直到我大概18岁时,我才了解真正的算法技术。不要误解这种“简单”编程是错误的开始;学习它的人的兴趣是它最重要的部分。 所以,我会研究PyKDE,PyGTK,PyQt或Python + OpenGL(网络上肯定有一些教程,我知道一些捷克教程,但这不会帮助你:))。 当然,如果你的哥哥年龄较大并且接受过数学教育,那么你可以直接转向算法等等。

aquia

赞同来自:

非常好的斯坦福大学视频介绍课程(不需要预先知识): Programming Methodology 将教你每个程序员应该知道的良好的“方法论”和一些Java编程。

fharum

赞同来自:

无论您选择何种语言和环境,如果学生因专业原因想要学习或做“真实”编程(无论是什么),让他们开始在纸上写入他们的入门程序 1 ,然后将它们带走远去跑步。回来输出和/或错误结果,并让他们在纸上修理。 开始时,这并不比在屏幕上运行更困难,但当它们开始发现错误的奇妙世界时,它会使事情变得更容易。 1)简短的“你好,世界!” - 类型的程序仍然有一些逻辑和/或计算,做到这一点可以有几个程序,可以有错误

fharum

赞同来自:

无论他们写什么,都让他们在第一次运行时逐行执行调试程序。让他们亲自看看电脑在做什么。这需要很多神秘的东西,减少恐吓(“哦,每一行真的很简单!”),并帮助他们学习调试技巧,并识别常见错误的常见原因(以及错误原因)

hquas

赞同来自:

+1斯坦福大学讲座。 http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111 他们很简单,高质量,我可以保证他们教初学者(我是其中之一)的能力。

funde

赞同来自:

我建议将“Computer Science Unplugged”作为补充说明材料。

aut_id

赞同来自:

“谁害怕C++” 由海勒 可能值得一试

benim

赞同来自:

Microsoft Small Basic是一个免费的基于.NET的编程环境,旨在为初学者提供一个“有趣”的学习环境。该语言是VB.NET的一个子集,甚至包含一个从Logo语言中熟悉的“龟”对象。该网站包含一个分步教程。

hquia

赞同来自:

我同意上面的superjoe30,但是我没有足够的声望发表评论。 我是一名教授4年的教授。语言是Basic,然后是Pascal,但语言是什么并不重要。 作为一名新教授,我学到的最大教训是,无论我认为一个概念有多简单,对一个新手来说都不是一件简单的事情。永远不要比你的学生走得更快。我无法强调这一点。去真的很慢。 我会从非常简单的东西开始,阅读和打印,也许只是一个简单的计算,只是为了让学生习惯于把东西放进去,并让东西出来。然后IF语句。然后非常简单的FOR循环,总是以学生可以写的东西和一些有趣的东西来表达。 然后,我会花费大约3周的时间教一个称为SIMPL的伪十进制机器的非常简单的机器语言,您可以单步执行。这样做的原因是为了让学生能够看到“橡胶符合道路”的位置,计算机按部就班地做事情,并且事情发生的顺序也会有所不同。如果没有这些,学生会倾向于认为计算机可以有点读懂他们的想法,一次做所有事情。 然后回到基本。几个星期的阵列,因为这是一个巨大的速度颠簸。然后顺序文件,这是另一个减速带。我所说的“减速带”是指学生可以随心所欲地航行,然后用像阵列这样的概念打他们,然后他们再次完全失去知觉,直到你让他们缓解为止。 然后,利用这些技能,我会让他们选择一个学期计划,因为这是编程有趣的原因。没有使用它,这真的很无聊。我会建议各种各样的项目,比如游戏,会计程序,科学计划等。看到它们开启真的很棒。他们经常会问我求助,这很好,因为你知道他们在学习。 在他们完成他们的项目时,我们将继续涵盖更高级的编程技术 - 搜索,排序,合并,如何制作简单的数据库等。 祝你好运。教学是艰苦的工作,但是当你看到学生成长时会感到满意

xsed

赞同来自:

图书:Java Programming for Kids, Parents and Grandparents(PDF) 我没有关于使用这本书的学习的个人经验,但它似乎很好,因为它很快就产生了一些可见的东西,并且不会花费太多时间处理句法上的细节。有人在这里试过使用这本书吗?

funde

赞同来自:

从Python中的Turtle图形开始。 我会使用Python标准的龟图形。它是可视的,简单的,你可以使用这个环境来引入很多编程概念,比如迭代和过程调用,然后才进入语法。在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
在试图完成最后两项任务时,他们会有许多失败的尝试,但失败将会在视觉上引起兴趣,并且他们会在试图弄清楚为什么没有绘制他们所期望的时候快速学习。

uharum

赞同来自:

一旦你教他们如何编程,他们可能想学习如何开发软件.. 因为我认为格雷格威尔逊的Software Carpentry课程很棒..它也使用Python作为学生的语言。

dsit

赞同来自:

我认为Python是一个非常好的语言,首先是::-) 我建议你试试http://www.pythonchallenge.com/ 它的构建就像一个小小的冒险,每一个解决方案都会将你引向一个新的好问题。 解决问题后,您可以访问一个不错的论坛,讨论您的代码并查看其他人创建的内容。

mut

赞同来自:

我可以推荐我的项目PythonTurtle。 概要: PythonTurtle努力提供学习Python的最低门槛的方法。学生们命令一个交互式的Python shell(类似于IDLE开发环境)并使用Python函数移动屏幕上显示的一只乌龟。一个图解的帮助屏幕向学生介绍了Python编程的基础知识,同时展示了如何移动乌龟。 它看起来像这样: alt text http://www.pythonturtle.com/screenshot.gif

jiusto

赞同来自:

我认为Python是一个好主意。我会给他一些基本的任务,让他自己去做,并告诉他,他碰到的任何死路都可能通过去谷歌旅行解决。对我而言,至少,自己解决问题总是比有人告诉我解决方案更好。 一些可能的项目(无特定顺序):

  • 硬币翻转模拟器。让用户输入硬币翻转所需的试验次数。执行它并显示结果以及正面或反面的百分比。
  • 制作带有菜单的温度转换器,该菜单根据用户输入来选择用户想要执行的转换类型。选择转换并执行后,应该返回到主菜单。 以下是一个具有相同想法的扩展转换器的示例:http://pastebin.org/6541
  • 制作一个采用数字输入的程序,并显示它将转换为的字母等级。它最终会根据if和elif语句来评估输入,以找到适合的地方。
  • 做一个简单的测验,通过多项选择或填写空白问题。最后它会显示用户的操作方式。他可以选择他想要的任何问题。
  • 输入一些(可能很大)的便士并将其转换为更大的面值。例如,149便士= 1美元,1美分,2美分和4便士。
  • 创建一个简单的列表管理器。能够添加/删除列表并添加/删除这些列表中的条目。以下是圣诞节列表管理器的示例:http://pastebin.org/6543
  • 创建一个程序,它将构建并测试输入的数字是否构成一个幻方(具有二维数组)。以下是一些示例代码,但它应该在每一步中真正地打印出方块,以便显示用户在建立方块时的位置:http://pastebin.org/6544
  • 我也建议用xTurtle或其他图形模块做一些东西来混合,防止它变得无聊。当然,这是非常多的练习编程,而不是很多人真正使用python的脚本,但我给出的例子几乎直接从我通过python进行学习时获得,并且对我来说非常有用。祝你好运!

oiusto

赞同来自:

尝试在线查找Why's (Poignant) Guide to Ruby的副本。原来的网站是离线的,但我确定那里有几个镜像。这不是您典型的节目指南;它为学习一种可能适合你朋友的新语言提供了一个独特的(和有趣的)旋转。更何况,Ruby是一门很好的学习语言。

vfugit

赞同来自:

使用现实世界的类比和虚构人物来教他们编程。就像我在教人们关于变量和控制语句等 通常我从计算器例子开始。我想象一下,对于每个变量,你都有一个盒子,并且你有10个卡片板,其上印有数字0-9。假设箱子一次可以放一张纸板,并用类似的方式解释编程元素的工作原理 并强调每个操作员的工作原理。就像简单的'='操作符总是首先计算右边的值为一个值。并将该值放入名为“num_1”的框(这是变量名) 这非常有效,因为他们能够很快地想象流量。

hid

赞同来自:

只是让它变得有趣! 令人惊讶的是,如果您尝试Kojo,Scala可能是最简单的

caut

赞同来自:

如果你的兄弟喜欢拼图,我会推荐Python Challenge。我不会把它作为一对一教程中的正式教学工具,但是当你不在一起挑战自己并且有一些乐趣时,他可以做这件事。

rtotam

赞同来自:

Academic Earth提供从顶尖大学免费提供的计算机科学课程的链接。他们有一个面向初级计算机科学的部分。开始课程中讲授的语言各不相同:

  • MIT - 计算机科学与程序设计入门 - Python
  • Stanford - 计算机科学I:编程方法论 - Java
  • 哈佛 - 计算机科学入门I - C(主要重点), 与其他几个洒在 好的措施(例如,SQL,PHP,LISP, 汇编器等)
  • 伯克利 - LISP语言的一种方言

lvel

赞同来自:

我不知道是否有人在此提到过,但您可能想查看Zed ShawLearn Python the Hard Way 希望这可以帮助

uanimi

赞同来自:

在阅读了几本免费的电子书后,我发现编写学习的最好的书是由O'Reily出版社出版的Head First Programming。它使用Python作为语言,并为您提供从一开始就可以使用的程序。他们都比'Hello World'更有趣。 这是非常值得我花在它上面的钱,因为它已经出来了一点,你可能能够找到一个便宜的二手拷贝在易趣或亚马逊。

xet

赞同来自:

问问你的兄弟是否有一些他想做的事情,或者为他发明一个他认为会让他感兴趣的项目。 有些地方他可以知道产出应该是什么,并将他指向与项目相关的材料(在线或印刷品)。如果他进入蟒蛇或编程“寒冷”,耐心等待,因为他通过理解语法,错误,范围等基本知识而努力工作,并准备放下脚步,让他跑步并在开始看到灯光时犯下自己的错误灯泡在他的头上继续。

funde

赞同来自:

我强烈建议John Zelle使用Python Programming: An Introduction to Computer Science 2nd Edition。它面向初学者,处理编程的语义。阅读后,由于Zelle的语义和句法方法,您将能够更快地学习其他语言。一探究竟!

alber1986

赞同来自:

这有很多python视频教程,可以看着学啊 http://www.sucaihuo.com/video/172-0-0