最初的问题

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

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

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


当前回答

我浏览了一下评论,似乎没有人提到www.CodeBetter.com上的编程基础。虽然它需要一些基础知识,但它肯定是学习过程中的下一步。

其他回答

我会让他写大量的代码。你们做什么事都让他插手,随时回答问题就好。

信不信由你,在写了几个月的烂代码之后,他会开始明白这个想法,并开始写更好的程序。在这一点上,你可以陷入细节(内存等),也可以谈论一般的设计原则。

我听说伟大的艺术家和平庸的艺术家的区别在于,他们每次练习都会在某些方面有所改进,不管这些改进有多小。让你弟弟练习,他每次坐在键盘前都会进步。

编辑:[Justin Standard] 埃斯特班,这让我想起了最近的一篇编程恐怖文章,我认为你是对的。但我认为仍然值得寻找方法来指导他的实践。毫无疑问,我希望他能写尽可能多的代码。这是我要求样本项目的原因之一。

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

如果他感兴趣,那些小细节不就是好地方吗?使用python时,您已经切断了GUI,这样就不会有困惑了。为什么不选择一个项目,一款游戏或其他东西,然后执行它呢?经典的高低数字猜谜游戏可以简单地从命令行中用20-30行代码(当然取决于语言)实现,并为您提供变量、条件、循环和用户输入。

我同意上面的superjoe30,但我还没有足够的声誉来留下评论。

我做了四年的计算机科学教授。语言是Basic,然后是Pascal,但语言是什么并不重要。

作为一名新教授,我学到的最大的一课是,无论我认为一个概念有多简单,它对新手来说都不简单。不要比你的学生快。我怎么强调都不为过。非常非常慢。

我会从非常简单的东西开始,阅读和打印,也许是一个简单的计算,只是为了让学生习惯输入和输出一些东西。然后是IF语句。然后是非常简单的FOR循环,总是根据学生可以编写的内容,并从中获得乐趣。

然后我会花3个星期的时间教授一种非常简单的机器语言,用于一台叫做SIMPL的伪十进制机器,你可以一步完成。这样做的原因是为了让学生看到“橡胶遇见道路”的地方,计算机一步一步地做事情,事情发生的顺序是不同的。如果没有这一点,学生们倾向于认为计算机可以读懂他们的思想,并一次性完成所有事情。

然后回到基本。几周的阵列,因为那是一个很大的减速带。然后是顺序文件,这是另一个减速带。我所说的“减速带”是指学生可以很自信地前进,然后你给他们一个像数组这样的概念,他们又完全迷失了,直到你让他们放松下来。

然后,有了这些技能,我会让他们选择一个学期项目,因为这让编程变得有趣。没有用处,真的很无聊。我会建议各种各样的项目,比如游戏、会计课程、科学课程等等。看到它们被打开真是太好了。他们经常会向我寻求帮助,这很好,因为你知道他们在学习。

当他们在做他们的项目时,我们将继续介绍更高级的编程技术——搜索、排序、合并,以及如何创建一个简单的数据库等等。

祝你好运。教书是一项艰苦的工作,但当你看到学生的成长时,你会感到满足。

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