最初的问题

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

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

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


当前回答

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

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

其他回答

我曾经教过编程,你哥哥有一个主要的优势,他比我的大多数学生都想学:)

如果你决定使用C语言,一个朋友有一个网站,上面有一些老一代使用的程序,被认为是基本的输入程序。其中更复杂的使用ncurses,这在某种程度上否定了它们作为教学辅助的作用,但其中一些是很小的东西,你可以在没有教的情况下学到很多东西。

我个人认为Python和Ruby会是很棒的第一语言。

编辑: 一夜之间出现的初学者编程作业列表可能正是你正在寻找的。

实际上,我认为应该选择一种指令更少、更简单的语言。我自己在家学习BASIC语言,杰夫也是。这样,您就不必深入研究更复杂的问题,如面向对象编程,甚至如果您不想深入研究过程的话。一旦他能够处理简单的控制流,就可以转向一些更复杂的东西,但只有简单的功能。

也许从两个数字相加的简单程序开始,然后发展到可能需要一个分支的程序,然后可能读取输入并对其做出响应,然后是某种循环,并开始将它们组合在一起。只要从小事开始,然后慢慢做。不要做任何大的项目,直到他掌握了基本知识(否则它可能太令人生畏,他可能会中途放弃)。一旦他掌握了BASIC或者你选择的任何东西,就转向更复杂的东西。

只有我的0.02美元

从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

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

问问你的兄弟,他是否想为他做一些你认为他会感兴趣的程序或发明一个项目。

他可以知道输出应该是什么,并向他指出与项目相关的材料(在线或印刷)。如果他刚开始接触python或编程,你要有耐心,因为他在理解语法、错误、范围等基础知识的过程中,要准备好让位,让他自己跑,让他自己犯错误,当你开始看到他的头脑中出现了电灯泡。

我建议“不插电的计算机科学”作为补充的教学材料。