Il pensiero computazionale non è programmazione. È il modo di pensare che permette di risolvere problemi, grandi o piccoli, scomponendoli in parti gestibili. Lo insegno ai miei studenti del liceo perché è una competenza che serve nella vita, indipendentemente dalla carriera scelta.
Definizione
Pensiero computazionale = saper scomporre un problema complesso in sottoproblemi semplici, riconoscere pattern, e definire una sequenza di passi per risolverlo.
Problema complesso
↓
Decomposizione
↓
Sottoproblemi semplici
↓
Riconoscimento pattern
↓
Algoritmo (sequenza di passi)
↓
Soluzione
I 4 pilastri del pensiero computazionale
1. Decomposizione (Breaking Down)
Dividere un problema grande in pezzi piccoli e gestibili.
Esempio reale: Organizzare una festa
Problema: Organizzare una festa
├─ Invitare persone
├─ Preparare cibo
│ ├─ Scegliere menu
│ ├─ Fare spesa
│ └─ Cucinare
├─ Decorare
└─ Gestire timing
Ogni sottoproblema è indipendente (puoi delegare) e risolvibile.
2. Riconoscimento di Pattern (Pattern Recognition)
Identificare somiglianze e pattern ricorrenti per riutilizzare soluzioni.
Esempio: Algoritmo per preparare pasta
1. Riempi pentola con acqua
2. Accendi fuoco
3. Aspetta che bolle
4. Aggiungi sale
5. Aggiungi pasta
6. Aspetta X minuti
7. Scola e servi
Pattern: "Aspetta che bolli", "Aggiungi Y", "Aspetta tempo X"
Riutilizzo: Stesso pattern per preparare riso, patate, verdure
3. Astrazione (Abstraction)
Nascondere i dettagli non necessari per focalizzarsi sull’essenziale.
Esempio: Usare un’app di mappe
ASTRAZIONE: Clicco A e B, mi dice il percorso
DETTAGLI NASCOSTI:
├─ Come calcola la strada più breve? (Algoritmo Dijkstra)
├─ Come sa dove sei? (GPS + triangolazione)
├─ Come scarica mappe? (Tile server)
└─ Come stima il traffico? (Big data)
Come utente, NON mi interessa. Mi interessa solo: A → B → Percorso
Questo è il potere dell’astrazione: semplificare la complessità.
4. Algoritmo (Algorithm Design)
Sequenza finita di passi ordinati per risolvere il problema.
Esempio: Trovare il numero più grande in una lista
Input: [3, 7, 2, 9, 1, 5]
Output: 9
Algoritmo:
1. Assegna il primo numero come "massimo"
2. Per ogni numero rimanente nella lista:
a. Se il numero > massimo:
- Assegna questo numero come nuovo "massimo"
3. Ritorna massimo
Traccia:
Step 1: massimo = 3
Step 2:
- 7 > 3? SI → massimo = 7
- 2 > 7? NO
- 9 > 7? SI → massimo = 9
- 1 > 9? NO
- 5 > 9? NO
Step 3: Ritorna 9 ✓
Come insegno il pensiero computazionale senza codice
Attività 1: Diagrammi di flusso
Rappresentazione visuale di un processo:
START
↓
Leggi numero N
↓
N è pari? ──SI──→ Stampa "Pari" ──┐
↓ NO │
└────→ Stampa "Dispari" ←──┘
↓
END
Gli studenti disegnano questi diagrammi prima di scrivere codice. Aiuta a visualizzare la logica.
Attività 2: Giochi di logica
Esempio: “8 Puzzle” (sliding puzzle)
Stato iniziale: Stato target:
┌─┬─┬─┐ ┌─┬─┬─┐
│1│2│3│ │1│2│3│
├─┼─┼─┤ ├─┼─┼─┤
│4│5│6│ │4│5│6│
├─┼─┼─┤ ├─┼─┼─┤
│7│8│ │ │7│8│9│
└─┴─┴─┘ └─┴─┴─┘
Problema: Come ordinare i numeri?
Decomposizione: Muovi ogni numero nella posizione corretta
Pattern: BFS (Breadth-First Search) per trovare il percorso
Attività 3: Pseudocodice
Scrivere la logica in linguaggio quasi-naturale prima del codice vero:
ALGORITMO: Calcola media di N numeri
INPUT: lista di numeri
VARIABILI: somma = 0, contatore = 0, media
PER OGNI numero nella lista:
somma = somma + numero
contatore = contatore + 1
media = somma / contatore
RITORNA media
Una volta che la logica è chiara, tradurre in Python/JavaScript è facile.
Applicazioni nel mondo reale
Google Maps
Problema: Trovare percorso più veloce A → B
Decomposizione: Mappe (grafo) + Traffic data + Algoritmi
Pattern: Algoritmo Dijkstra (cammino minimo)
Astrazione: L'utente clicca "Vai", il resto è magia
Spotify Recommendation
Problema: Consigliare canzoni che piacciono all'utente
Decomposizione: Dati (ascolti), Modello (ML), Ranking
Pattern: Collaborative filtering (chi ascolta A ascolterà anche B?)
Astrazione: "Scopri nuova musica" → Algoritmo complesso nascosto
WhatsApp Encryption
Problema: Mandare messaggi che solo il ricevente può leggere
Algoritmo: End-to-end encryption (RSA + AES)
Pattern: Chiave pubblica (chiunque può inviare) + Chiave privata (solo ricevente decodifica)
Astrazione: L'utente non sa che sto usando crittografia
Perché insegnarlo alle scuole?
✅ Non dipende dalla tecnologia
Pen & paper: Funziona allo stesso modo del codice
Sviluppo: La logica rimane uguale anche se cambio linguaggio
✅ Transferibile a tanti ambiti
Ricette di cucina, Istruzioni IKEA, Progettazione, Economia, Biologia
✅ Prepara i ragazzi al problem-solving reale
Non è "quale sintassi uso", è "come divido il problema?"
Esercizio: Pensiero computazionale nella vita
Pensa a una situazione quotidiana e applica i 4 pilastri:
Situazione: Preparare un esame
-
Decomposizione:
- Leggi capitoli 1-3
- Risolvi esercizi pratica
- Ripeti concetti chiave
- Fai simulazione esame
-
Pattern:
- Pattern di domande: Definizioni, calcoli, applicazioni
- Riutilizzo: Se ho studiato bene il capitolo 1, il capitolo 2 sarà simile
-
Astrazione:
- Focus: Cosa è importante? (Concetti, non tutti i dettagli)
- Ignora: Esempi marginali, storia degli autori
-
Algoritmo:
PER OGNI argomento: LEGGI spiegazione RISOLVI esercizi correlati SE non capisco: RIPETI lezione oppure CHIEDI aiuto RIPETI tutto una volta FATTI simulazione esame
Il pensiero computazionale è un’abilità per la vita, non solo per la programmazione.