最初的问题

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

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

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


当前回答

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

其他回答

其他几个起步平台:

一个好的可编程计算器(这是我在70年代学到的),HP25, HP41,现在TI69等等。 像“Inform 7”这样的互动小说平台提供了另一种视角 Flash / ActionScript

所有这些都是不同的,引人入胜的,其中任何一个都可能激发一种兴趣,这是跑步初学者所必需的。

LBB

从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

在尝试完成最后两个任务时,他们会有很多失败的尝试,但这些失败在视觉上很有趣,他们会很快学会,因为他们试图弄清楚为什么没有画出他们期望的样子。

学习任何东西最好的方法就是从基础开始。你可以找到任何一本好的教科书来解释什么是编程,内存,算法。

下一步选择语言,这取决于老师知道什么或者学生为什么想学。

然后就是代码,代码,代码。对书中的每个例子进行编码。然后稍微改变它来做另一个动作。学习编程是一个主动的过程,而不是被动的过程。你不能只读了Dietal写的c++如何编程,然后就指望在阅读时不主动地编写c++代码。

即使你是一个有经验的程序员,写书中的代码来学习一些新东西也会有帮助。

不管他们写什么,让他们在第一次运行时在调试器中逐行逐行地检查。让他们自己看看电脑在做什么。这消除了许多神秘感,减少了恐惧(“哦,每一行真的都那么简单!”),并帮助他们学习调试技能,并认识到为什么常见错误是常见的(以及为什么它们是错误)。

如果你哥哥喜欢智力游戏,我推荐你去Python挑战。我不会把它作为1对1教程的正式教学工具,但当你们不在一起时,他可以这样做,挑战自己,找点乐子。