最初的问题

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

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

我们正在使用的语言是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编程:计算机科学介绍第二版


当前回答

关键的是,这个人需要有一些他们想要解决的问题。如果你没有一个你想要编写的程序(并且是一些合理且定义明确的东西,而不是“我想要编写下一个Quake!”),那么你就无法学习编程,因为你没有任何激励你的东西。我的意思是,你可以读一本书,粗略地了解一种语言的语法和语义,但除非你有一个你想要编写的程序,否则你永远不会迎难而上。

如果这种推动力存在,那么其他一切都只是次要细节。

其他回答

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

用现实世界的类比和想象的人物来教他们编程。比如当我教人们变量和控制语句的时候。

通常我从计算器的例子开始。我说,想象你有一个盒子,每个变量都有10个卡板,上面印着数字0 - 9。假设这个盒子一次可以装一个纸板,用类似的方法解释编程元素是如何工作的

并强调每个操作符是如何工作的。像简单的'='操作符一样,总是先将右边的值计算为一个值。然后将该值放入名为num_1(变量名)的框中

这是非常非常有效的,因为他们能够非常快速地想象流动。

My favourite "start learning to code" project is the Game Snakes or Tron because it allows you to start slow (variables to store the current "worm position", arrays to store the worm positions if the worm is longer than one "piece", loops to make the worm move, if/switch to allow the user to change the worm's direction, ...). It also allows to include more and more stuff into the project in the long run, e.g. object oriented programming (one worm is one object with the chance to have two worms at the same time) with inheritance (go from "Snakes" to "Tron" or the other way around, where the worm slightly changes behavior).

我建议您从微软的XNA开始。根据我的经验,如果你能在屏幕上看到一些东西,开始编程就会有趣得多,而XNA使得在屏幕上移动一些东西变得非常容易。做一些小的改变并获得另一种看法是很容易的,例如通过改变颜色,这样他就可以看到他的行动有效果->成功的印象。成功是有趣的,这是不断学习的巨大动力。

一个很好的python课程是麻省理工学院的A Gentle Introduction to Programming Using python。网上都是免费的,你不必是麻省理工的超级学生也能理解它。

编辑[Justin Standard] 本课程使用这本免费的在线书籍:如何像计算机科学家一样思考 我确实发现它很有用。

+1次斯坦福大学讲座。http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111

它们简单,质量高,我可以保证它们教初学者的能力(我是其中之一)。