# data[].attributes.body
In occasione del CODEWEEK EVENT la classe 1D con l'ausilio della professoressa Cinzia Corso ha  partecipato seguendo il Corso 3 di Code.org con l'obiettivo di costruire una storia attraverso gli algoritmi che la piattaforma prevedeva.
Il Corso 3 è progettato per studenti (dai 10 anni in su), che approfondiscono i concetti della programmazione e imparano a definire soluzioni flessibili per problemi complessi. Alla fine del corso gli studenti creano giochi interattivi e storie da condividere con tutti.

Il nuovo concetto fondamentale introdotto in questo corso è quello di funzione, cioè di un blocco di programma che può essere ri-usato in più contesti. Inoltre si introduce una variazione del blocco di ripetizione, cioè del ciclo, denominato ciclo "mentre" che continua a ripetere una certa serie di azioni mentre una condizione rimane vera.
Le lezioni tecnologiche del Corso 3 sono 14. Ognuna lavora su un concetto fondamentale, su cui sono incentrati i relativi esercizi. Gli esercizi finali di ogni lezione sono di verifica dell'apprendimento.

Per ogni lezione viene fornita una guida didattica che descrive i concetti di base presentati e gli obiettivi didattici della lezione. Ogni guida contiene inoltre un video che illustra e commenta lo svolgimento dell'intera lezione.
La classe è stata registrata su Code.org e ad ogni studente della classe è stata assegnata una password (un'immagine segreta) che garantisse l'accesso alla piattaforma dopo aver digitato correttamente l'url e il codice assegnato alla classe TFHGQF
L'operato degli allievi è stato sempre monitorato dalla dashboard dell'insegnante

# data[].attributes.body
Imparare ad imparare: capacità, da parte dello studente, di mettere a punto una efficace organizzazione del proprio apprendimento
Acquisire ed interpretare le informazioni: saper acquisire ed interpretare criticamente l'informazione ricevuta, valutandone l'attendibilità e l'utilità
Agire in modo autonomo e responsabile: sapersi inserire in modo attivo e consapevole nella vita sociale e far valere al suo interno i propri diritti e bisogni riconoscendo al contempo quelli altrui, le opportunità comuni i limiti, le regole, le responsabilità.  Collaborare e partecipare: interagire in gruppo, comprendendo i diversi punti di vista, valorizzando le proprie e le altrui capacità, gestendo la conflittualità, contribuendo all’apprendimento comune ed alla realizzazione delle attività collettive. Comunicare: Comprendere:messaggi di genere diverso trasmessi utilizzando linguaggi diversi mediante diversi  supporti (cartacei, informatici e multimediali).
Rappresentare: eventi, fenomeni, principi, concetti, norme, procedure, atteggiamenti, stati d’animo, emozioni, ecc. utilizzando linguaggi diversi e diverse conoscenze disciplinari, mediante diversi supporti. (Creazione di una storia digitale interattiva)

# data[].attributes.body
Gli studenti devono aiutare lo zombie a raggiungere il girasole usando una combinazione di sequenze e cicli.
In questa lezione viene anche introdotto un nuovo tipo di ripetizione, realizzata dal blocco "ripeti fino a che". Si tratta di un ciclo che decide quante volte le istruzioni vanno ripetute non a priori, cioè sulla base di un numero definito, ma sulla base del verificarsi di una certa condizione.

Concetti di base
la ripetizione condizionata (ovvero decidere di ripetere azioni sulla base del verificarsi di una condizione), realizzata dal blocco "ripeti fino a che"

Obiettivi della lezione
-Creare un programma per portare a termine un compito assegnato usando passi sequenziali
-Contare il numero di volte che un'azione deve essere ripetuta, e rappresentare tale ripetizione mediante un ciclo
-Analizzare un problema e risolverlo nel modo più efficiente possibile
-Utilizzare una combinazione di comandi sequenziali e comandi ripetuti tramite un ciclo, allo scopo di raggiungere la fine di un labirinto

# data[].attributes.body
In questa lezione gli studenti usano l'Artista per scrivere programmi che costruiscono disegni complessi usando cicli inseriti uno dentro l'altro, cioè cicli annidati, in particolare gli studenti costruiranno figure semplici che contengono ripetizioni, per poi costruire figure più complesse ripetendo più volte le figure semplici.
Concetti di base

i cicli annidati, cioè cicli inseriti uno dentro l'altro

Obiettivi della lezione
-Contare il numero di volte che un'azione deve essere ripetuta, e rappresentare tale ripetizione mediante un ciclo
-Dividere il numero di gradi di un cerchio per un numero finito di segmenti
-Dato il numero di segmenti, calcolare i gradi necessari a completare un cerchio
-Dividere compiti difficili in compiti ripetibili più semplici
-Combinare forme semplici in disegni complessi, facendo uso di cicli annidati

# data[].attributes.body
In questa lezione gli studenti controllano una contadina che deve preparare un campo per la coltivazione, rimuovendo i mucchi di terra e riempiendo le buche con la sua pala.

In particolare gli studenti impareranno a distinguere i casi in cui usare la ripetizione definita e quelli in cui usare la ripetizione indefinita.
Concetti di base
La ripetizione definita (ovvero decidere di ripetere un’azione un numero prestabilito di volte), realizzata dal blocco "ripeti ... volte"
La ripetizione indefinita (ovvero decidere di ripetere un’azione per tutto il tempo in cui è vera una condizione), realizzata dal blocco "mentre"

Obiettivi della lezione
-Distinguere tra cicli che ripetono le istruzioni un numero prestabilito di volte (ripetizione definita) e cicli che ripetono le istruzioni per tutto il tempo in cui è vera una certa condizione (ripetizione indefinita).

-Utilizzare un ciclo "mentre" per creare programmi in grado di risolvere problemi con valori incogniti (che diventano noti solo durante l'esecuzione del programma).

# data[].attributes.body
In questa lezione gli studenti si trovano di fronte esercizi che sono stati svolti in modo non corretto. Devono quindi esaminare il codice esistente per identificare – e possibilmente correggere – gli errori.
I programmi di reale interesse descrivono procedure molto complesse che vengono affidate ad un calcolatore, cioè un esecutore automatico privo di qualunque intelligenza. Questo esecutore farà esattamente ciò che noi gli diremo di fare, errori compresi!

Anche il più bravo programmatore commette errori e ha bisogno di provare il proprio codice per verificare che funzioni e che faccia esattamente ciò per cui è stato scritto. Se qualcosa non va bisogna saperne individuare la causa e correggerla. Questa fase di verifica e correzione degli errori si chiama in inglese “debugging ”. L’origine del nome, che deriva dall’inglese “bug ”, risale agli anni ’40 del secolo scorso, quando fu proprio un insetto (“bug ”, per l’appunto) a produrre, causando un corto circuito, il malfunzionamento di uno dei primi calcolatori.
Per aiutare gli studenti a correggere gli errori, si dà loro la possibilità di eseguire il programma "passo passo", cioè "un blocco alla volta", per vedere l'effetto di ciascuna istruzione e capire quali possono essere le cause del non corretto funzionamento.

Concetti di base
la ricerca e correzione di errori
l'esecuzione passo passo (eseguita tramite il pulsante Fai un passo)

Obiettivi della lezione
-Predire quando un programma commetterà un errore
-Modificare un programma esistente per correggere gli errori che contiene
-Capire che un algoritmo è sbagliato perché i passi non sono nell'ordine giusto
-Riflettere sulle diverse strategie di correzione degli errori

# data[].attributes.body
In questa lezione gli studenti possono applicare tutte le competenze che hanno appreso per creare una storia animata.
In particolare gli studenti creeranno storie animate, facendo muovere e parlare personaggi sullo schermo.

In una storia ci sono dei personaggi, e quando accade qualcosa, questi personaggi reagiscono in un certo modo. Per esempio, quando il personaggio Cane incontra il personaggio Gatto, quest'ultimo dice qualcosa. Il fatto che "accade qualcosa " viene chiamato evento e i programmi che realizzano giochi interattivi sono programmi guidati dagli eventi, cioè programmi in cui si fanno delle azioni in risposta al verificarsi di certi eventi. In questi programmi ci sono quindi dei blocchi del tipo quando accade qualcosa e a questi blocchi si attaccano i blocchi con le azioni desiderate. Si realizza così un gestore dell'evento, cioè un insieme di blocchi che fa reagire il programma a ciò che è accaduto.

Ovviamente si continuano ad usare gli stessi concetti che abbiamo visto in altre lezioni, ad esempio il concetto di sequenza (per decidere l'ordine in cui i personaggi parlano o si muovono) e l'istruzione ripeti.
In particolare, si usa spesso una versione particolare di quest'ultima istruzione di ripetizione, chiamata ripeti per sempre, per serve per ripetere in continuazione (per tutta la durata del gioco) alcune azioni.
Nei primi esercizi lo studente impara come costruire semplici storie.

Nell'ultimo esercizio, può costruire una storia interattiva usando i blocchetti che ha imparato a conoscere, oltre ad avere la possibilità di scoprirne di nuovi.

Alla fine lo studente può condividere la sua creazione con gli amici.
Concetti di base

l'evento, cioè il fatto che accade qualcosa, indicato dai blocchi del tipo quando accade qualcosa;

il gestore di evento, cioè un insieme di blocchi che fa reagire il programma a ciò che è accaduto, realizzato concatenando sotto ai blocchi di evento, le azioni volute

la ripetizione infinita, cioè la ripetizione di azioni per tutta la durata del gioco, realizzata tramite il blocco ripeti per sempre

Obiettivi della lezione
-Identificare azioni che sono legate a eventi
-Creare una storia animata e interattiva usando sequenze, cicli e gestori di eventi
-Condividere un artefatto creativo da loro realizzato con gli altri studenti