# data[].attributes.attachment_link.readable_text
CodyMaze è un labirinto virtuale nel mondo reale. Ci si muove su una scacchiera 5 x 5 le cui caselle contengono dei QRcode. Apparentemente la scacchiera è libera, ma grazie ai QRcode mostra labirinti sempre diversi che vengono proposti al giocatore da un bot Telegram chiamato @codymazebot. Il giocatore si muove fisicamente sulla scacchiera seguendo le istruzioni del bot e scansiona il QR Code su cui arriva ad ogni tappa per verificare di aver eseguito correttamente la sequenza di istruzioni. Durante le varie tappe del gioco vengono proposte sequenze di istruzioni di complessità crescente che introducono tutti i concetti base della programmazione, offrendo un'esperienza equivalente al labirinto classico dell' hour of code, ma diversa di volta in volta e giocata fisicamente. Al termine del gioco il bot Telegram rilascia un attestato nominale di completamento di un'ora di coding, che riporta l'elenco dei costrutti di programmazione sperimentati durante il gioco.

Terreno di gioco

CodyMaze si gioca su una griglia quadrata, 5×5, sulla quale sono disposti 25 QRcode. I QRcode sono disposti sul pavimento, ad almeno 50cm di distanza l'uno dall'altro. In tal modo il giocatore può muoversi con il proprio corpo all'interno della scacchiera, senza usare pedine. Se la scacchiera fosse effettivamente disegnata a terra ogni QR Code occuperebbe il centro di una casella, ma la presenza dei QRcode che identificano il centro delle caselle rende inessenziale tracciarne i bordi. Quindi la scacchiera può non essere disegnata. Le colonne e le righe della scacchiera sono identificate da lettere e numeri, partendo dall'angolo in alto a sinistra. Ad ogni QR Code è assegnata una posizione identificata da una lettera e da un numero. Inoltre la scacchiera è orientata convenzionalmente in modo che il lato superiore corrisponda al Nord e, di conseguenza, quello inferiore al Sud, quello sinistro all'Ovest e quello destro all'Est. Se il luogo lo consente si consiglia di orientare effettivamente la scacchiera in modo coerente con i punti cardinali.
I 25 QR Code stampabili sono disponibili in questo archivio.
Per agevolare la disposizione e l'utilizzo, ogni QR Code riporta l'indicazione della posizione e dei punti cardinali. 5 dei QR Code hanno delle stelle alla cui presenza è condizionata l'esecuzione di alcune istruzioni.

Obiettivo del gioco

Uscire dal labirinto virtuale seguendo le istruzioni fornite dal bot Telegram @codymazebot.

Giocatori

Il gioco può essere giocato da uno o più giocatori. Il limite al numero di giocatori è dato solo dalle dimensioni della scacchiera sulla quale i giocatori devono potersi muovere indipendentemente, eseguendo ciascuno le proprie istruzioni fornite da @codymazebot.

Componenti del gioco

Smartphone o tablet dotato di:

I dispositivi in uso devono essere pari al numero di giocatori che giocano contemporaneamente. Al termine del gioco lo stesso smartphone può essere usato da un altro giocatore, al quale il bot presenterà un percorso diverso.

Difficoltà

Il giocatore non conosce il percorso, ma riceve istruzioni dal bot Telegram e deve interpretarle ed eseguirle correttamente.

Le sequenze di istruzioni fornite dal bot sono di difficoltà crescente, sia per i costrutti che introducono sia per la lunghezza.

Game Play

Il giocatore interagisce con il gioco compiendo le seguenti azioni:

Scansione del QR Code associato alla casella su cui si trova il giocatore (inquadrare con un lettore di codice a barre il QR Code che si intende scansionare, selezionare Telegram messenger come applicazione con cui aprire il link contenuto nel QR Code, premere il tasto AVVIA che appare in basso nell'interfaccia del bot Telegram)

Impostazione della direzione di marcia (selezionare uno dei quattro tasti Nord, Est, Sud, o Ovest quando richiesto da bot)

Lettura e interpretazione delle istruzioni fornite dal bot (la sintassi è descritta nella sezione game design)

Esecuzione delle istruzioni fornite dal bot (le istruzioni si eseguono fisicamente spostandosi sulla scacchiera a terra).

Game Design (regole)
Inizio del gioco

1. È possibile iniziare una nuova partita solo dopo aver concluso le partite eventualmente in corso.

2. Se @codymazebot non è pronto ad iniziare una nuova partita perché la precedente è stata interrotta, è possibile riportarlo allo stato iniziale con il comando /reset

3. In queste condizioni il gioco viene avviato quando viene scansionato uno qualsiasi dei QRcode della griglia

4. Per iniziare il gioco il giocatore deve scegliere una casella esterna (una delle 16 che compongono il bordo) e scansionare il corrispondente QRcode per notificare al bot la scelta

5. Il bot indica al giocatore la direzione di marcia e chiede conferma. E' importante rispettare questa indicazione: ogni successiva istruzione dovrà essere eseguita partendo dalla posizione scelta e dalla direzione indicata dal bot.

Mossa

1. Ad ogni passo il bot guida il giocatore con un codice preceduto da questa frase "Segui queste indicazioni per risolvere il prossimo passo e scansiona il QR Code all'arrivo". Il codice segue la sintassi descritta nel seguito alla sezione Sintassi.

2. Il giocatore deve muoversi sulla scacchiera eseguendo il codice come se fosse un robot, facendo attenzione alla posizione e alla direzione di partenza.

3. Terminata l'esecuzione il giocatore scansione il QR Code per notificare al bot la posizione che ha raggiunto.

4. Il bot risponde chiedendo "In che direzione stai guardando?" e prensentando i 4 pulsanti per la selezione della direzione.

5. Il giocatore indica la direzione (senza girarsi rispetto alla posizione assunta al termine dell'esecuzione del codice)

6. Se l'esecuzione è corretta il bot dice "Benissimo! Hai trovato il punto giusto." e propone il codice del passo successivo.

7. Attenzione: è possibile che una mossa non comporti alcuno spostamento. In tal caso, l'esecuzione corretta prevede che venga scansionato nuovamente il QRCode su cui il giocatore si trova.

Mosse sbagliate

1. Una mossa è sbagliata se viene scansionato il QRCode sbagliato o impostata la direzione sbagliata rispetto a quelli previsti dal codice fornito dal Bot.

2. A fronte di una mossa sbagliata il bot chiede al giocatore di tornare al punto di partenza dell'ultima mossa, di cui fornisce coordinate e direzione. La risposta del bot è: "Ops! Hai sbagliato! Ritorna alla posizione ... guardando verso ... e scansiona nuovamente il codice."

3. Il giocatore deve tornare nella posizione indicata dal bot, scansionare il QRCode, guardare nella direzione indicata dal bot e selezionarla per conferma quando richiesto.

4. A questo punto il bot fornisce nuovamente le istruzioni per ripetere la mossa.

Completamento del labirinto

1. Al termine di tutte le mosse previste il bot manda il seguente messaggio: "Complimenti! Hai completato CodyMaze!"

2. Il bot chiede quindi di digitare il nome che si vuole sul certificato di completamento. Il messaggio di richiesta è il seguente: "Scrivi il nome e cognome da visualizzare sul certificato di completamento:"

3. Il giocatore deve digitare il proprio nome e cognome (o una qualsiasi altro nome, come ad esempio il nome della classe o un elenco di nomi nel caso in cui il gioco sia stato giocato in squadra)

4. Il bot chiede: "Confermi che il nome inviato è ...?" per dare modo di correggere eventuali errori.

5. Rispondendo Sì si ottiene il certificato nominale di completamento. Oltre al nome indicato dal giocatore, il certificato contiene un identificativo univoco che in futuro potrà essere utilizzato per verificare l'autenticità del certificato. Il certificato può essere scaricato, salvato e condiviso con orgoglio!

6. Quando il bot invia il messaggio "Grazie per aver giocato con CodyMaze!" è pronto ad iniziare una nuova partita.

Sintassi

Istruzioni elementari. Il bot usa le 3 istruzioni elementari di CodyRoby, rappresentate dalle rispettive iniziali in caratteri minuscoli:

a = vai avanti, da eseguire spostandosi da un QRcode a quello successivo lungo la direzione di marcia

s = girati a sinistra, da eseguire ruotando di 90 gradi in senso antiorario senza cambiare casella

d = girati a destra, da eseguire ruotando di 90 gradi in senso orario senza cambiare casella

Ripetizioni. Il bot chiede di ripetere più volte un'istruzione o una sequenza di istruzioni indicando il numero di ripetizioni seguito dal codice da ripetere racchiuso tra parentesi graffe:

Costrutti nidificati. Le ripetizioni, come i restanti costrutti descritti nel seguito, possono anche essere nidificati. In latre parole, il codice da ripetere può contenere ripetizioni o altri costrutti, come in questi esempi:

Condizioni. Per esprimere le condizioni a cui è subordinata l'esecuzione di determinate istruzioni, il bot utilizza il "se", racchiudendo la condizione tra parentesi tonde e le istruzioni da eseguire in modo condizionato tra parentesi graffe:

se(condizione){codice} = esegui il codice solo se si verifica la condizione

se(condizione){codice1}altrimenti{codice2} = esegui codice1 se si verifica la condizione, altrimenti esegui codice2

Le condizioni utilizzate dal bot sono le seguenti:

strada davanti o c'è strada = verificata se nella direzione di marcia c'è almeno una casella su cui spostarsi

strada a dx = verificata se rispetto alla posizione e alla direzione di marcia del giocatore c'è almeno una casella a destra

strada a sx = verificata se rispetto alla posizione e alla direzione di marcia del giocatore c'è almeno una casella a sinistra

stella = verificata se nella casella in cui si trova il giocatore, attorno al QRCode, ci sono delle stelle

non stella = verificata se nella casella in ci trova il giocatore, attorno al QRCode, non ci sono delle stelle

Ripetizioni condizionate. Il bot usa il termine "finché" per indicare che una o più istruzioni vanno ripetute finchè perdura una condizione. La condizione è espressa tra parentesi tonde, il codice da eseguire tra parentesi graffe:

finché(condizione){codice} = esegui il codice finché è verificata la condizione.

Attenzione: nelle ripetizioni e nelle ripetizioni condizionate occorre eseguire tutto il codice interno ad ogni ripetizione, poi occorre verificare nuovamente la condizione di ripetizione (condizione esplicita o numero di ripetizioni) per decidere se eseguirlo di nuovo.

Consiglio. Per illustrare la sintassi ai partecipanti si consiglia di effettuare un'esecuzione collettiva del gioco, dichiarando e commentando insieme le sequenze di istruzioni che il bot assegna a ogni passo. In alternativa, si possono creare delle sequenze di istruzioni di prova per simularne l'esecuzione.

Installazioni

CodyMaze è un gioco di coding da piazza, che è stato presentato per la prima volta durante l'edizione 2017 di Urbino Summer Code Fest, il 24 agosto 2017, nel cortile del Collegio Raffaello a Urbino. Nella prima installazione i QRCode erano posti su scatole quadrate per essere più visibili. La seconda sperimentazione è stata effettuata a Napoli, in Piazza del Plebiscito, il 21 settembre 2017, con i QRCode appoggiati su lattine di pomodoro.

I due esperimenti pubblici sono stati fondamentali per collaudare e debuggare l'applicazione prima di renderla disponibile a chiunque voglia allestire il gioco in una piazza, in un cortile, a casa, o in un'aula. I QRCode non devono necessariamente essere appoggiati su oggetti rialzati, è sufficiente appoggiarli a terra. Si consiglia comunque di fissarli a terra in modo da evitare che vengano spostati accidentalmente.

Sviluppi futuri

CodyMaze verrà ulteriormente sviluppato per offrire esperienze di coding diversificate per fascia d'età. I QRCode non cambieranno. Quindi chiunque volesse farne un'installazione fissa potrà utilizzarla per tutte le versioni del gioco.

Credits

CodyMaze è un progetto di Alessandro Bogliolo, sviluppato da Brendan Paolini, Lorenz Cuno Klopfenstein e Saverio Delpriori, del Corso di Laurea in Informatica Applicata dell'Università di Urbino.

# data[].attributes.attachment_link.title
CodyMaze - L'ora di coding da piazza - CodeMOOC

# data[].attributes.attachment_link.description
CodyMaze è un labirinto virtuale nel mondo reale. Ci si muove su una scacchiera 5 x 5 le cui caselle contengono dei QRcode. Apparentemente la scacchiera è libera, ma grazie ai QRcode mostra labirinti sempre diversi che vengono proposti al giocatore da un bot Telegram chiamato @codymazebot.

# data[].attributes.attachment_link.readable_text
Il testo originale della petizione, redatto in inglese dai CodeWeek Ambassadors riuniti a Bruxelles il 12 settembre 2017, è disponibile al seguente indirizzo, dove può essere sottoscritto da chiunque lo approvi e voglia sostenerlo:
https://www.gopetition.com/petitions/algorithms-as-intangible-cultural-heritage.html
Titolo:

Algoritmi come patrimonio culturale immateriale

Premessa:

Gli algoritmi sono conquiste immateriali dell'intelligenza umana che producono un impatto tangibile sulle nostre vite e preparano il terreno per il futuro. Gli algoritmi conosciuti forniscono una comprensione profonda degli aspetti computazionali del mondo, abilitano un utilizzo consapevole delle tecnologie e offrono le basi per l'innovazione.

Un algoritmo è una procedura non ambigua, finita ed eseguibile per risolvere un problema, per ottenere un risultato o per realizzare un'idea.

Ogni problema per cui esista un algoritmo noto non può più essere considerato un problema, poichè si riduce ad un compito da svolgere. La complessità del compito è determinata dal più efficiente degli algoritmi noti per svolgerlo. Chiunque concepisca un algoritmo per risolvere un problema ha risolto quel problema per sempre. Chiunque concepisca un algoritmo più veloce per svolgere un compito lo ha reso più semplice per sempre.

Nel 1972 l'UNESCO (United Nations Educational, Scientific and Cultural Organization) ha adottato una Convenzione sulla protezione del Patrimonio Mondiale Culturale e Naturale, cercando di incoraggiare l'identificazione, la protezione e la conservazione del patrimonio culturale e naturale in ogni parte del mondo, considerato di eccezionale valore per l'umanità. Secondo l'UNESCO: "il patrimonio è la nostra eredità dal passato, ciò con cui conviviamo oggi e ciò che passiamo alle generazioni future. Ciò che rende eccezionale il concetto di Patrimonio Mondiale è la sua applicazione universale" (tradotto da http://whc.unesco.org/en/about/, visitato il 12 settembre 2017).

Nel 2003, l'UNESCO ha riconosciuto che il patrimonio culturale non si limita a monumenti e collezioni di oggetti e ha adottato una nuova Convenzione per la Salvaguardia del Patrimonio Culturale Immateriale, defnito dall'Articolo 2 come "le prassi, le rappresentazioni, le espressioni, le conoscenze, il know-how - come pure gli strumenti, gli oggetti, i manufatti e gli spazi culturali associati agli stessi - che le comunità, i gruppi e in alcuni casi gli individui riconoscono in quanto parte del loro patrimonio culturale." (tradotto da https://ich.unesco.org/en/convention, visitato il 12 settembre 2017).

Il secondo paragrafo dell'Articolo 2 della Convebzione identifica, inter alia, 5 domini nei quali il patrimonio culturale immateriale si manifesta: (a) tradizioni ed espressioni orali, ivi compreso il linguaggio, in quanto veicolo del patrimonio culturale immateriale; (b) le arti dello spettacolo; (c) le consuetudini sociali, gli eventi rituali e festivi; (d) le cognizioni e le prassi relative alla natura e all'universo; (e) l'artigianato tradizionale.

Il terzo paragrafo dell'Articolo 2 della Convenzione definisce " salvaguardia " come "misure volte a garantire la vitalità del patrimonio culturale immateriale, ivi compresa l'identificazione, la documentazione, la ricerca, la preservazione, la protezione, la promozione, la valorizzazione, la trasmissione, in particolare attraverso un'educazione formale e informale, come pure il ravvivamento dei vari aspetti di tale patrimonio culturale." La salvaguardia include l'educazione, la sensibilizzazione, il potenziamento delle capacità a livello nazionale (Articolo 14), nonchè il mantenimento di elenchi rappresentativi a livello internazionale (Articolo 16) "al fine di garantire una migliore visibilità del patrimonio culturale immateriale e di acquisire la consapevolezza di ciò che esso significa."

Petizione:

I sottoscritti riconoscono che gli algoritmi sono tra le conquiste più alte dell'umanità e che sono degni di essere considerati parte del nostro patrimonio culturale immateriale.

I sottoscritti credono che salvaguardare gli algoritmi significhi aumentarne la visibilità, dare consapevolezza della loro importanza, aumentarne la diffusione e contribuire alla costruzione di una società della conoscenza.
I sottoscritti chiedono all'UNESCO di aggiungere gli algoritmi tra i domini nei quali si manifesta il patrimonio culturale immateriale. FIRMA LA PETIZIONE

# data[].attributes.attachment_link.title
Petizione per riconoscere gli algoritmi come patrimonio culturale dell'umanità

# data[].attributes.attachment_link.description
Il testo originale della petizione, redatto in inglese dai CodeWeek Ambassadors riuniti a Bruxelles il 12 settembre 2017, è disponibile al seguente indirizzo, dove può essere sottoscritto da chiunque lo approvi e voglia sostenerlo: https://www.gopetition.com/petitions/algorithms-as-intangible-cultural-heritage.html Algoritmi come patrimonio culturale immateriale Gli algoritmi sono conquiste immateriali dell'intelligenza umana che producono un impatto tangibile sulle nostre vite e preparano il terreno per il futuro.

# data[].attributes.attachment_link.readable_text
Domani, lunedì 9 ottobre, alle 11:30, appuntamento in diretta con le scuole di ogni ordine e grado.

CodyQuiz è un gioco didattico online. Durante la diretta parlerò di coding e farò degli indovinelli di difficoltà crescente dando a tutti la possibilità di rispondere.

Sullo schermo comparirà un QRcode che potrete scansionare per visualizzare sul vostro smartphone o tablet la domanda e impostare la risposta. Verrete messi in comunicazione con un bot Telegram che vi dirà se la risposta è corretta.

Per partecipare con la vostra classe dovete avere:

1. la possibilità di seguire tutti insieme la diretta (il video è qui sotto)

2. un dispositivo mobile con lettore QRcode, Telegram e connessione dati per rispondere

La partecipazione a CodyQuiz con la vostra classe è un evento CodeWeek! Inseritelo sulla mappa!

Se non potete collegarvi in diretta potrete seguire la registrazione. Il bot continuerà a renderla interattiva!

Categorie Pubblicato il CodeWeekEU-2017

# data[].attributes.attachment_link.description
Domani, lunedì 9 ottobre, alle 11:30, appuntamento in diretta con le scuole di ogni ordine e grado. CodyQuiz è un gioco didattico online. Durante la diretta parlerò di coding e farò degli indovinelli di difficoltà crescente dando a tutti la possibilità di rispondere.

# data[].attributes.attachment_link.title
Scratch: strumento di programmazione a blocchi

# data[].attributes.attachment_link.title
Tutti gli eventi dell'Ora del Codice - Italy

# data[].attributes.attachment_link.description
"CARDINALE ORESTE GIORGI" - RMIC8BD00C (Metropolitan City of Rome)

# data[].attributes.headline
Scrivi su quesro padlet i tuoi commenti...

# data[].attributes.subject
Scrivi su quesro padlet i tuoi commenti...

# data[].attributes.body
1. Ti è piaciuta questa attività?

2. Cosa pensi della programmazione?

3. Quali degli oggetti che abbiamo intorno sono programmabili?

4. Quali oggetti ci aspettiamo che lo diventino a breve?

5. Come vorremmo usare la programmazione per cambiare il  comportamento degli oggetti che ci circondano?

https://padlet.com/mg_lupone/commenti2b

# data[].attributes.attachment_link.description
Use blocks of code to take Steve or Alex on an adventure through this Minecraft world.

# data[].attributes.attachment_link.title
Intervista a Marco Belinelli - ProgrammaIlFuturo.it

# data[].attributes.attachment_link.readable_text
Cos'è il pensiero computazionale

Per caratterizzare sinteticamente il rilevante contributo culturale apportato dall'Informatica alla comprensione della società contemporanea, la scienziata informatica Jeannette Wing nel 2006 introdusse l'espressione "pensiero computazionale " (vedi l' articolo originale - in inglese).

Prima di fornire qualche spiegazione su cosa si intenda con questa espressione, vi invitiamo a guardare il seguente spezzone video, tratto dal film "Apollo 13".

L'essenza del concetto, esemplificata magistralmente dal video, è che con il pensiero computazionale si definiscono procedure che vengono poi attuate da un esecutore ( agente ), che opera in modo "meccanico" e "inconsapevole" nell'ambito di un contesto prefissato, per raggiungere degli obiettivi assegnati.

Il pensiero computazionale - il modo di pensare sviluppato da parte di chi ha studiato e praticato informatica - può essere definito come l'insieme dei processi mentali usati per modellare una situazione e specificare i modi mediante i quali un agente elaboratore di informazioni può operare in modo effettivo all'interno della situazione stessa per raggiungere uno o più obiettivi forniti dall'esterno.

È importante ribadire che l'agente esegue istruzioni (di cui però non conosce il significato), per elaborare dati (di cui però non conosce il significato). In tal modo un'elaborazione "meccanica" e "inconsapevole" riesce a replicare funzioni cognitive "umane". Questa è una vera e propria rivoluzione.

Potete trovare in questo articolo una discussione più dettagliata su cosa si intenda con il termine "pensiero computazionale" e come vada usato. Si noti che il pensiero computazionale non considera la semplice "risoluzione di problemi" ma il "far risolvere i problemi ad un esecutore". È questa la novità concettuale che rende l'informatica - termine che indica l'elaborazione automatica delle informazioni - una scienza nuova e distinta dalla matematica, che ha risolto problemi per millenni.

I metodi caratteristici e gli strumenti intellettuali che si acquisiscono con lo studio dell'informatica hanno un valore concettuale generale che inducono a ritenere utile per tutti gli studenti lo sviluppo del pensiero computazionale.

I metodi caratteristici includono:

analizzare e organizzare i dati del problema in base a criteri logici;

rappresentare i dati del problema tramite opportune astrazioni;

formulare il problema in un formato che ci permette di usare un "esecutore" (nel senso più ampio del termine, ovvero una macchina, un essere umano, o una rete di umani e macchine) per risolverlo;

automatizzare la risoluzione del problema definendo una soluzione algoritmica, consistente in una sequenza accuratamente descritta di passi, ognuno dei quali appartenente ad un catalogo ben definito di operazioni di base;

identificare, analizzare, implementare e verificare le possibili soluzioni con un'efficace ed efficiente combinazione di passi e risorse (avendo come obiettivo la ricerca della soluzione migliore secondo tali criteri);

generalizzare il processo di risoluzione del problema per poterlo trasferire ad un ampio spettro di altri problemi.

Gli strumenti intellettuali includono:

confidenza nel trattare la complessità (dal momento che i sistemi software raggiungono normalmente un grado di complessità superiore a quello che viene abitualmente trattato in altri campi dell'ingegneria);

perseveranza nel lavorare con problemi difficili;

tolleranza all'ambiguità (da riconciliare con il necessario rigore che assicuri la correttezza della soluzione);

abilità nel trattare con problemi definiti in modo incompleto;

abilità nel trattare con aspetti sia umani che tecnologici, in quanto la dimensione umana (definizione dei requisiti, interfacce utente, formazione, ...) è essenziale per il successo di qualunque sistema informatico;

capacità di comunicare e lavorare con gli altri per il raggiungimento di una meta comune o di una soluzione condivisa.

# data[].attributes.attachment_link.description
Cos'è il pensiero computazionale Per caratterizzare sinteticamente il rilevante contributo culturale apportato dall'Informatica alla comprensione della società contemporanea, la scienziata informatica Jeannette Wing nel 2006 introdusse l'espressione "pensiero computazionale  " (vedi l' articolo originale - in inglese). Prima di fornire qualche spiegazione su cosa si intenda con questa espressione, vi invitiamo a guardare il seguente spezzone video, tratto dal film "Apollo 13".

# data[].attributes.body
è la capacità di individuare un procedimento costruttivo, fatto di passi semplici e non ambigui, che ci porta alla soluzione di un problema complesso