Ora del Codice ® con PyTamaro

Programma il Tuo Castello
Note per l'insegnante

Hai intenzione di far programmare il proprio castello alla tua classe? Questo tutorial autoguidato di un'ora combina programmazione e storia. È rivolto a studentesse e studenti di età pari o superiore a 13 anni, pronti a fare i primi passi in un linguaggio di programmazione testuale.
Photo of Castle

Guida

Queste note per l'insegnante forniscono informazioni sulla didattica e sul contenuto (programmazione e storia) di questo tutorial Ora del Codice. Se vuoi andare oltre questo tutorial di un'ora, dai un'occhiata alle nostre numerose risorse gratuite su questo sito web di PyTamaro. Molte delle risorse sono utilizzate nei corsi di informatica delle scuole superiori svizzere.

Questa Ora del Codice è stata sviluppata da studentesse e studenti!

Sì! Questa Ora del Codice è stata sviluppata da studentesse e studenti di informatica di una piccola università pubblica in Svizzera.

Agnese
Zamboni
Lead Developer
Davide
Frova
Developer
Giorgia
Lillo
Developer
Jamila
Oubenali
Developer

Il contenuto (attività e messa in sequenza, istruzioni, codice iniziale e soluzione, oltre a tutte le grafiche predefinite, che sono state programmate, non disegnate, componendo primitive geometriche con codice Python/PyTamaro) è stato sviluppato da un piccolo team di studentesse e studenti universitari della Facoltà di Informatica dell'USI, l'Università della Svizzera italiana, nella parte italofona della Svizzera. Finanziati da un fondo per l'innovazione didattica, hanno trascorso un mese nell'estate del 2023 visitando la vera Fortezza Bellinzona, costruendo i più grandi castelli giocattolo in circolazione, cercando attività esistenti di Ora del Codice e quindi sviluppando questa attività in Python sulla piattaforma web PyTamaro.

Luca
Chiodini
Platform
Igor
Moreno
PL Advice
Joey
Bevilacqua
Engineering
Matthias
Hauswirth
Organization

La piattaforma web PyTamaro e la libreria grafica composizionale PyTamaro per Python sono state sviluppate principalmente da Luca Chiodini, uno studente di dottorato del Lugano Computing Education research lab dell'USI. Luca ha insegnato a insegnanti svizzeri delle scuole superiori che avrebbero poi insegnato la programmazione Python nelle loro future classi. Si è reso conto dei vantaggi di una libreria grafica semplice e composizionale, quindi ha implementato PyTamaro. Per supportare gli insegnanti nella loro futura didattica, ha sviluppato la piattaforma web PyTamaro. Questo consente agli studenti di programmare in Python utilizzando PyTamaro direttamente nel browser, in un ambiente simile a un notebook, in cui le istruzioni e il codice vengono combinati in esercizi interattivi.

Didattica

Ecco alcuni suggerimenti didattici per aiutarti a sfruttare al meglio una Ora di Codice:

  • 💡
    Pair Programming

    Questa Ora del Codice può funzionare particolarmente bene in un ambiente di programmazione in coppia (pair programming), in cui due studenti lavorano insieme a un computer. Nella programmazione in coppia, i due studenti di una coppia di solito assumono ruoli diversi: il driver è alla tastiera a scrivere il codice, mentre il navigatore revisiona ogni riga di codice mentre viene digitata. Puoi chiedere agli studenti di scambiarsi i ruoli tra un'attività e l'altra (ma nota che le prime attività non richiedono molta scrittura).

  • 💡
    Piattaforme

    Abbiamo testato questo tutorial sui browser Firefox, Chrome, Safari e Edge e su macOS, Windows, iOS, iPadOS e Android. Sebbene possa essere utilizzato su telefoni cellulari, consigliamo dispositivi con schermi e tastiere più grandi.

  • 💡
    Competenze

    Ogni attività è associata a una o più competenze di programmazione. Ogni volta che uno studente completa un'attività, le competenze che ha appena esercitato vengono aggiunte come "badge" blu nella barra laterale sinistra. Incoraggia i tuoi studenti a fare clic sui badge per leggere le loro descrizioni. Questo li introduce alla terminologia dei concetti di programmazione. Puoi trovare una matrice che allinea attività e competenze qui sotto.

  • 💡
    Misconcezioni

    I tuoi studenti potrebbero avere varie misconcezioni su Python. Per prepararti a riconoscere e affrontare queste misconcezioni, esegui un autocontrollo su Progmiscon.org, un catalogo di misconcezioni dei linguaggi di programmazione basato su ricerca. Questo ti prepara a riconoscere misconcezioni come AssignCompares o OutsideInFunctionNesting.

  • 💡
    Compiti (Task)

    Ogni attività coinvolge uno o più piccoli compiti di programmazione. I compiti sono indicati con 🎯, di solito sopra la cella di codice corrispondente e all'interno del codice con commenti.

  • 💡
    Segnaposto (Placeholder)

    Nel codice, usiamo ... come segnaposto per gli studenti da riempire. Gli studenti devono sostituire il segnaposto con il codice richiesto. Se non sostituiscono un segnaposto, questo porterà a un errore quando eseguono il codice.

  • 💡
    Errori

    Una parte importante dell'apprendimento della programmazione è imparare a capire e correggere gli errori. Se si verifica un errore durante l'esecuzione del codice, l'errore viene mostrato sotto la cella di codice corrispondente. I tipi di errore più comuni sono NameError, SyntaxError, TypeError e ImportError. Nota che il messaggio di errore include il numero di riga (e una copia della riga) in cui si è verificato l'errore. Queste informazioni sono essenziali per trovare e correggere l'errore.

  • 💡
    Bloccato/a? Codice Rovinato?

    Se uno studente rimane bloccato in un'attività, ad esempio perché riceve degli errori che non riesce a risolvere, può riportare (reset) una cella di codice (pulsante con tre puntini verticali in basso a destra) al suo contenuto originale.

  • 💡
    TypeError

    Un TypeError comunemente accade se gli studenti dimenticano di sostituire un ... (detto ellipsis) con il proprio codice. Spesso questo errore si verifica quando visualizza_grafica cerca di mostrare il valore che riceve come argomento, ma quel valore è un ... invece di una Grafica valida. Ciò porta al seguente errore: TypeError: Tipo non valido per il parametro grafica: previsto Grafica, ottenuto ellipsis.

  • 💡
    NameError

    Se gli studenti sbagliano a scrivere un nome (ad esempio, scrivono erlatura_magica invece di merlatura_magica), possono ricevere un NameError. A volte gli studenti introducono NameError perché selezionano il testo da copiare e incollare, ma la loro selezione non include l'intera parola. Sulla base della nostra esperienza, i NameError sono più facili da risolvere per molti studenti.

  • 💡
    SyntaxError

    Se gli studenti modificano la struttura del codice in modo tale che violi la grammatica di Python, ottengono un SyntaxError. Ragioni comuni sono parentesi non corrispondenti, come ((...) o ([...), o virgole mancanti, come muro(viola senza_bordi).

  • 💡
    ImportError

    Se gli studenti modificano una delle istruzioni di import e finiscono per importare un nome che non esiste, riceveranno un ImportError.

Oltre questa Ora del Codice

Questa Ora del Codice può essere un ottimo punto di partenza per una sequenza di lezioni di programmazione in Python. Se intendi continuare con Python nella tua classe, potresti voler usare la libreria grafica PyTamaro che sta alla base di questa Ora del Codice. Se lo fai, prendi in considerazione la possibilit`a di stampare alcune TamaroCards da utilizzare in attività "unplugged" (senza computer).

Contenuto: Programmazione

Composizione di un Castello

Gli studenti compongono castelli da pezzi prefabbricati. Forniamo una funzione per creare ogni pezzo (tetto, merlatura, muro e ponte_levatoio). Forniamo anche due funzioni per comporre liste di pezzi, posizionandoli l'uno sopra l'altro (above_list) o uno accanto all'altro (beside_list). Il castello è composto da diversi pezzi, come muri, merlature e torri. Ogni pezzo è una Grafica. Il castello è composto chiamando funzioni che producono pezzi e poi li compongono. Ad esempio, il castello è composto chiamando la funzione castello, che chiama le funzioni muro, merlatura e torre.

Photo of Castle

Questa attività introduce gli studenti a uno dei concetti fondamentali della programmazione: l'idea di una funzione. Le funzioni sono un modo per organizzare il codice in pezzi riutilizzabili e indipendenti. Una funzione prende alcuni valori e produce un risultato. I valori vengono esplicitamente passati a una funzione come argomenti. Il risultato viene restituito dalla funzione come valore di ritorno.

No Input, No Stato Esterno
Argomenti
Diagramma di una funzione pura
Valore di ritorno
No Output, No Stato Esterno

Una funzione pura comunica esclusivamente attraverso i suoi argomenti e il valore di ritorno. Non legge o scrive alcuno stato al di fuori della funzione e non comunica con il mondo esterno al computer (non riceve input o produce output). Le funzioni pure possono essere comprese in modo isolato, senza dover comprendere nulla del resto del programma.

Questo fornisce un bellissimo approccio alla scomposizione dei problemi: possiamo scomporre un problema in sottoproblemi indipendenti, scomporre quei sottoproblemi in sottoproblemi più piccoli e indipendenti, finché non sono abbastanza piccoli da poterli risolvere direttamente. Grazie alla loro indipendenza, non dobbiamo preoccuparci di altri sottoproblemi mentre ci concentriamo su uno solo.

Diagramma di scomposizione del problema e composizione della soluzione

Le funzioni pure sono un ottimo modo per risolvere sottoproblemi indipendenti. Sono anche ideali per comporre le soluzioni di più sottoproblemi indipendenti in una singola soluzione. Oltre a questo vantaggio didattico, le funzioni pure rendono i programmi più sicuri e semplificano il calcolo distribuito nei moderni data center e supercomputer.

La libreria Python utilizzata per le grafiche in questa attività, PyTamaro, consiste in un piccolo insieme di tali funzioni pure. Alcune di queste funzioni producono una grafica (un pezzo di castello) in base a alcune informazioni (come il suo colore) passate come argomenti. Altre funzioni compongono più pezzi (passati come argomenti) in un castello più grande.

Le funzioni pure in questa attività possono essere viste allo stesso modo delle funzioni in matematica. Semplicemente le nostre funzioni con PyTamaro manipolano grafiche invece che numeri.

La verità dietro ai nostri pezzi prefabbricati

Questo tutorial fornisce funzioni per creare quattro tipi diversi di pezzi prefabbricati: muri, tetti, merlature e ponti levatoi. Ti sei resa/o conto che questi pezzi prefabbricati sono a loro volta composti da parti più piccole? Sono interamente composti da rettangoli, triangoli, ellissi e settori circolari. Qualcuno (gli studenti universitari che hanno sviluppato questa Ora del Codice) ha programmato quelle quattro funzioni prefabbricate, in modo che compongano grafiche primitive nei pezzi prefabbricati utilizzati in questo tutorial. Se vuoi, puoi creare pezzi completamente diversi! Dai un'occhiata al Curriculum di Benvenuto (Welcome Curriculum, momentaneamente solo in inglese) su questo sito web per saperne di più.

Obiettivi di Apprendimento in Programmazione

Ecco le attività e gli obiettivi di apprendimento del curriculum 'Programma Il Tuo Castello':

Emettere OutputDistinguere CommentiPassare ArgomentiInvocare FunzioniRicevere un Valore RestituitoImportare NomiUsare NomiDefinire NomiLetterali Liste
Visualizza un Muro Vuoto
Mostra un'entrata
Visualizza una Merlatura Semplice
Visualizza una Merlatura Magica
Scegli il tuo Muro Preferito
Chiudi il Ponte Levatoio
Crea un Tetto
Crea una Merlatura
Crea un Muro
Costruire una Torre
Costruire una Murata
Programma Il Tuo Castello

Ulteriori informazioni sono disponibili sulla pagina delle informazioni del curriculum.

Ulteriori attività didattiche di programmazione usate nelle scuole superiori svizzere

Se vuoi imparare di più sulla programmazione Python utilizzando l'approccio grafico di PyTamaro, dai un'occhiata alle numerose attività e ai curricula su questo sito web. Sono liberamente disponibili online. Molti sono utilizzati per l'insegnamento della programmazione nelle scuole superiori svizzere. Alcuni sono stati sviluppati dagli insegnanti delle scuole superiori stessi. Ti consigliamo di iniziare con il Curriculum di Benvenuto (Welcome Curriculum, momentaneamente solo in inglese).

Se utilizzi le attività nella tua classe, saremmo molto felici di sentire la tua opinione. Stiamo sviluppando e mantenendo questo sito web come parte della nostra ricerca su come insegnare efficacemente la programmazione. Sentire cosa ha funzionato e cosa non ha funzionato può aiutarci molto!

Contenuto: Storia

Questa Ora del Codice è stata ispirata dai castelli medievali che formano la Fortezza Bellinzona. Mentre la storia del castello più antico, Castelgrande, risale all'Impero Romano, la maggior parte delle fortificazioni è stata costruita nel tardo Medioevo, nei secoli XIV e XV.

Cronologia storica della Fortezza Bellinzona

Puoi saperne di più sul sito web ufficiale della Fortezza Bellinzona. Oppure, se hai la possibilità di visitare il canton Ticino in Svizzera, appena a sud delle Alpi e a nord delle città italiane di Como e Milano, potresti visitare questa fortezza medievale della città svizzera di Bellinzona di persona. È un sito patrimonio dell'umanità dell'UNESCO unico in Europa, composto da tre castelli separati e dalle loro fortificazioni!

Glossario dell'architettura di un castello

Ecco i termini rilevanti per il nostro tutorial con foto scattate ai tre castelli della Fortezza Bellinzona.

Foto di Merlatura
Merlatura

La parte superiore di un muro, tra l'altezza del petto e l'altezza della testa, che contiene una sequenza di merli e caditoie (buchi).

Foto di Muro di cinta
Muro di cinta

Il muro difensivo tra due torri fortificate, spesso sormontato da una merlatura.

Foto di Ponte levatoio
Ponte levatoio

Un ponte mobile solitamente all'ingresso di un castello. La Fortezza Bellinzona è protetta da una sequenza di due ponti levatoi.

Foto di Merlo
Merlo

Parte verticale solida di una merlatura tra due caditoie (buchi). Ci sono molte forme diverse di merlo.

Letteratura sui castelli

J. E. Kaufmann & H. W. Kaufmann; Robert M. Jurga (Illustrator). The Medieval Fortress: Castles, Forts, And Walled Cities Of The Middle Ages. Da Capo Press, 2004. ISBN 978-0-306-81358-0.

David Macaulay. Castle. Clarion Books, 2013. ISBN 978-0-544-10226-2.

Horst Wolfgang Böhme, Reinhard Friedrich, Barbara Schock-Werner (Hrsg.) Wörterbuch der Burgen, Schlösser und Festungen. Heidelberg: arthistoricum.net-ART-Books, 2020.

The Hour of Code ® is an initiative by Code.org to introduce millions of students to one hour of computer science and computer programming, especially during CSEdWeek, the computer science education week that takes place every year during the week of Grace Hopper's birthday (December 9, 1906), a pioneer of computer science who invented the first compiler and coined the term “bug”.
Hour of Code® and Hora del Código® are registered trademarks of Code.org.

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version f9e590c (Sun, 19 May 2024 10:38:32 GMT)