最初的问题

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

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

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

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

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

其他回答

如何设计程序

计算机程序的结构与解释“,”视频讲座网址:http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/

不如这样:纳特·托金顿(Nat Torkington)的《培养下一代黑客》。

Project Euler有许多有趣的数学问题,可以为初学者提供很好的材料。问题开始很简单,然后难度逐渐增加,网络上充满了各种编程语言的示例解决方案。

起初,我对不同的程序是如何工作的很感兴趣,所以我从查看源代码开始。然后,当我开始了解程序的工作原理时,我会改变某些参数,看看会发生什么。所以基本上我在学会写字之前就学会了阅读。巧合的是,大多数人都是这样学英语的。

所以如果我想教别人如何编程,我会给他们一个小程序,让他们试着阅读和理解它是如何工作的,让他们只是玩玩源代码。

只有这样,我才会给他们布置“任务”去完成。

现在,如果他们有一个特别的原因想要学习如何编程,那么从他们想要完成的事情开始肯定是一个好主意。例如,如果他们想精通blender这样的应用程序,从Alice开始肯定是个好主意。

我绝对推荐使用具有垃圾收集功能的语言,如D、Perl或一些解释性语言,如javascript。在Perl 6接近完成之前远离Perl可能是一个好主意,因为它解决了阅读和理解Perl的一些困难。

你可以试试爱丽丝。这是一个为编程入门课程设计的3D程序。

对于新程序员来说,最大的两个障碍通常是:

语法错误 动机(写一些有意义和有趣的东西而不是做作的)

Alice使用拖放界面来构造程序,避免了语法错误的可能性。Alice允许你构建3D世界,让你的代码控制(简单的)3D角色和动画,这通常比实现链表有趣得多。

有经验的程序员可能会把Alice当作玩具,嘲笑拖放代码行,但研究表明这种方法是有效的。

免责声明:我为Alice工作过。