visuale - python tutorial




I migliori modi per insegnare a un principiante a programmare? (20)

Domanda originale

Attualmente sono impegnato nell'insegnare a mio fratello a programmare. È un principiante assoluto, ma molto intelligente. (E in realtà vuole imparare). Ho notato che alcune delle nostre sessioni si sono impantanate in piccoli dettagli e non mi sento molto organizzato. ( Ma le risposte a questo post hanno aiutato molto. )

Cosa posso fare meglio per insegnargli in modo efficace? Esiste un ordine logico che posso usare per passare da un concetto all'altro? Ci sono complessità che dovrei evitare fino a più tardi?

Il linguaggio con cui stiamo lavorando è Python , ma i consigli in qualsiasi lingua sono i benvenuti.

Come aiutare

Se ne hai di buoni, aggiungi la seguente risposta:

  • Esercizi per principianti e idee di progetto
  • Risorse per insegnare ai principianti
  • Screencast / post di blog / e-book gratuiti
  • Stampa libri che sono buoni per i principianti

Si prega di descrivere la risorsa con un link ad esso in modo da poter dare un'occhiata. Voglio che tutti sappiano che ho sicuramente usato alcune di queste idee. I tuoi contributi saranno aggregati in questo post.

Risorse online per insegnare ai principianti:

Libri di stampa consigliati per insegnare ai principianti


Consiglierei anche di guardare alcuni screencast: sono generalmente creati nel contesto di una tecnologia specifica e non di una lingua, anche se se viene visualizzato il codice Python, ciò vale :). Il punto è che sono creati da alcuni bravi programmatori e osservano quanto un buon programma di programmazione sia una buona cosa. Tu e tuo fratello potreste fare anche qualche programmazione tra pari, questa potrebbe essere un'idea ancora migliore. Basta non dimenticare di spiegare PERCHE 'fai qualcosa in questo modo e non in quel modo. Penso che il modo migliore per imparare a programmare sia da buoni esempi e cercare di non vedere nemmeno quelli cattivi.


Dipende davvero dallo stile di apprendimento di tuo fratello. Molte persone imparano più velocemente sporcandosi le mani e semplicemente entrando in essa, cristallizzando i concetti e il quadro generale mentre progrediscono e costruiscono le loro conoscenze.

Io preferisco iniziare con il quadro generale e approfondire il nocciolo della questione. La prima cosa che volevo sapere era come tutto si conciliava con tutto quel gobbledygook orientato agli oggetti, quindi su classi e istanze e così via. Mi piace conoscere i concetti di base e un po 'di teoria prima di imparare la sintassi. Ho avuto un po 'di vantaggio perché ho scritto alcuni giochi in BASIC 20 anni fa ma niente da allora.

Forse è utile ombreggiare un processo di produzione iniziando con una dichiarazione di missione generale, quindi un piano e / o un diagramma di flusso, quindi elaborare in qualche pseudo codice (inclinato verso la sintassi che si utilizzerà in definitiva) prima di scrivere effettivamente il codice.

La regola d'oro qui è quella di individuare lo stile di tendenza del tuo studente.


Dopo aver esaminato alcuni e-book gratuiti, ho trovato che il miglior libro per imparare a programmare era Head First Programming pubblicato da O'Reily Press. Usa Python come lingua e ti dà i programmi su cui lavorare sin dall'inizio. Sono tutti più interessanti di "Hello World". Vale la pena spendere i soldi che ho speso, e dal momento che è fuori per un po 'potresti trovare una copia più economica su Ebay o Amazon.


Ero solito insegnare programmazione e tuo fratello ha un vantaggio principale rispetto alla maggior parte dei miei studenti che vuole imparare :)

Se decidi di andare con C un amico ha un sito che ha il tipo di programmi che quelli di vecchia generazione ricordano come tipi di base. I più complessi usano ncurses che negano il loro uso come aiuto didattico, ma alcuni di essi sono piccole cose e si possono imparare carichi senza essere istruiti.

Personalmente penso che Python e Ruby possano fare grandi prime lingue.

EDIT: elenco degli incarichi di programmazione per principianti è apparso durante la notte potrebbe essere proprio quello che stai cercando.


Ho dovuto lavorare con diversi programmatori principianti (non ho mai scritto una linea di codice), e questo autunno farò un seminario post-scolastico con gli studenti delle scuole superiori. Questa è la cosa più vicina che ho alla documentazione. È ancora un lavoro in corso, ma spero che aiuti.

1) FizzBuzz. Inizia con i programmi della riga di comando. Puoi scrivere alcuni giochi divertenti, o strumenti, molto velocemente, e impari tutte le funzionalità linguistiche molto velocemente senza dover prima imparare gli strumenti della GUI. Queste prime app dovrebbero essere abbastanza semplici da non dover utilizzare alcun vero strumento di debug per farle funzionare.

Se nient'altro come FizzBuzz è un buon progetto. Le tue prime app non dovrebbero avere a che fare con DB, file system, configurazione, ecc. Questi sono concetti che confondono la maggior parte delle persone e, quando impari solo la sintassi e le funzioni di base del framework, non hai davvero bisogno di più complessità.

Alcuni progetti:

  • Ciao mondo!
  • Prendi l'anno della mia nascita e calcola la mia età (solo (ora - allora) senza correzioni mensili). (matematica semplice, input, output)
  • Chiedere una direzione (su, giù, sinistra, destra), quindi dire all'utente il loro destino (cadere in un buco, trovare una torta, ecc.). (Logica booleana)
  • FizzBuzz, ma conta una volta al secondo. (Loop, timer e più logica)
  • A seconda della loro età alcuni sono davvero come un'app che chiama gli utenti un insulto casuale a un certo intervallo. (Cicli, matrici, timer e casuali se si rende casuale l'intervallo)

2) Progetto semplice Una volta acquisita una buona conoscenza delle funzionalità linguistiche, è possibile avviare un progetto (i giochi semplici e divertenti funzionano correttamente). Dovresti cercare di completare il primo progetto entro 6-12 ore. Non perdere tempo per progettarlo in anticipo. Lascia che siano progettati anche se fa schifo. Se cade a pezzi, parla di cosa è successo e perché non è riuscito, quindi scegli un altro argomento e ricomincia.

Qui è dove inizi a introdurre le funzionalità di debug dei tuoi strumenti. Anche se riesci a vedere il problema leggendo il codice, devi insegnargli come usare gli strumenti e poi mostrare loro come potresti vederlo. Ciò ha il duplice scopo di insegnare gli strumenti di debug e di insegnare come identificare gli errori senza strumenti.

Una volta, o se, il progetto diventa funzionale, puoi usarlo per introdurre strumenti di refactoring. È buono se poi puoi espandere il progetto con alcune semplici funzionalità che non hai mai pianificato. Questo di solito significa refactoring e debugging significativi, dal momento che pochissime persone scrivono anche il codice metà decente la prima volta.

Alcuni progetti:

  • Gioco dell'impiccato
  • Sperimentare con la robotica ( Vex e Mindstorms sono opzioni)

3) Progetto reale Avvia un vero progetto che potrebbe richiedere del tempo. Utilizzare il controllo del codice sorgente appropriato e stabilire un punto per avere un programma. Esegui questo progetto come un vero progetto, se non altro la sua buona esperienza avendo a che fare con gli strumenti.

Ovviamente è necessario regolarlo per ogni persona. La cosa più importante che ho trovato è che anche le prime app semplici si applicano a ciò a cui la persona è interessata.

Alcuni progetti:

  • Tetris
  • Motore di blog basato su file di testo
  • La robotica più avanzata funziona

La cosa fondamentale è che la persona in questione deve avere qualche problema da risolvere. Se non hai un programma che vuoi scrivere (e qualcosa di sensato e ben definito, non "Voglio scrivere il prossimo Quake!"), Allora non puoi imparare a programmare, perché non hai nulla che ti motiva . Voglio dire, potresti leggere un libro e avere una comprensione approssimativa della sintassi e della semantica di un linguaggio, ma finché non avrai un programma che vuoi scritto non afferrerai mai l'ortica.

Se quell'impulso esiste allora tutto il resto è solo piccoli dettagli.



Pacchetto Python VPython - Programmazione 3D per Ordinary Mortal ( video tutorial ).

Esempio di codice:

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01

while 1:
    rate (100)
    ball.pos = ball.pos + ball.velocity*dt
    if ball.y < ball.radius:
        ball.velocity.y = -ball.velocity.y
    else:
        ball.velocity.y = ball.velocity.y - 9.8*dt

VPython che rimbalza palla http://vpython.org/bounce.gif


Penso che una volta che avrà le basi (variabili, loop, ecc.) Dovresti cercare di aiutarlo a trovare qualcosa di specifico a cui è interessato e aiutarlo a imparare le necessità per farlo accadere. So che sono molto più incline e motivato a fare qualcosa se mi interessa. Inoltre, assicurati di lasciarlo combattere nonostante alcuni dei problemi più difficili, niente è più soddisfacente del momento in cui lo capisci da solo.


Potresti provare ad usare Alice . È un programma 3D progettato per l'uso nelle lezioni introduttive di programmazione.

I due maggiori ostacoli per i nuovi programmatori sono spesso:

  • errori di sintassi
  • motivazione (scrivere qualcosa di significativo e divertente piuttosto che inventato)

Alice utilizza un'interfaccia drag and drop per la costruzione di programmi, evitando la possibilità di errori di sintassi. Alice ti consente di costruire mondi 3D e di avere il tuo codice di controllo (semplice) personaggi 3D e animazioni, che di solito è molto più interessante dell'attuazione di elenchi collegati.

I programmatori esperti possono guardare Alice come un giocattolo e deridere il trascinamento e il rilascio di linee di codice, ma la research dimostra che questo approccio funziona.

Disclaimer: ho lavorato su Alice.


Qualcosa di cui dovresti essere molto attento mentre insegni a tuo fratello a programmare è che non si affidi troppo a te. Spesso quando mi trovo ad aiutare gli altri inizieranno a pensare a me come un libro di risposte a tutte le loro domande e invece di sperimentare per trovare una risposta mi chiedono semplicemente. Spesso il miglior insegnante è la sperimentazione e ogni volta che tuo fratello ha una domanda del tipo "Cosa succederà se aggiungo 2 a una stringa?" dovresti dirgli di provarlo e vedere da solo. Inoltre ho notato che quando non riesco a far passare un concetto a qualcuno, è utile vedere qualche esempio di codice in cui possiamo guardare ogni segmento singolarmente e spiegarlo pezzo per pezzo. Come nota a margine, le persone nuove alla programmazione spesso hanno problemi con l'idea della programmazione orientata agli oggetti, diranno che lo capiscono quando glielo insegni, ma non ne capiranno un'idea chiara fino a quando non la realizzeranno.


Questo è un libro fantastico che i miei fratellini imparavano:

http://pine.fm/LearnToProgram/

Ovviamente, la cosa più importante è iniziare su un programma reale, utile di qualche tipo IMMEDIATAMENTE dopo aver terminato il libro.


Robert Read ha scritto una guida utile, How to be a Programmer , che copre una vasta area di problemi di programmazione che un principiante potrebbe trovare utile.


Se è interessato, non sono i dettagli minori le parti buone? Usando python, hai già tagliato la GUI per evitare confusione. Perché non scegliere un progetto, un gioco o qualcosa del genere e implementarlo. Il classico gioco di indovinare il numero hi-lo può essere semplicemente implementato dalla riga di comando in 20-30 righe di codice (a seconda della lingua, ovviamente) e fornisce variabili, condizioni, cicli e input dell'utente.


Se tuo fratello ha accesso a iTunes, può scaricare video lezioni di un corso introduttivo di informatica tenuto da Richard Buckland presso l'Università del New South Wales. È un istruttore accattivante e copre i fondamenti dell'informatica e del linguaggio C. Se non altro, dì a tuo fratello di suonare i video in background e alcuni concetti potrebbero affondare attraverso l'osmosi. :)

COMP1917 Higher Computing - Sessione 2008 1 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444

Se il link non funziona, ecco un percorso:

Home -> iTunes U -> Ingegneria -> COMP1917 Higher Computing - Sessione 2008 1


Se vuoi insegnare le basi della programmazione, senza essere specifico del linguaggio, c'è un'applicazione chiamata Scratch che è stata creata nel MIT. È progettato per aiutare le persone a sviluppare competenze di programmazione. Mentre gli utenti creano progetti Scratch, imparano a creare condizioni, loop, ecc. Esiste anche una comunità di progetti zero, forma in cui i progetti possono essere scaricati - in questo modo è possibile esplorare i programmi di altre persone e vedere come sono stati costruiti.


c'è un wikibook che è abbastanza buono per l'apprendimento di Python .

Non so come siano i wikibook per altre lingue, ma personalmente ho imparato Python dal wikibook come lo era nel febbraio 2007

ps - se non wikibooks , è fondamentalmente la versione wikipedia della creazione di libri. è un po 'difficile da descrivere, ma se dai un'occhiata a qualcuno dei libri li vedrai come funziona


http://tryruby.hobix.com/">Prova Ruby (nel tuo browser)









language-agnostic