Ecco la mia opinione su questo dopo un paio di tentativi falliti e un paio abbastanza buoni:
La programmazione è problem solving.
Inizia con cose concrete che sono programmate e che usano ogni giorno: browser Internet (Facebook), cellulare, registratore di cassa, ecc. Fagli dare molti esempi. Stabilisci che tutte queste cose hanno una specie di computer. Il cuore di un computer è il processore.
Il processore è come un lavoratore molto veloce, ma molto stupido. Se gli dai alcune istruzioni, le farà esattamente come dici tu. Non farà nulla in più e non ti dirà se qualcosa che gli hai detto di fare era sbagliato. Questo processore fa tutto, però: se dici esattamente come farlo, può fare una telefonata o inserire un'immagine in un'e-mail.
Chiedile come avrebbe detto a un lavoratore molto veloce ma molto stupido di acquistare una lattina di soda da una macchina per bevande. Mentre inizia a descrivere i passaggi ("Inserisci i soldi nella macchina e premi il pulsante") inizia a dissezionarli come un programma ("Che cosa sono i soldi? Come li inserisco nella macchina? Quando inserisco i soldi nella macchina e premo il pulsante allo stesso tempo, non succede nulla. "). Se hai una lavagna, inizia a sinistra con il suo primo set di istruzioni. Mentre li rivede, posiziona il nuovo elenco più grande sul lato destro. Quando hai un buon set di istruzioni, inizia a generalizzare i pezzi ("Rimuovere i soldi dalla tasca e rimuovere la soda dal vassoio suona simile - quali parti sono uguali / diverse?") Prendi le generalizzazioni e mettile nel mezzo e tagliare via i pezzi che ora comprendono. Prova a legare alla fine i pezzi per abbinarli alle sue istruzioni originali, un po 'come le chiamate di funzione simili. Altri buoni esercizi: spedisci una lettera, attraversa una porta, disegna un cerchio / quadrato / triangolo.
Quindi la programmazione è la risoluzione dei problemi: suddividere i problemi in parti, identificare le parti comuni e raggruppare quelle parti per risolvere i problemi. Presto scopri che alcune parti sono comuni a molti problemi e poi inizi a metterle insieme per risolvere problemi che non sapevi nemmeno di avere.
Ok, a questo punto potrebbe capire ma probabilmente è annoiata. Seguitelo con una serie di fantastici esempi di programmazione. Gli shader e il relativo codice visivo sono facili da provare: puoi creare una foto e iniziare a modificarla con piccole modifiche al codice. Se ha espresso interesse per Facebook, mettiti in mostra parlando con Facebook tramite REST per vedere i dati di amici di amici (6 gradi su di lei). Se le piacciono i videogiochi, mostra un paio di demo di giochi open source insieme a qualche frammento del loro codice e di come aiutano il gioco a funzionare. Termina mostrando un paio di strumenti gratuiti e risorse che potrebbe indagare a casa. (Python, C #, ecc.)
I miei tentativi falliti: cercare di spiegare il calcolo pi (stavano chiedendo), il gioco da tavolo C-Jump http://c-jump.com/ (non l'hanno capito e le istruzioni erano buggy), e codificare dal vivo un 2d gioco (non riuscivo a trattenere l'interesse, non importa quanto piccoli passi tra le demo).
In bocca al lupo!