最初的问题

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

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

我们正在使用的语言是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 斯坦福-计算机科学I:编程方法学- Java 哈佛大学-计算机科学概论I - C(主要方向) 还有一些是为了 良好的度量(例如,SQL, PHP, LISP, 汇编程序等) Berkeley -一种LISP语言的方言

其他回答

一开始我遇到了很多困难,但最简单的便是简单的机制。概念,我立刻接受了。但错过了结尾处的大括号?在一个非平凡的程序中,这很容易做到,但通常很难调试。

所以,我的建议是:不要低估基础(比如良好的打字)。这听起来像是补救,甚至有些愚蠢,但当我在学习过程的早期偶然发现输入代码结构的完整“骨架”然后填充它的简单技术时,它为我省去了很多痛苦。

对于Python中的"if"语句,可以从以下语句开始:

if  :

在C / c++ / c# / Java:

if () 
{

}

在Pascal / Delphi:

If () Then
Begin

End

然后,在开始和结束标记之间输入。一旦这成为一个牢固的习惯,你就会不假思索地去做,更多的大脑就会被释放出来做有趣的事情。我承认,这不是一个非常浮夸的建议,但我个人认为它有很多好处!

编辑:[Justin Standard] 谢谢你的贡献,Wing。与你说的相关,我试图帮助我哥哥记住python作用域的语法的一件事是,每当有冒号时,他需要缩进下一行,而每当他认为应该缩进时,最好有一个冒号结束前一行。

这可能看起来很奇怪,但我在以前的工作中通过自动化任务和数据分析开始编写代码。这是通过记录和研究Excel宏生成的代码来完成的。当然,这种方法假设您可以通过VB学习。

一行一行地复制一些简单的代码,让他们一边读一边理解。他们很快就会解决的。我开始用Acorn杂志上的代码片段在Acorn Electron上编程。在我6岁的时候,我对编程一无所知,我习惯抄写文本,但渐渐地我学会了不同单词的意思。

我推荐Logo(又名乌龟)来了解基本概念。它提供了一个具有即时图形反馈的良好沙盒,您可以演示循环、变量、函数、条件等等。这个页面提供了一个很好的教程。

在Logo之后,移动到Python或Ruby。我推荐Python,因为它基于ABC,而ABC是为了教授编程而发明的。

在教授编程时,我必须赞同EHaskins关于先简单项目再复杂项目的建议。最好的学习方法是从一个明确的结果和一个可衡量的里程碑开始。它使课程集中,允许学生建立技能,然后在这些技能的基础上继续发展,并给学生一些可以向朋友炫耀的东西。不要低估工作成果的力量。

Theoretically, you can stick with Python, as Python can do almost anything. It's a good vehicle to teach object-oriented programming and (most) algorithms. You can run Python in interactive mode like a command line to get a feel for how it works, or run whole scripts at once. You can run your scripts interpreted on the fly, or compile them into binaries. There are thousands of modules to extend the functionality. You can make a graphical calculator like the one bundled with Windows, or you can make an IRC client, or anything else.

XKCD更好地描述了Python的强大功能:

You can move to C# or Java after that, though they don't offer much that Python doesn't already have. The benefit of these is that they use C-style syntax, which many (dare I say most?) languages use. You don't need to worry about memory management yet, but you can get used to having a bit more freedom and less handholding from the language interpreter. Python enforces whitespace and indenting, which is nice most of the time but not always. C# and Java let you manage your own whitespace while remaining strongly-typed.

From there, the standard is C or C++. The freedom in these languages is almost existential. You are now in charge of your own memory management. There is no garbage collection to help you. This is where you teach the really advanced algorithms (like mergesort and quicksort). This is where you learn why "segmentation fault" is a curse word. This is where you download the source code of the Linux kernel and gaze into the Abyss. Start by writing a circular buffer and a stack for string manipulation. Then work your way up.

非常好的斯坦福大学的视频介绍课程(不需要先验知识):

程序设计方法学

将教你每个程序员都应该知道的好“方法”和一些Java编程。