最初的问题

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

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

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


当前回答

我认为,因为你想学习编程而学习编程,永远比不上因为你想做某事而学习编程。如果你能找到一些你弟弟感兴趣的东西,因为他想让它起作用,你可以把谷歌留给他,他会做的。他会让你在他身边检查他是否走对了路。

I think one of the biggest problems with teaching programming in the abstract is that it's not got a real-world context that the learner can get emotionally invested in. Programming is hard, and there has to be some real payoff to make it worth the effort of doing it. In my case, I'd done computer science at uni, learned Pascal and COBOL there, and learned BASIC at home before that, but I never really got anywhere with it until I became a self-employed web designer back in the 90s and my clients needed functionality on their web sites, and were willing to pay about 10x more for functionality than for design. Putting food on the table is a hell of a motivator!

所以我学习了Perl,然后是ASP/VBScript,然后是JavaScript,然后是Flash/ActionScript,然后是PHP——所有这些都是为了让我想要的东西发生。

其他回答

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

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

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

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

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

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

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

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

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

让它变得有趣就好!

令人惊讶的是,如果您尝试Kojo, Scala可能是最简单的

无论你选择哪种语言和环境,如果学生是出于专业原因或“真正的”编程(不管那是什么)而学习,让他们先在纸上写下他们的初始程序,然后带着它们去运行。返回输出和/或错误结果,并让他们在纸上修复错误。

刚开始,这并不比在屏幕上执行并点击运行更难,但当他们开始发现bug的奇妙世界时,事情会变得容易得多。

1)简短地说:“你好,世界!”-type仍然有一些逻辑和/或计算的程序,对一些可能有bug的程序这样做

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

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

我认为,因为你想学习编程而学习编程,永远比不上因为你想做某事而学习编程。如果你能找到一些你弟弟感兴趣的东西,因为他想让它起作用,你可以把谷歌留给他,他会做的。他会让你在他身边检查他是否走对了路。

I think one of the biggest problems with teaching programming in the abstract is that it's not got a real-world context that the learner can get emotionally invested in. Programming is hard, and there has to be some real payoff to make it worth the effort of doing it. In my case, I'd done computer science at uni, learned Pascal and COBOL there, and learned BASIC at home before that, but I never really got anywhere with it until I became a self-employed web designer back in the 90s and my clients needed functionality on their web sites, and were willing to pay about 10x more for functionality than for design. Putting food on the table is a hell of a motivator!

所以我学习了Perl,然后是ASP/VBScript,然后是JavaScript,然后是Flash/ActionScript,然后是PHP——所有这些都是为了让我想要的东西发生。