最初的问题

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

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

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


当前回答

在我的偏见看来,C是最好的起点。语言很小,它的高级功能无处不在,低级功能让你学习机器。

我发现C Primer Plus第5版对于一个几乎没有编程经验的初学者非常有帮助。它假定没有编程经验,读起来很有趣,并深入介绍了C语言(包括最新的C99标准)。

其他回答

首先,像其他人一样开始:使用Hello World程序。这很简单,它让他们对程序的布局有了基本的感觉。试着回想一下你第一次编程的时候,以及一些概念有多么困难——从简单开始。

在Hello World之后,继续创建一些基本变量、算术,然后是布尔逻辑和if/else语句。如果你有一本旧的编程教科书,可以查看一些早期的例子,并让他浏览一下。只是不要一下子介绍太多,否则会让人不知所措。

有一个小的,可实现的目标是学习任何技能的最好方法之一。编程也不例外。Python是一种很好的入门语言,因为它容易学习,简洁,仍然可以做高级的事情。Python只受限于你的想象力。

真正让别人感兴趣的一个方法是给他们一些他们可以在一个小时左右完成的小项目。当我最初开始学习python时,我玩的是Code Golf。他们有许多有助于教授编程基础知识的小挑战。我建议每天尝试解决一个挑战,然后运用所学到的概念。你必须让学习编程充满乐趣,否则你很快就会失去兴趣。

There is a book called Code. I can't remember who wrote it, but it goes through the basics of a lot of stuff that we (programmers) know and take for granted that people we talk to know also. Everything from how do you count binary to how processors work. It doesn't have anything dealing with programming languages in it (well from what I remember), but it is a pretty good primer. I will admit that I am also of the school that believes you have to know how the computer works to be able to effectively program things for it.

我认为Python是个好主意。我会给他一些基本的任务让他自己去做,并告诉他,他遇到的任何死胡同都可以通过谷歌来解决。至少对我来说,自己解决问题总比别人告诉我解决方案更好。

一些可能的项目(排名不分先后):

Coin flip simulator. Let the user input a desired number of trials for the coin flipping. Execute it and display the results along with the percentage for heads or tails. Make a temperature converter with a menu that takes user input to choose which kind of conversion the user wants to do. After choosing the conversion and doing it, it should return to the main menu. Here's an example of an extended converter with the same idea: http://pastebin.org/6541 Make a program that takes a numeric input and displays the letter grade it would translate to. It'll end up evaluating the input against if and elif statements to find where it fits. Make a simple quiz that goes through several multiple choice or fill in the blank questions. At the end it will display how the user did. He can pick any questions he wants. Take an input of some (presumably large) number of pennies and convert it into bigger denominations. For example, 149 pennies = 1 dollar, 1 quarter, 2 dimes, and 4 pennies. Create a simple list manager. Be able to add/delete lists and add/delete entries in those lists. Here's an example of a christmas list manager: http://pastebin.org/6543 Create a program that will build and then test whether entered numbers form a magic square (with a 2D array). Here's some sample code, but it should really print out the square at each step in order to show where the user is in terms of buliding the square: http://pastebin.org/6544

我还建议用xTurtle或其他图形模块做一些事情,把事情混合起来,让他不会感到无聊。当然,这是非常多的实践编程,而不是很多人真正使用python的脚本,但我给出的例子几乎直接取自我通过python学习的时候,它对我来说非常有用。好运!

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

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

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

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