Strategie e suggerimenti per l'insegnamento del debug
Indipendentemente dal livello di abilità del programmatore, il debug è una parte inevitabile e integrante della codifica" 1.
Questa può sembrare un'affermazione alquanto ovvia, tuttavia, eseguirla in modo confortevole e produttivo può essere impegnativo. In molti contesti di istruzione formale, c'è una forte attenzione ai prodotti completi e corretti dell'apprendimento. Mentre possiamo usare cliché come "i miei errori sono i miei più grandi insegnanti", raramente questi sentimenti sono valutati in un modo che renda il pensiero degli studenti sull'errore e sulla sua soluzione davvero visibile e parte della cultura della classe. Tuttavia, LO STEM, e in particolare la codifica e la robotica, offrono modi autentici per mettere in pratica ciò che predichiamo. Gli studenti avranno bug nel loro codice, errori logici nella progettazione del programma e altri errori mentre imparano a programmare e completare le sfide in classe. Quindi, come possiamo sfruttare al meglio questa opportunità, non solo per insegnare agli studenti concetti di codifica, ma anche come celebrare i loro errori come passi importanti sul percorso di apprendimento? Il test e il debug saranno sempre una sorta di processo reattivo, per il quale non esiste una formula chiara e concreta. Esistono tuttavia "passaggi" e strategie generali che possono essere implementati con gli studenti, per aiutarli a impegnarsi in questo processo in modo produttivo e collaborativo.
Inizia con una cultura di classe positiva intorno al debug e al pensiero concettuale sul codice. Avere una cultura della classe più ampia che inquadra gli errori come produttivi, non punitivi, è incredibilmente importante se vogliamo che gli studenti siano veramente coinvolti nel processo di test e debug. Se stanno cercando di nascondere gli errori o hanno paura di parlare attraverso la loro logica con gli altri, il processo di debug sarà molto più difficile e meno utile per l'apprendimento. Ci sono molti modi per farlo, dal celebrare gli errori con cose come un "Bug Museum" o una "Bug Hall of Fame"1 in cui studenti e insegnanti pubblicano errori di codifica e le loro correzioni su cui tutti possono riflettere. Gli insegnanti hanno premiato gli studenti per aver trovato gli insetti distribuendo giocattoli di plastica ogni volta che un bug veniva "annunciato" alla classe, rendendo il debug non solo necessario, ma divertente!
Inoltre, fare continuamente riferimento all'obiettivo concettuale di un progetto o di una sfida aiuta gli studenti a tenere a mente il quadro generale del loro progetto mentre lavorano. Parlando frequentemente di ciò che stanno concettualmente cercando di fare o scrivendo pseudocodici, gli studenti possono individuare potenziali bug prima che crescano in termini di dimensioni o portata. Strategie come il "reengagement di gruppo" possono essere utili per un'intera classe per esaminare insieme un progetto con bug, identificare cosa funziona in relazione all'obiettivo del progetto e perché, e quindi quali sono i bug. Gli studenti possono vedere un particolare progetto di codifica attraverso molti occhi e imparare a parlare di elementi interessanti di codice e strategie creative per risolvere problemi che possono poi applicare ai propri progetti.
Il primo "passo" per il debug è identificare che c'è un problema nel progetto. Gli studenti non possono risolvere un problema se non sanno che esiste, e per farlo devono essere in grado di articolare qual è l'obiettivo del progetto e confrontarlo con ciò che il progetto sta effettivamente facendo. Nei progetti semplici, come la codifica di un robot per guidare in un quadrato, questo è più facile da fare. Man mano che i progetti crescono in complessità, come la codifica di un robot per identificare e spostare un cubo rosso, questo può sembrare più scoraggiante. Tra i lati positivi, c'è un segno molto visibile e tangibile che un progetto non sta funzionando, purché gli studenti sappiano cosa intendeva fare il progetto.
- L'uso regolare dello pseudocodice può essere una strategia utile quando gli studenti si trovano di fronte a un progetto che "non funziona". Scrivere, in termini chiari e specifici, l'obiettivo del progetto e ciò che il robot o il codice devono fare per raggiungere tale obiettivo, può dare agli studenti un punto di partenza per assicurarsi che il loro progetto e il loro codice siano sulla stessa lunghezza d'onda. Ad esempio, se si codifica un robot per guidare in un quadrato e il robot sta guidando solo in una linea, si verifica un errore chiaro e visibile.
Il prossimo "passaggio" è trovare il bug nel codice. Ora che gli studenti sanno che c'è un problema, possono adottare misure per trovare il problema all'interno del codice. Utilizzando ciò che sanno sull'obiettivo del progetto, gli studenti dovrebbero prima esaminare quali parti del codice funzionano come previsto. Ciò è particolarmente importante per le attività in più parti, come la codifica di un robot per identificare un cubo rosso e spostarlo. Ecco diverse strategie che possono essere utilizzate per aiutare gli studenti a individuare un bug:

- Guarda l'esecuzione del progetto un blocco alla volta – Questo può essere utile per progetti brevi, in cui la sequenza e il flusso del progetto sono più semplici e gli studenti possono individuare più facilmente eventuali irregolarità. Per facilitare questo processo, la funzione "Step" in VEXcode 123, VEXcode GO e VEXcode VR può essere utilizzata per eseguire il progetto un blocco o un passaggio alla volta. Quando si gestisce un progetto in questo modo, può diventare molto chiaro quando e dove un progetto va storto. Per i progetti più lunghi, la funzione di evidenziazione in VEXcode 123, VEXcode GO e VEXcode VR evidenzia ogni blocco mentre viene eseguito dal robot, per contribuire a rendere più visibile la connessione tra un blocco e il comportamento del robot. Gli studenti possono guardare il robot e l'evidenziazione e mettere in pausa il progetto sopra o intorno all'errore non appena lo vedono verificarsi.
- Test e debug di un progetto in parti – Questa è una strategia utile quando si sviluppa un progetto più lungo o più complesso ed è un buon modo per gli studenti di sviluppare e creare i loro progetti. Gli studenti dovrebbero testare e eseguire il debug presto e spesso durante la codifica, in modo che ogni comportamento, o insieme di comportamenti, sia codificato e testato. In questo modo, i bug nel codice vengono individuati più rapidamente e risolti più facilmente. Lavorare in piccoli pezzi può aiutare gli studenti a evitare la frustrazione e a non scoraggiarsi quando un "intero progetto" non funziona come previsto, rendendo più facile per insegnanti e studenti mantenere alti i livelli di motivazione e coinvolgimento. Se gli studenti testano un progetto complesso tutto in una volta, possono quindi suddividere il progetto in parti più piccole da eseguire ed eseguire il debug di una sezione del codice alla volta.
Ad esempio, utilizzando l'esempio della codifica di un robot per rilevare e spostare un cubo rosso, gli studenti possono testare singole parti dell'intera attività, come guidare verso il cubo, segnalare correttamente il colore del cubo con il sensore, afferrare il cubo, ecc. Idealmente questo è completato mentre il progetto è in fase di costruzione, ma se arrivano alla fine, dividere il progetto in sezioni dà agli studenti meno da elaborare contemporaneamente e possono spostarsi metodicamente attraverso il progetto per risolverlo. - Usa codici di errore – Questa è una strategia utile quando si tratta di progetti basati su testo, come VEXcode VR Python, in cui gli errori di riga verranno stampati sullo schermo. Gli studenti possono utilizzare queste informazioni, come la riga di codice problematica, come un modo per restringere il loro errore. Tieni presente che questo è un bene per gli errori di sintassi, ma non identificherà necessariamente errori logici nella progettazione del programma.
Il "passaggio" finale è ora quello di correggere l'errore nel progetto. Dopo che gli studenti hanno identificato che il loro progetto non sta eseguendo come previsto e individuato ciò che è sbagliato nel codice, ora possono andare a capire perché esiste quel bug. È un semplice errore di sintassi, come un errore di ortografia di una parte di un comando? Oppure è un errore logico, dove la progettazione o il flusso del programma non è corretto? Ciò potrebbe richiedere più tentativi per trovare una soluzione funzionante, e questo non solo va bene, ma può incoraggiare gli studenti ad approfondire la loro comprensione dei concetti e delle strutture di codifica. Ancora una volta, con un atteggiamento positivo nei confronti del debug, ogni parte del processo è un'esperienza di apprendimento. Ecco alcune strategie che puoi utilizzare per aiutare gli studenti a capire le possibili soluzioni:
- Leggi il codice per le irregolarità – Questo è particolarmente utile quando si lavora con un codice di errore o un errore di sintassi. Prestare molta attenzione a dettagli come ortografia, punteggiatura e rientro può consentire agli studenti di correggere un bug con pochi colpi di tastiera. In VEXcode, gli studenti possono sempre utilizzare la Guida integrata per saperne di più su come ogni comando viene scritto e utilizzato nei progetti.
- Cercare un pezzo mancante – Una strategia utile per identificare gli errori logici in un progetto deriva dal porre la semplice domanda "Ti manca un passaggio?" Gli studenti possono saltare un passaggio che sembra intuitivo alle loro menti, ma è necessario per il robot (che non può intuire) per completare il compito. Fare riferimento allo pseudocodice che si allinea con questa parte del codice può essere utile, per assicurarsi che gli studenti scompongano il progetto nei passaggi più piccoli possibili. Parlare ad alta voce dei comportamenti in un gruppo, o con l'insegnante, può aiutare gli studenti a identificare eventuali "buchi" nella loro logica o progetto.
- Confronta il codice con un esempio funzionante : gli studenti possono utilizzare progetti precedenti di successo o progetti di esempio incorporati in VEXcode per vedere come sono costruiti e confrontarli con il loro codice esistente. La collaborazione è fondamentale qui: incoraggia gli studenti a guardare i progetti degli altri studenti in classe per imparare da come gli altri gruppi stanno dando un senso al compito e ai loro progetti. Se più gruppi hanno lo stesso problema, può essere un buon momento per utilizzare questa valutazione formativa per avere un'intera discussione in classe e fare il debug insieme.
- "Rimpicciolisci" e fai un passo indietro – Se gli studenti stanno lottando per trovare una soluzione, può essere utile per loro fare un passo indietro dal codice stesso e guardare all'obiettivo più ampio del progetto e al modo in cui hanno progettato il loro progetto per portare a termine tale compito. "Spostarsi tra i livelli di astrazione [può] aiutare gli studenti a vedere gli errori nel codice che avevano trascurato [e]... possono anche scoprire che il bug non è nel codice, ma piuttosto nel loro approccio al problema."1.
Come per qualsiasi cosa, più gli studenti si esercitano con i test e il debug e parlano del processo in modo positivo e costruttivo, maggiore sarà il loro comfort e la loro fiducia in esso. Dare agli studenti una pratica aggiuntiva, al di fuori del debug che si verifica naturalmente in una sfida di codifica, aiuta a costruire una capacità collettiva non solo per le strategie e le abilità relative al debug, ma anche per far crescere una cultura positiva sulla risoluzione collaborativa dei problemi. Indipendentemente dalla strategia che usi, trovare modi per incoraggiare e incorporare le celebrazioni dell'apprendimento, anche quelle semplici come il debug di un progetto, aiuta gli studenti a impegnarsi e ad essere orgogliosi del processo di apprendimento, non solo del prodotto.