最初的问题

我目前正在教我弟弟编程。他完全是个初学者,但很聪明。(他真的很想学)。我注意到我们的一些会议陷入了一些小细节,我觉得我不是很有条理。(但这篇文章的答案有很大帮助。)

我怎样才能更好地有效地教他?是否有一个逻辑顺序,我可以用一个概念一个概念地运行?是否有什么复杂的问题我应该在以后再讨论?

我们正在使用的语言是Python,但任何语言的建议都是受欢迎的。


如何提供帮助

如果你有好的答案,请在你的答案中添加以下内容:

初级练习和项目想法 初学者教学资源 屏幕视频/博客文章/免费电子书 印刷适合初学者的书籍

请用链接描述资源,以便我可以看一看。我想让每个人都知道,我确实在使用其中的一些想法。你提交的内容将在这篇文章中汇总。


初学者在线教学资源:

A Gentle Introduction to Programming Using Python How to Think Like a Computer Scientist Alice: a 3d program for beginners Scratch (A system to develop programming skills) How To Design Programs Structure and Interpretation of Computer Programs Learn To Program Robert Read's How To Be a Programmer Microsoft XNA Spawning the Next Generation of Hackers COMP1917 Higher Computing lectures by Richard Buckland (requires iTunes) Dive into Python Python Wikibook Project Euler - sample problems (mostly mathematical) pygame - an easy python library for creating games Invent Your Own Computer Games With Python Foundations of Programming for a next step beyond basics. Squeak by Example Snake Wrangling For Kids (It's not just for kids!)


推荐印刷书籍的教学初学者

加速c++ Python编程绝对初学者 Charles Petzold编写的代码 Python编程:计算机科学介绍第二版


当前回答

作为一个非程序员,我发现Pragmatic Programmers的《如何编程》这本书从基本的角度来说非常有帮助。对于初学者来说,这本书平易近人,易于阅读。它不会让你从初学者变成专家,但它会让你在选择一门语言并拿起你的第一本“学习用(语言)编程”书时做好准备。

其他回答

我认为,因为你想学习编程而学习编程,永远比不上因为你想做某事而学习编程。如果你能找到一些你弟弟感兴趣的东西,因为他想让它起作用,你可以把谷歌留给他,他会做的。他会让你在他身边检查他是否走对了路。

I think one of the biggest problems with teaching programming in the abstract is that it's not got a real-world context that the learner can get emotionally invested in. Programming is hard, and there has to be some real payoff to make it worth the effort of doing it. In my case, I'd done computer science at uni, learned Pascal and COBOL there, and learned BASIC at home before that, but I never really got anywhere with it until I became a self-employed web designer back in the 90s and my clients needed functionality on their web sites, and were willing to pay about 10x more for functionality than for design. Putting food on the table is a hell of a motivator!

所以我学习了Perl,然后是ASP/VBScript,然后是JavaScript,然后是Flash/ActionScript,然后是PHP——所有这些都是为了让我想要的东西发生。

如果他感兴趣,那些小细节不就是好地方吗?使用python时,您已经切断了GUI,这样就不会有困惑了。为什么不选择一个项目,一款游戏或其他东西,然后执行它呢?经典的高低数字猜谜游戏可以简单地从命令行中用20-30行代码(当然取决于语言)实现,并为您提供变量、条件、循环和用户输入。

我认为一旦他掌握了基本知识(变量,循环等),你应该试着帮助他找到他感兴趣的具体内容,并帮助他学习实现这一目标的必要条件。我知道如果我对某件事感兴趣,我会更倾向于去做,也更有动力去做。同时,确保让他在一些更棘手的问题上挣扎,没有什么比你自己解决问题的那一刻更令人满足的了。

一些额外的信息可以附加到Jason Pratt之前关于Alice的帖子中…具体来说,是一个讲故事的爱丽丝变体。

虽然这项研究针对的是中学女生,但你可能会觉得凯特琳·凯莱赫撰写的白皮书很有趣。

这可能听起来很傻,但你为什么要教你的兄弟编程呢?

最好的学习环境通常包括一个初学者可以达到的目标(一个示例程序),充足的资源(谷歌/教程/书籍),以及在需要时可以提供指导的知识渊博的建议来源。

你当然可以为前两项提供建议,但最后一项才是你的主要角色。