Suggerimenti per l'insegnamento tramite Live Coding


11

Sono coinvolto in un corso di programmazione e algoritmi del primo anno. In una recente conferenza, ho deciso di presentare il materiale utilizzando la codifica live , il che significa essenzialmente che mi siedo dietro la tastiera e scrivo codice e lo valuto , usando emacs per facilitare il processo.

Questo ha avuto molto successo e gli studenti hanno commentato quanto hanno apprezzato il formato più (inter) attivo. Dato che questo è stato il mio primo tentativo di utilizzare questo formato di insegnamento, so che non ha funzionato perfettamente. Alcuni dei problemi erano legati al fatto di non essere esperti con Emacs come avrei dovuto essere, e altri avevano a che fare con il permettere alle domande degli studenti di portarmi troppo lontano dalla mia sceneggiatura. So di poter fare di meglio.

Quali sono alcune linee guida per tenere lezioni (e altre dimostrazioni) usando lezioni di codifica dal vivo?
Quali sono le insidie ​​da evitare?


2
Ho le mie riserve sulla codifica live (principalmente riguardo alla velocità effettiva e all'illusione della comprensione). Tuttavia, due suggerimenti: 1) Hai considerato di utilizzare i sistemi di risposta in classe per strutturare le domande? 2) Non ho idea di quanto sia pratico, ma usare qualcosa come ideone.com può essere interessante perché gli studenti possono accedere al tuo codice dopo la lezione ed eseguirlo senza dover installare roba.
Raffaello

@Raphael: ho avuto la loro attenzione molto meglio di prima, il che è sicuramente un vantaggio. I tuoi due suggerimenti sono molto buoni. 1) Attualmente solo le persone che seguono realmente offrono qualsiasi tipo di feedback. 2) La mia lingua non è nell'elenco. Detto questo, tutto il codice è disponibile nelle diapositive (che ho ignorato).
Dave Clarke,

Risposte:


8

Ecco alcuni suggerimenti e insidie ​​che ho raccolto dopo aver utilizzato la codifica live per una settimana e aver parlato con un collega.

DO

  • Prepara uno script da seguire e prova a rispettarlo.
  • Deselezionare frequentemente i buffer per concentrarsi sulla parte rilevante.
  • Ricominciare da capo per ogni nuovo argomento.
  • Usa un carattere più grande.
  • Padroneggia lo strumento che stai utilizzando, per evitare di perdere troppo tempo con le banalità.
  • Sono precodificate le funzioni di sfondo. Se non particolarmente rilevanti, assicurati che possano essere importati, anziché apparire nel file di lavoro.
  • Idealmente, lavora in una lingua che ti dia un feedback immediato. Le lingue con una shell interattiva sono le migliori in questo senso.
  • Quando si utilizza un tipo, digitare il tipo previsto della funzione che si sta scrivendo. Ciò fornisce una luce guida per gli studenti.
  • Liberamente commettere errori (anche se non troppi). Scopri come risolverli.
  • Non dimenticare: un'immagine dipinge più di mille parole: diapositive interlacciate e lavagna / lavagna funzionano con la tua sessione di programmazione.
  • Avere diapositive di riepilogo per i punti che hai coperto
  • A volte, quando si modifica il codice, magari fare una copia e modificare la copia. Questo fornisce un punto di confronto.
  • Pulisci periodicamente il codice.
  • Accetta il fatto che commetterai errori e consentirai apertamente agli studenti di correggerti --- questo semplifica il tuo lavoro e li autorizza.
  • Scrivi il codice nel tuo stile. Ad esempio, potresti aver copiato il codice altrove. Ma questo sarà difficile da riprodurre. Meglio scriverlo nel tuo stile. Ad esempio, scrivo sempre funzioni al curry, perché programma principalmente Haskell. Ma Standard ML usa il linguaggio meno frequentemente. Aspettare le funzioni al curry è l'errore più comune che faccio in classe.
  • Fisicamente, assicurati di avere il tuo spazio impostato bene. Buona tastiera, alla giusta altezza, cavi tutti nei punti giusti, ostacoli fisici fuori strada, ecc. Prenditi un minuto prima di iniziare a far lavorare lo spazio per te, non contro di te.
  • Un approccio è scrivere qualunque cosa gli studenti dicano, anche se è sbagliata. Questo porta gli studenti a fare la codifica e la correzione. È una buona idea pulire il codice alla fine. Questo approccio può creare un modello di attenzione e interazione in classe, perché gli studenti devono prestare attenzione a seguire ciò che sta accadendo.

NON FARE

  • Non ottimizzare il codice al volo e romperlo in modo tale da non poterlo correggere.
  • Evita di parlare con il computer. Parla con gli studenti!
  • Evitare di digitare troppo, in particolare del codice della caldaia. Utilizza il tuo ambiente per aiutarti a sputare i modelli per te.
  • Se si utilizza un editor di testo, evitare di scorrere costantemente. Ciò causerà la cinetosi se coloro che cercano di seguire.
  • Se usi un editor di testo, prima di apportare modifiche radicali al tuo codice, avvisa gli studenti che lo farai, in modo che possano tenere traccia di ciò che sta accadendo.

1
Quanti studenti ci sono nella tua classe? Mi piacciono i tuoi DO verso l'interattività ma mi chiedo come si riduca a 50, 100, 250 studenti.
Raffaello

1
Pubblica il tuo codice dopo le lezioni? Immagino un repository Github in cui gli studenti possano sfogliare le diverse versioni che hai creato (magari includendo una versione raffinata e commentata che non è mai apparsa in classe) e guardare le differenze. Potrebbero anche clonare il repository per usare facilmente algoritmi scritti una volta come subroutine nei compiti (se ciò è desiderabile).
Raffaello

1
Preparate unit test per eseguire il vostro codice? Non sono sicuro che sia appropriato in ogni classe (l'attenzione è focalizzata sull'apprendimento dei principi dei linguaggi di programmazione, dello sviluppo del software o degli algoritmi?), Ma potrebbe insegnare alcune buone pratiche lungo il cammino.
Raffaello

2
1) 128 persone si sono iscritte alla classe, anche se circa 60-80 si presentano. 2) Ho già il codice sulle diapositive, ma non uso le diapositive. Quindi gli studenti hanno una versione di quello che faccio, mai nessuno dei passaggi intermedi. Non sono sicuro di quanto sia interessante avere tutte le varianti. 3) No, anche se scrivono specifiche informali. Il focus è sull'apprendimento di un primo linguaggio di programmazione e di alcuni algoritmi / strutture dati. Sono d'accordo, però. I test unitari sono qualcosa che prenderemo in considerazione per l'integrazione più pesante nel corso. Grazie per le domande / suggerimenti impliciti.
Dave Clarke,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.