Disclaimer: I'm a teacher at Dev Bootcamp (http://devbootcamp.com). Everything I say comes from love -- if I didn't care about this deeply I wouldn't bother to remark in the first place. :)
Very nice! We can always use more absolute-beginner tutorials in the world.
Just started the Ruby tutorial:
"Great! So what just happened here? To begin with, let's define what you typed 2 + 2 as instructions. The ruby console reads your typed instructions, interprets it, and then acts on the instructions the way you gave it. This step is called evaluation. Instruction when complete are called an expression. If the instructions you have typed are incomplete (for example, if you typed 2 + and hit enter), this console will show an error message. The instruction you typed, 2 + 2 is an expression. It is important to remember that evaluation of an expression always returns a value. This value is what is shown as result on the console. In this case, 4 was the result of the evaluation."
If someone honestly knows nothing about coding, you've probably just lost them right there. Questions a beginner would ask:
* What is a "ruby console?"
* What instructions? I typed "2+2."
* What does "interprets" mean?
* How can instructions be complete? Were they ever incomplete? How do I know when they're complete?
* "Returns?" "Value?" "Result?"
In a few sentences, with jargon highlighted:
I type instructions into a console which turn into expressions when they're complete. The consoleevaluates the expression and returns a value, which is shown as a result on the console.
A beginning programmer won't have the mental models necessary to make sense any of that. It's context-free. Most of those words have no prior associations, and those that do will lead them astray. Metaphor is your friend.
I second this. For anyone trying to teach computers (and anything else), this will save you from repeating all the mistakes that all the other computer programming education startups are making/will make in the future.
Again, just to be clear, this book is really really really really important.
Mindstorms? I did a quick google and there are assorted books with that title (after you filer out "lego"). None seemed to be relevant to this discussion.
Very nice! We can always use more absolute-beginner tutorials in the world.
Just started the Ruby tutorial:
"Great! So what just happened here? To begin with, let's define what you typed 2 + 2 as instructions. The ruby console reads your typed instructions, interprets it, and then acts on the instructions the way you gave it. This step is called evaluation. Instruction when complete are called an expression. If the instructions you have typed are incomplete (for example, if you typed 2 + and hit enter), this console will show an error message. The instruction you typed, 2 + 2 is an expression. It is important to remember that evaluation of an expression always returns a value. This value is what is shown as result on the console. In this case, 4 was the result of the evaluation."
If someone honestly knows nothing about coding, you've probably just lost them right there. Questions a beginner would ask:
* What is a "ruby console?"
* What instructions? I typed "2+2."
* What does "interprets" mean?
* How can instructions be complete? Were they ever incomplete? How do I know when they're complete?
* "Returns?" "Value?" "Result?"
In a few sentences, with jargon highlighted:
I type instructions into a console which turn into expressions when they're complete. The console evaluates the expression and returns a value, which is shown as a result on the console.
A beginning programmer won't have the mental models necessary to make sense any of that. It's context-free. Most of those words have no prior associations, and those that do will lead them astray. Metaphor is your friend.
For reading, I recommend Bret Victor's essay on Learnable Programming: (http://worrydream.com/LearnableProgramming/) and Mindstorms by Seymour Papert (http://www.amazon.com/Mindstorms-Children-Computers-Powerful...).