I miei 2 centesimi:
What language should I start with?
Perl, o in realtà, Python. Nella mia esperienza sono i più facili da configurare, riprendere e spostarsi, mentre l'implementazione di base dei linguaggi di programmazione è lontana.
What are essential computer science
topics that I should cover before
jumping them into computer
programming?
Prima di iniziare a programmare? Vorrei entrare in costrutti di programmazione di base come diversi tipi di variabili (o nel caso di python e perl, diversi tipi di dati), come numeri interi, numeri in virgola mobile e stringhe, per iniziare. Quindi spostati nei costrutti di controllo e di flusso come le istruzioni e i cicli if-then-else. Questi sono essenziali per quasi tutti i moderni linguaggi di programmazione. Quindi spostati in strutture di dati in seguito, sebbene menzioni elenchi e matrici, poiché in Python è quello che utilizzerai di più.
What readings can I incorporate to
make the topic interesting and
non-overwhelming? If we want to spend
a year on it, what topics should take
priority and must be covered in 12
months?
Dopo averli introdotti in alcune lingue e aver scritto piccoli programmi in essi (Hello World, aggiungendo numeri, manipolando stringhe, aprendo, leggendo e scrivendo file) chiedi loro di scegliere una lingua che preferiscono e di farli costruire qualcosa che gli piace con esso. Prendi un libro o fornisci risorse online a cui rivolgersi per chiedere aiuto.
Again, these are non computer science
folks, and I want to keep the learning
as much fun as possible.
Porta in campo la (più) realtà possibile. Learning hashes (dizionari)? Porta in criptologia di base. Imparare gli alberi? Accedi a Facebook e alle reti di amici. Algoritmi di apprendimento? Scrivi un programma che guida l'utente a preparare una pizza (un algoritmo è semplicemente una ricetta). Visualizza strutture di dati come alberi quando possibile.
Una volta che i tuoi amici si sentono a proprio agio nella programmazione in una lingua a loro scelta, devi lasciare che la parte "divertente" vada un po 'per entrare in concetti di livello superiore. La programmazione è molto di divertimento, ma non è all divertente, ci sono frustrazioni che possono emergere, proprio come in qualsiasi altra cosa potresti imparare.