tl;dr version: How would you teach a 25 year old girl, who has never taken a programming course, the basics of programming? I'm afraid she won't stay interested in the traditional, text-only approach, so I think I'm going to use Processing, but I'm not exactly sure how just yet. You can skip the rest of this description if you don't want the background.
I know this question has been discussed over and over again, and I've heard answers ranging from "it can't be done" to "use this specific language for these specific reasons". But I've been tasked with a challenge of sorts, and I wanted to get your feedback, as fellow Java programmers.
A friend of mine (she graduated with a degree in psychology and is now going to grad school to learn how to teach kids how to read) recently asked that I teach her how to program ("teach me your nerds", is actually what she said). I think she pretty much just wants a conversational knowledge of programming, so that she can actually have a conversation with me about what I'm doing when I'm sitting in front of the computer for hours. I'm going to translate that and set a goal of teaching her the basics of setting up, writing, and running a program, as well as variables, if statements, and for loops. If she's still interested after that, I can think about more advanced topics.
She knows the basics of how to work a computer, but somehow I don't think she'll stay interested if I teach her using traditional methods (notepad, command prompt, print out some squares or some prime numbers). Therefore, I think I've decided to use Processing, for the reasons outlined here: Processing. Basically, I'm going to start her out with an applet and a game loop, and have her work entirely in the paint method. I know there are pros and cons to that, but I really doubt I can keep a 25 year old girl interested in printing out the Fibonacci sequence.
So, I guess I have two questions: first of all, is my thinking flawed? Is it possible to teach programming without going the traditional route? Should I stick with the basic text-only interface most of us started with? Or is it worth the extra effort to have interesting stuff on the screen to keep her interested?
Secondly, how would you do this? I figure I'll have a couple hours before we both get bored with it, so how would you organize your lesson plan to fit everything in? And how do you really drill home the concepts? I can show her if statements and for loops, but how do I teach her how to actually use them?