A cura di Luca Gilardi

Pensiero computazionale – Pensare come un computer?

Introduzione al pensiero computazionale

A scuola, ed in generale negli ambienti educativi, si parla spesso di pensiero computazionale, e di come sia possibile svilupparlo con attività di robotica, coding e programmazione, addirittura all’interno di programmi e piani nazionali.

Ma cosa significa pensiero computazionale?

Si tratta di un concetto estremamente ampio, e che può essere interpretato in diversi modi. Viene nominato per la prima volta da Seymour Papert nel 1980 nel suo libro MINDSTORMS. Sebbene dal testo si evinca l’idea che l’autore aveva a proposito, egli non ne fornisce una vera definizione.

La diffusione del concetto di pensiero computazionale

Bisognerà aspettare il 2006, con un articolo della direttrice del Dipartimento di informatica della Canergie Mellon University, Jeanette M. Wing, per arrivare davvero ad inquadrare l’argomento.

L’articolo della Wing è ampio ed esaustivo, ma viene spesso condensato – anche dalla direttrice stessa – nelle seguenti frasi.

Il pensiero computazionale è un processo di formulazione di problemi e di soluzioni in una forma che sia eseguibile da un agente che processi informazioni.

 e

Usare il pensiero computazionale significa pensare come un programmatore.

Qualche anno dopo, nel 2010, Jeanette Wing riporta un’ulteriore idea, ispirata da uno scambio di e-mail con Jan Cuny (National Science Foundation) e Larry Snyder (University of Washington).

Il pensiero computazionale è l’insieme dei processi mentali coinvolti nel formulare problemi e le loro soluzioni in modo che le soluzioni possano essere rappresentate in una forma che possa essere efficacemente eseguita da un agente di elaborazione dell’informazione.

Pensiero computazionale: significa pensare come un computer?

Queste contrazioni del significato di pensiero computazionale, se da un punto di vista sono efficaci nel fornirci un’idea di massima del concetto, possono dall’altro trarci in inganno. Potrebbe, infatti, sembrare che sfruttare il pensiero computazionale significhi solamente ragionare come un programmatore o – peggio – come un computer.

Queste idee sono, però, potenzialmente fuorvianti o addirittura sbagliate: da un lato come ragiona un programmatore? O cosa significa ragionare come un programmatore? D’altro canto, non ha neppure senso affermare che pensiero computazionale significa pensare come un computer: i computer sono macchine, e in quanto tali non pensano. Ancora, quando parliamo di pensiero computazionale in ambito educativo, dobbiamo riflettere sul fatto che tale approccio non è di esclusiva pertinenza degli informatici e delle scienze informatiche.

Pensiero computazionale nella vita quotidiana

Se non ci fermiamo alle contrazioni delle idee, si evidenzia dalla lettura più approfondita dei lavori precedentemente citati che il punto focale dell’idea è da ricercarsi nei concetti di “processi mentali” e “soluzione e rappresentazione di problemi”. Riguardo ciò Jeanette Wing scrive inoltre:

Quando uso il termine pensiero computazionale, la mia interpretazione delle parole “problema” e “soluzione” è ampia […] non intendo solo problemi matematicamente ben definiti […] ma anche problemi del mondo reale […]

Infatti, il concetto di pensiero computazionale è estendibile a qualsiasi ambito, a qualsiasi problema, e a qualsiasi situazione della vita reale. Questo perché l’idea che è sottesa dalla locuzione pensiero computazionale è quella di un metodo, una strategia, che ci permetta di affrontare dei problemi – intesi nel senso lato del termine – in modo ragionato e critico, cercando ed adottando delle soluzioni intelligenti ed efficaci, che possano essere formalizzate in modo chiaro e reinterpretabile, e che possano essere riadattate per problemi simili.

Il pensiero computazionale secondo la ISTE e la CSTA

Arriviamo, quindi, nel 2011 a schematizzare formalmente queste idee nella definizione della International Society for Technology in Education (ISTE) e della Computer Science Teachers Association (CSTA):

Il pensiero computazionale è un processo di risoluzione dei problemi che include (ma non si limita a) le seguenti caratteristiche:

  • Formulare i problemi in modo da poter utilizzare un computer e altri strumenti per aiutarci a risolverli
  • Organizzare e analizzare i dati in modo logico
  • Rappresentare i dati attraverso astrazioni come modelli e simulazioni
  • Automatizzare le soluzioni attraverso il pensiero algoritmico (una serie di passi ordinati)
  • Identificare, analizzare e implementare le possibili soluzioni con l’obiettivo di raggiungere la combinazione di risorse e passi più efficace
  • Generalizzare e trasferire questo processo di risoluzione dei problemi ad un’ampia varietà di problemi simili
Le componenti principali del Pensiero Computazionale secondo gli autori del progetto europeo EARLYCODE (earlycoders.org)

Schematizzazione delle componenti principali del Pensiero Computazionale secondo gli autori del progetto europeo EARLYCODE (earlycoders.org), sulla base delle precedenti riflessioni.

Quando usiamo il pensiero computazionale?

In quest’ottica stiamo applicando il pensiero computazionale quando programmiamo, quando scriviamo o immaginiamo del codice, quando progettiamo robot, eccetera. Ma se ci riflettiamo, lo stiamo facendo anche in situazioni esterne alla robotica e all’informatica: quando seguiamo o scriviamo delle istruzioni di montaggio, quando seguiamo una ricetta di cucina, quando riflettiamo su quale percorso scegliere per andare da casa nostra a quella di un amico o da uno scaffale all’altro al supermercato, oppure quando scegliamo una strategia nel dipingere un muro o nel posizionare delle piastrelle, così come nel colorare un libro per bambini, e così via.

Schematizzazione grafica dell'algoritmo Quick Sort

Schematizzazione grafica dell’algoritmo Quick Sort, nello stile delle istruzioni di montaggio. Immagine disegnata da Sándor P. Fekete e Sebastian Morr, rilasciata con licenza CC by-nc-sa 4.0. Origine dell’immagine: https://idea-instructions.com/quick-sort/

Fra i vari esempio presentati pensiamo alle istruzioni di montaggio. A titolo di esempio, immaginiamo quelle dei modelli LEGO o dei mobili IKEA. Tali istruzioni sono strumenti che sfruttiamo nella soluzione di un problema (appunto il montaggio del mio oggetto). Esse sono rappresentate in modo logico ed ordinato ma astratto, tanto che – senza l’uso di nessuna parola – sono perfettamente intellegibili. Un manuale di istruzioni è, poi, proprio un algoritmo: se seguo alla lettera tutti i passi giungo alla soluzione del mio problema. Tipicamente le istruzioni sono il più efficiente possibile (ad esempio quelle che prevedono il minor numero di passaggi, o l’utilizzo di combinazioni più semplici, o l’uso del minor numero possibile di pezzi, …). Ovviamente, poi, tale soluzione sarà anche applicabile e generalizzabile per problemi simili, ovvero in questo contesto il montaggio di prodotti simili.

Conclusioni

Provate a riflettere sul significato di “Pensiero Computazionale”, e provate a immaginare esempi, relativi alla vita reale, in cui si utilizzi tale approccio. Per quanto riguarda come sviluppare il pensiero computazionale a scuola: invitate i vostri studenti a riflettere, ad usare il pensiero critico, a strutturare i loro ragionamenti in modo chiaro ed ordinato, a trovare un metodo di semplificazione e di riduzione dei problemi. Per avere qualche ulteriore spunto di riflessione, oltre al materiale indicato in bibliografia e ai numerosi approfondimenti che potete trovare in rete, potete fare riferimento al progetto europeo Erasmus+ EARLYCODE, di cui siamo partner. Trovate sul sito ufficiale www.earlycoders.org  maggiori informazioni. Troverete, inoltre, un manuale didattico dedicato agli insegnanti o agli aspiranti tali, per la promozione del pensiero computazionale nella prima infanzia. Le idee espresse in tale manuale, sebbene pensate per bambini in età prescolare o per i primi anni della scuola primaria, sono anche poi estendibili – con i dovuti riadattamenti – ad altre fasce di età. (Nota: alla data della pubblicazione dell’articolo il manuale non è ancora online, ma lo sarà nei prossimi mesi).

Nella stessa ottica, sono disponibili il corso per docenti Coding con mTiny, che potete acquistare alla pagina dedicata e i laboratori di coding per l’infanzia.

Bibliografia

Papert S., MINDSTORMS: Children, Computers, and Powerful Ideas, Basic Books, New York, 1980
Edizione digitalizzata, per gentile concessione della famiglia e ospitata dal MIT Lifelong Kindergarten Media Lab, https://mindstorms.media.mit.edu/, ultimo accesso 13 nov. 20

Wing J. M., Computational Thinking, Communications of the ACM, Marzo 2006/Vol. 49 No. 3, pg 33-35
https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf, ultimo accesso 13 nov. 20

Wing J. M., Computational Thinking: What and Why?, 17 novembre 2010
https://www.cs.cmu.edu/~CompThink/resources/TheLinkWing.pdf, ultimo accesso 13 nov. 20

International Society for Technology in Education (ISTE) and the Computer Science Teachers Association (CSTA), Operational Definition of Computational Thinking for K–12 Education, 2011
https://cdn.iste.org/www-root/ct-documents/computational-thinking-operational-definition-flyer.pdf?sfvrsn=2, ultimo accesso 13 nov. 20

Wing J. M., Computational Thinking, Microsoft Research Asia Faculty Summit 2012
https://www.microsoft.com/en-us/research/wp-content/uploads/2012/08/Jeannette_Wing.pdf, ultimo accesso 13 nov. 20

A cura di Luca Gilardi

Pensiero computazionale – Pensare come un computer?

Introduzione al pensiero computazionale

A scuola, ed in generale negli ambienti educativi, si parla spesso di pensiero computazionale, e di come sia possibile svilupparlo con attività di robotica, coding e programmazione, addirittura all’interno di programmi e piani nazionali.

Ma cosa significa pensiero computazionale?

Si tratta di un concetto estremamente ampio, e che può essere interpretato in diversi modi. Viene nominato per la prima volta da Seymour Papert nel 1980 nel suo libro MINDSTORMS. Sebbene dal testo si evinca l’idea che l’autore aveva a proposito, egli non ne fornisce una vera definizione.

La diffusione del concetto di pensiero computazionale

Bisognerà aspettare il 2006, con un articolo della direttrice del Dipartimento di informatica della Canergie Mellon University, Jeanette M. Wing, per arrivare davvero ad inquadrare l’argomento.

L’articolo della Wing è ampio ed esaustivo, ma viene spesso condensato – anche dalla direttrice stessa – nelle seguenti frasi.

Il pensiero computazionale è un processo di formulazione di problemi e di soluzioni in una forma che sia eseguibile da un agente che processi informazioni.

 e

Usare il pensiero computazionale significa pensare come un programmatore.

Qualche anno dopo, nel 2010, Jeanette Wing riporta un’ulteriore idea, ispirata da uno scambio di e-mail con Jan Cuny (National Science Foundation) e Larry Snyder (University of Washington).

Il pensiero computazionale è l’insieme dei processi mentali coinvolti nel formulare problemi e le loro soluzioni in modo che le soluzioni possano essere rappresentate in una forma che possa essere efficacemente eseguita da un agente di elaborazione dell’informazione.

Pensiero computazionale: significa pensare come un computer?

Queste contrazioni del significato di pensiero computazionale, se da un punto di vista sono efficaci nel fornirci un’idea di massima del concetto, possono dall’altro trarci in inganno. Potrebbe, infatti, sembrare che sfruttare il pensiero computazionale significhi solamente ragionare come un programmatore o – peggio – come un computer.

Queste idee sono, però, potenzialmente fuorvianti o addirittura sbagliate: da un lato come ragiona un programmatore? O cosa significa ragionare come un programmatore? D’altro canto, non ha neppure senso affermare che pensiero computazionale significa pensare come un computer: i computer sono macchine, e in quanto tali non pensano. Ancora, quando parliamo di pensiero computazionale in ambito educativo, dobbiamo riflettere sul fatto che tale approccio non è di esclusiva pertinenza degli informatici e delle scienze informatiche.

Pensiero computazionale nella vita quotidiana

Se non ci fermiamo alle contrazioni delle idee, si evidenzia dalla lettura più approfondita dei lavori precedentemente citati che il punto focale dell’idea è da ricercarsi nei concetti di “processi mentali” e “soluzione e rappresentazione di problemi”. Riguardo ciò Jeanette Wing scrive inoltre:

Quando uso il termine pensiero computazionale, la mia interpretazione delle parole “problema” e “soluzione” è ampia […] non intendo solo problemi matematicamente ben definiti […] ma anche problemi del mondo reale […]

Infatti, il concetto di pensiero computazionale è estendibile a qualsiasi ambito, a qualsiasi problema, e a qualsiasi situazione della vita reale. Questo perché l’idea che è sottesa dalla locuzione pensiero computazionale è quella di un metodo, una strategia, che ci permetta di affrontare dei problemi – intesi nel senso lato del termine – in modo ragionato e critico, cercando ed adottando delle soluzioni intelligenti ed efficaci, che possano essere formalizzate in modo chiaro e reinterpretabile, e che possano essere riadattate per problemi simili.

Il pensiero computazionale secondo la ISTE e la CSTA

Arriviamo, quindi, nel 2011 a schematizzare formalmente queste idee nella definizione della International Society for Technology in Education (ISTE) e della Computer Science Teachers Association (CSTA):

Il pensiero computazionale è un processo di risoluzione dei problemi che include (ma non si limita a) le seguenti caratteristiche:

  • Formulare i problemi in modo da poter utilizzare un computer e altri strumenti per aiutarci a risolverli
  • Organizzare e analizzare i dati in modo logico
  • Rappresentare i dati attraverso astrazioni come modelli e simulazioni
  • Automatizzare le soluzioni attraverso il pensiero algoritmico (una serie di passi ordinati)
  • Identificare, analizzare e implementare le possibili soluzioni con l’obiettivo di raggiungere la combinazione di risorse e passi più efficace
  • Generalizzare e trasferire questo processo di risoluzione dei problemi ad un’ampia varietà di problemi simili
Le componenti principali del Pensiero Computazionale secondo gli autori del progetto europeo EARLYCODE (earlycoders.org)

Schematizzazione delle componenti principali del Pensiero Computazionale secondo gli autori del progetto europeo EARLYCODE (earlycoders.org), sulla base delle precedenti riflessioni.

Quando usiamo il pensiero computazionale?

In quest’ottica stiamo applicando il pensiero computazionale quando programmiamo, quando scriviamo o immaginiamo del codice, quando progettiamo robot, eccetera. Ma se ci riflettiamo, lo stiamo facendo anche in situazioni esterne alla robotica e all’informatica: quando seguiamo o scriviamo delle istruzioni di montaggio, quando seguiamo una ricetta di cucina, quando riflettiamo su quale percorso scegliere per andare da casa nostra a quella di un amico o da uno scaffale all’altro al supermercato, oppure quando scegliamo una strategia nel dipingere un muro o nel posizionare delle piastrelle, così come nel colorare un libro per bambini, e così via.

Schematizzazione grafica dell'algoritmo Quick Sort

Schematizzazione grafica dell’algoritmo Quick Sort, nello stile delle istruzioni di montaggio. Immagine disegnata da Sándor P. Fekete e Sebastian Morr, rilasciata con licenza CC by-nc-sa 4.0. Origine dell’immagine: https://idea-instructions.com/quick-sort/

Fra i vari esempio presentati pensiamo alle istruzioni di montaggio. A titolo di esempio, immaginiamo quelle dei modelli LEGO o dei mobili IKEA. Tali istruzioni sono strumenti che sfruttiamo nella soluzione di un problema (appunto il montaggio del mio oggetto). Esse sono rappresentate in modo logico ed ordinato ma astratto, tanto che – senza l’uso di nessuna parola – sono perfettamente intellegibili. Un manuale di istruzioni è, poi, proprio un algoritmo: se seguo alla lettera tutti i passi giungo alla soluzione del mio problema. Tipicamente le istruzioni sono il più efficiente possibile (ad esempio quelle che prevedono il minor numero di passaggi, o l’utilizzo di combinazioni più semplici, o l’uso del minor numero possibile di pezzi, …). Ovviamente, poi, tale soluzione sarà anche applicabile e generalizzabile per problemi simili, ovvero in questo contesto il montaggio di prodotti simili.

Conclusioni

Provate a riflettere sul significato di “Pensiero Computazionale”, e provate a immaginare esempi, relativi alla vita reale, in cui si utilizzi tale approccio. Per quanto riguarda come sviluppare il pensiero computazionale a scuola: invitate i vostri studenti a riflettere, ad usare il pensiero critico, a strutturare i loro ragionamenti in modo chiaro ed ordinato, a trovare un metodo di semplificazione e di riduzione dei problemi. Per avere qualche ulteriore spunto di riflessione, oltre al materiale indicato in bibliografia e ai numerosi approfondimenti che potete trovare in rete, potete fare riferimento al progetto europeo Erasmus+ EARLYCODE, di cui siamo partner. Trovate sul sito ufficiale www.earlycoders.org  maggiori informazioni. Troverete, inoltre, un manuale didattico dedicato agli insegnanti o agli aspiranti tali, per la promozione del pensiero computazionale nella prima infanzia. Le idee espresse in tale manuale, sebbene pensate per bambini in età prescolare o per i primi anni della scuola primaria, sono anche poi estendibili – con i dovuti riadattamenti – ad altre fasce di età. (Nota: alla data della pubblicazione dell’articolo il manuale non è ancora online, ma lo sarà nei prossimi mesi).

Nella stessa ottica, sono disponibili il corso per docenti Coding con mTiny, che potete acquistare alla pagina dedicata e i laboratori di coding per l’infanzia.

Bibliografia

Papert S., MINDSTORMS: Children, Computers, and Powerful Ideas, Basic Books, New York, 1980
Edizione digitalizzata, per gentile concessione della famiglia e ospitata dal MIT Lifelong Kindergarten Media Lab, https://mindstorms.media.mit.edu/, ultimo accesso 13 nov. 20

Wing J. M., Computational Thinking, Communications of the ACM, Marzo 2006/Vol. 49 No. 3, pg 33-35
https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf, ultimo accesso 13 nov. 20

Wing J. M., Computational Thinking: What and Why?, 17 novembre 2010
https://www.cs.cmu.edu/~CompThink/resources/TheLinkWing.pdf, ultimo accesso 13 nov. 20

International Society for Technology in Education (ISTE) and the Computer Science Teachers Association (CSTA), Operational Definition of Computational Thinking for K–12 Education, 2011
https://cdn.iste.org/www-root/ct-documents/computational-thinking-operational-definition-flyer.pdf?sfvrsn=2, ultimo accesso 13 nov. 20

Wing J. M., Computational Thinking, Microsoft Research Asia Faculty Summit 2012
https://www.microsoft.com/en-us/research/wp-content/uploads/2012/08/Jeannette_Wing.pdf, ultimo accesso 13 nov. 20