Lezione 1
La lettura assegnata per questa lezione è un survey sul concetto di misconception (“idea sbagliata”) negli studenti. A volte le misconception vengono etichettate come “alternative conception”, per evitare di evidenziare connotati negativi. Personalmente, il termine misconception non mi dispiace; una volta identificate nei ragazzi, possono diventare un’occasione di apprendimento.
- Yizhou Qian and James Lehman. Students’ Misconceptions and Other Difficulties in Introductory Programming: A Literature Review. ACM Transactions on Computing Education. 18(1):1–24. (2017)
Nell’articolo trovate citata la distinzione fra syntactic, conceptual e strategic knowledge che ho accennato nella lezione precedente (Sezione 2), e utilizza questa distinzione per classificare le misconception principali (Sezione 3). Continua discutendo i fattori principali che possono portare a misconception (Sezione 4) e le possibili strategie di intervento (Sezione 5). Queste sono le sezioni principali su cui concentrarsi.
Oltre alla solita valutazione personale del testo in generale, vi propongo questa attività.
1) Gestione delle misconception
Un particolare punto di attenzione che vorrei portare alla vostra discussione è quello relativo agli interventi come insegnante relativamente alle misconception. Non ho ricette “assolute” qui; sto raccogliendo un po’ di spunti nei testi che sto leggendo, e li presenterò al termine della lezione. Di nuovo, vi chiedo però di rifletterci personalmente e di provare a portare la vostra opinione.
Lezione 2
2) Elencare le misconception
- data la vostra esperienza (di studenti delle superiori, di studenti universitari, alcuni di voi come tutor, alcuni di voi come insegnanti, alcuni di voi come persone che fanno ripetizioni), provate ad elencare “misconception” nella programmazione in cui vi siete imbattuti, personalmente o in altri
- completate l’elenco raccogliendo spunti dal testo di Quian e Lehman, più da eventuali altri documenti (ne elenco un paio sotto)
- se volete, lavorate a questo task in gruppo, raccogliendo insieme questi elenchi tramite un testo condiviso.
- penso che identificherete un sacco di misconception relative alle aree sintattiche e concettuali, poco rispetto a quelle strategiche. Riflettete sul perché.
Al fine di comprendere meglio quali potrebbero essere le misconception che stiamo cercando, questa potrebbe essere una possibile classificazione:
- Generali (il concetto generale di programma e di esecuzione)
- Assegnamento (concetto di variabile, assegnamenti e valutazione delle espressioni)
- Controllo (sequenze, istruzioni condizionali, cicli)
- Chiamate (invocazione funzioni e passaggio parametri)
- Memoria (vettori, matrici, oggetti)
- Reference (reference, puntatori, identità degli oggetti)
- OO (relative all’object orientation, alle classi, alle istanze)
- Ricorsione
- Varie
Questa divisione è artificiale/incompleta, serve solo come punto di partenza. Potete decidere per una classificazione diversa, accorpando o smembrando le categorie.
Può essere utile prendere qualche spunto da qualche testo aggiuntivo, fra quelli elencati nell’articolo da leggere. Ne cito un paio qui, uno di rassegna (più vecchio, del 2004) e uno specifico per un linguaggio di programmazione (Python).
- Michael Clancy. Misconceptions and Attitudes that Interfere with Learning to
Program. In Computer Science Education Research, S. Fincher and M. Petre Eds., Routledge, 85–100 (2004) - Tobias Kohn. Teaching Python Programming to Novices: Addressing Misconceptions and Creating a Development Environment. Phd. Thesis, ETH Zurich (2017). Solo capitolo 6.
Al termine della lezione vi presenterò una lista molto lunga di misconception elencate in letteratura (oltre 160!), ma lo scopo di questo esercizio è farvi riflettere prima di vedere una lista già “pronta”.
3) Gestione dell’errore
Le misconception sintattiche danno (quasi) sempre origine a messaggi di errore. Anche le misconception concettuali possono dare origine a messaggi di errore. Spesso e volentieri, questi messaggi sono progettati per utenti esperti, non per i programmatori alle prime armi e quindi non sono utili a comprendere la misconception alla base dell’errore.
Banalizzando, un processo “normale” nel corso dell’insegnamento potrebbe essere quello di reagire ai messaggi identificando la misconception e utilizzandola come occasione di insegnamento. Non possiamo usare questo approccio qui, perché non abbiamo studenti inesperti.
Vi propongo quindi un approccio inverso: come esercizio, provate a scrivere codice, in qualche linguaggio, che evidenzia una misconception e riportate il messaggio di errore. Riflettete sulla sua chiarezza e come potreste aiutare uno studente nel risolvere tale problema.
Materiale lezione
- Misconception catalogue. Da Juha Sorva. Visual Program Simulation in Introductory Programming Education. Ph.D. Thesis, Aalto University. (2012)
- Slide presentate durante la lezione [Link]