The idea is that I somehow make it sound... too easy? Like it should
be obvious. But when it doesn't immediately click, it makes the
listener feel stupid. And that's when learning stops and inecurities
This reminds me of the first time I was teaching an intro to programming class and I was going through a live demo of how some code worked. I ...
Teaching someone you have a close relationship with can be difficult or impossible for many people. And it isn't just an issue on the "teacher" side of the relationship but is also evident in possible psychological effects on the "student" side. It is best to recognize this and may be necessary to avoid such attempts. I know that I've found similar ...
I almost always teach programming by connecting each component of programming with something in real life. For instance, when explaining variables, I ask the students to imagine them as boxes in which you put things, like food items or gifts or something similar.
For methods, I ask them to think of their friends. For instance, there will be a 'rich' friend,...
Perhaps I'm wrong, but your question (and your example) seems to imply that your intention is too "teach them Ruby". For beginners that seems backwards to me. My intention would be to teach them to "solve interesting problems".
Once someone already knows "how to program" in some language it seems fine to teach them a (different) language. But focusing on ...
You got some good specific answers already. Here are a couple of small points that could be useful when teaching in general:
Without seeing a transcript of one of your explain-the-programming sessions, I can't say for sure, but it's possible that your word choice is also a factor.
An example: Something I run into a lot is the word just, as in "What is a ...
The idea is that I somehow make it sound... too easy? Like it should be obvious. But when it doesn't immediately click, it makes the listener feel stupid.
It's common to want to put your student at-ease by saying things like this:
"You just need to transmogrify the jabberwocky."
"All you need to do is reverse the polarity on the ...
Subroutines/methods are a way to reuse code. As is iteration (loops). They are also a way to document what code does.
Therefore show how they can be used to reduce the amount of code: to make the program simpler, and to make it more readable. Note that there is often resistance as a new concept: as, temporarily, it does not make sense, so is not simpler.
A function to perform a procedure often has a void return type. For example:
function foo(a, b, s)
// tell sphero s to go one direction a, another b
You are executing a procedure as a side effect and are not returning a computed value.
Have them write up a straight class and document it. Here are some ideas.
Complex Numbers: Create a class that spawns complex numbers and does their arithmetics. Throw exceptions where needed.
Big Fraction: Create a class for extended-precision rational arithmetic. You will need +, -, * and /.
Quaternions: These are used extensively in computer ...