Idee per progetti degli studenti

Da aptiva.

Mettiamo qui le nostre idee.

Indice

Progetto di Michael Lodi

La pagina del mio progetto: Snap!py

Ispirazioni

La programmazione a blocchi si sta diffondendo sempre più, basti pensare al successo di Scratch. Sebbene in molti ritengono che sia adatto per ragazzi delle elementari e medie (alias for "Primaria e Secondaria di primo grado", da qui in poi), viene utilizzato da molte università americane per i loro corsi introduttivi all'informatica e al pensiero computazionale.

Inoltre c'è qualcuno che ritiene che i veri programmatori usino i blocchi, e ha provato a dimostrarlo. (E lo pensa anche un giovane coder, anche se forse un po' troppo orientato *solo* alla pratica)

Alla "University of California, Berkeley" è stato sviluppato un corso di introduzione all'Informatica per scuole superiori (Advanced Placement...) e corsi universitari non informatici, dal titolo Beauty and Joy of Computing (tra l'altro: licenza Creative Commons).

Il corso prevede due parti:

  • una parte sul pensiero computazionale, concetti fondamentali dell'informatica e la programmazione,
  • una sulle implicazioni sociali dell'informatica.

Mi piacerebbe analizzare il corso e vedere come sia possibile integrare i concetti e i principi presenti nei programmi di Informatica della scuola superiore (va beh, "secondaria di secondo grado") italiana.

La prima parte fa uso di Snap!, linguaggio a blocchi ispirato a Scratch, ma con molte più funzionalità e caratteristiche adatte agli scopi.

Caratteristiche di Snap! utili alla scuola superiore

  • Presenza dei tipi di dato, in particolare delle liste (first class), da cui poter costruire altre strutture quali alberi.
  • Possibilità di costruire i propri blocchi (funzioni, con piena libertà sul tipo dei parametri)
  • Possibilità di creare ed esportare librerie di blocchi
  • Presenza di blocchi più "tradizionali" come il "for i=1 to ..." (con i come variable locale al for)
  • Possibilità di creare variabili globali o locali
  • Possibilità di leggere il codice di una pagina web esterna in una lista
  • Presenza di estensioni per hardware quali Arduino, Lego Mindstorms, LeapMotion etc.
  • Idea di ereditarietà tra oggetti (ovvero "sprite di sprite")
  • Scritto completamente in HTML5/Javascript (linguaggi spesso studiati a scuola, eseguibile sulla maggior parte dei browser in sandbox)
  • Licenza AGPL
  • La "versione 2015" del corso ha una parte finale dedicata al passaggio da Snap! a Python

Altre caratteristiche interessanti

  • Possibilità di usare stile di programmazione funzionale (con lamba astrazione), oltre che quello imeprativo-oggetti-eventi.
  • Possibilità di usare Continuation Passing Style (decisamente troppo per la scuola superiore)
  • Possibilità di scrivere con i blocchi un compilatore da Snap! ad altri linguaggi (compilatore verso Javascript e altri già presenti, ma non li trovo).

Contro

  • I troppi stili possono confondere, c'è bisogno di esempi ed esercizi con cui guidare lo studente a non perdersi nelle troppe funzionalità
  • Ancora un po' di bug

"Beauty and Joy", perché nel corso vengono mostrate applicazioni belle e interessanti dell'informatica che hanno cambiato il mondo, con focus sullo studente e la società. Il progetto finale riguarda un tema scelto dallo studente.

Il libro di testo (Blown To Bits, in CreativeCommons) di questa seconda parte parla delle implicazioni sociali dell'informatica.

Possibili approfondimenti sul tema:

Proposta di Savino Bisconti (Alberi)

La struttura dati albero

Le sue realizzazioni

Alberi binari

Algoritmi di visita in profondità e in ampiezza

Progetto di Francesco Denaro

Liste, pile e code

Questa unità didattica è destinata ad una terza di un istituto tecnico indirizzo informatico.

L’unità didattica incentra i suoi contenuti nella comprensione dei concetti di liste, pile e code. Vuole quindi offrire una presentazione alle strutture astratte lineari.
I concetti/contenuti che si vogliono spiegare sono:

Caratteristiche delle strutture lineari

  • Concetto di elemento all’interno di una struttura lineare
  • Concetto di lista (indipendente dal linguaggio di programmazione utilizzato)
  • Concetto di pila (indipendente dal linguaggio di programmazione utilizzato)
  • Concetto di coda (indipendente dal linguaggio di programmazione utilizzato)
  • Possibili operazioni sulle strutture lineari
  • Possibili applicazioni reali delle strutture in esame
  • Esempi di utilizzo delle strutture in diversi linguaggi di programmazione, per esempio Python e C.


Il percorso verrà suddiviso in tre principali aree che riguarderanno i tre principali argomenti, cioè:

  • Le strutture astratte lineari e le Liste
  • Pile
  • Code


Alcuni esempi di strutture lineari nella vita di tutti i giorni possono essere:

  • Lista della spesa
  • Coda al supermercato (FIFO)
  • Pila: Binario terminale dove vengono inseriti e prelevati vagoni (LIFO)


Scaletta:

  1. Introduzione
  2. Strutture lineari e liste
    • Operazioni sulle liste
    • Esempi di implementazioni in differenti linguaggi (Python, C/C++)
    • I vantaggi delle differenti implementazioni
  3. Pila (Stack)
    • Operazioni
    • Esempi
  4. Code (Queue)
    • Operazioni
    • Esempi


Work in Progress

Progetto di Salvatore Parlato

Algoritmi di ordinamento e ricerca

pagina del progetto


Progetto di Fabrizio

ADT e Python: Liste, Set

Uno sguardo alle strutture dati astratte da un linguaggio di alto livello. Tralasciando l'implementazione mi soffermerei sull'utilizzo e le differenze.

 1- Introduzione, astrazione e modellazione, obiettivi
 2- Parole chiave e contenuti essenziali
 3- Insiemi
    3.1 Elementi di teoria degli insiemi
    3.2 Operazioni fondamentali (unione, intersezione, differenza)
    3.3 (Approfondimento) Relazione d'ordine
    3.4 Prototipo di interfaccia
    3.5 Rappresentazione in Python
    3.6 Operazioni
 4- Liste
    4.1 Strutture dinamiche
    4.2 Interfaccia: liste che sembrano vettori
    4.3 Operazioni
    4.4 Esercitazioni*
    4.5 Liste Vs Set confronto
 6- Riferimenti
 esercitazioni: analisi di testi di canzoni, parole in comune, mix di testi con ADT studiate

Proposta di progetto di Samuele Cattabriga

Compiere scelte, ripetere azioni

Storia, scelte, azioni

Proposta di progetto di Simone Riccucci

Programmare con gli oggetti

Con questo progetto si vuole proporre un'unità didattica di introduzione alla programmazione ad oggetti basata sull'utilizzo di Alice Programmazione orientata agli oggetti

Proposta di progetto di Riccardo Pecori: Algoritmi Bellman-Ford e Shortest Path First

Scaletta

Unità didattica sugli algoritmi Bellman-Fors e SPF. Questo argomento può risultare accattivante motrando esempi di utilizzo nella realtà ( i protocolli di routing che si basano su questi due algoritmi) ed attuando tecniche di teatralizzazione. Scaletta degli interventi didattici:

  • Algoritmo Algoritmo di Bellman-Ford o Distance Vector.
  • Teatralizzazione del DV con alcuni componenti della classe che svolgono la funzione di routers inconsapevoli e si dispongono nell'aula e si scambiano messaggi di aggiornamento dei cammini minimi. Ogni studente/router aggiorna, alla ricezione di un messaggio e se necessario, la propria tabella dei cammini minimi scritta su un foglio. Alla fine viene mostrato il foglio agli altri studenti.
  • Verifica dei possibili errori con correzione da parte degli altri studenti
  • Esempio: Update delle tabelle di routing tra routers
  • Algoritmo OSPF
  • Similitudini e differenze
  • Esempi: Protocolli di routing che usano un algoritmo piuttosto che un altro.

Prerequisiti

  • Conoscenza del concetto di algoritmo;
  • conoscenza della simbologia dei grafi: nodi e vertici;
  • conoscenza di uno pseudocodice;
  • Conoscenza dei costrutti di iterazione, sequenza e selezione.

Obiettivi

  • elementari: memorizzare il funzionamento ed i passaggi rincipali degli algoritmi Bellman-Ford e SPF ;
  • intermedi: descrivere il funzionamento degli algoritmi Bellma-Ford e SPF;
  • superiori: Analizzare un protocollo di routing e capire quale dei due algoritmi presentati implementa.

Progetto di Raoul Gioia

Architettura dei Sistemi di Elaborazione

Progetto di Elena Polastri

Le funzioni nella programmazione imperativa

pagina del progetto


Progetto di Andrea Paolini

Introduzione agli Algoritmi.

Collegamento alla scheda dell'Unità Didattica in Google-Drive:| [1]


Progetto di Matteo Montani

Utilizzo di raspberry pi per stimolare il pensiero creativo

Il progetto propone un'attività didattica proposta per l'area di progetto Raspberry pi e il pensiero creativo

Progetto di Danilo Santoro

Il linguaggio Javascript

pagina del progetto

U.D. Javascript

1 Premessa
2 Introduzione ai linguaggi
 2.1	I linguaggi per il web
 2.2	Cos’è Javascript, quali applicazioni?
  2.2.1 La genesi
 2.3	Perché studiare JavaScript?
 2.4	Quali punti deboli?
 2.5	Scripting e programmazione
 2.6	Cosa non si può fare con JavaScript
 2.7	Ricorda: non è Java! Differenza tra java e Javascript
3 Caratteristiche principali di Javascript
 3.1	Tipi di dato
 3.2	Le variabili loosely typed e scope
 3.3	Tipizzazione dinamica: Duck Typing
 3.4	Istruzioni e strutture di controllo	
 3.5	Operatori: “buoni" vs "cattivi”
 3.6	Funzioni e chiusure
 3.7	Object base vs object oriented
4 Programmazione Web
 4.1	JavaScript, quali applicazioni nelle pagine WEB?
 4.2	Tools e ambiente di sviluppo JS
  4.2.1	Add-on FireBug
 4.3	Inserire uno script in un documento HTML
 4.4	Gestione degli eventi
 4.5	Oggetti Js nei Browser
5 Interprete JavaScript
 5.1	Rhino
6 Divertiamoci con Javascript
 6.1	Tutorial JavaScript
  6.1.1	Codecademy: Learn to Code interactively, for free
  6.1.2	Code School: Learn by Doing
  6.1.3	Mozilla Developer Network
 6.2	Realizzare giochi in Javascript
  6.2.1	Codecombat: impara a Giocare programmando
  6.2.2	CreateJS - una suite per i tuoi giochi in HTML5 e JavaScript
  6.2.3	LimeJS: il framework in Pyton per creare giochi in HTML5 per tutti i device
7 Bibliografia


Progetto di MrC

Unità Didattica: Introduzione alla Sicurezza Informatica

Per il progetto si è pensato di focalizzarsi sulla SU 3 dell'UD in questione.
Di seguito si riporta un estratto delle considerazioni iniziali proposte nell'UD.

Disciplina di riferimento: La disciplina di riferimento dell'unità didattica proposta è Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione (TEPSIT) - istituto tecnico settore tecnologico, indirizzo Informatica. Le ore a disposizione per questa materia alla settimana sono tre, di cui una in classe e due in laboratorio di informatica. Si precisa che l'ora scolastica in vigore è da 50 minuti.

Laboratorio utilizzato: Le due ore di laboratorio sono svolte nel laboratorio informatico. I PC hanno sistema operativo GNU/Linux (attualmente Ubuntu 14.04.2 LTS) e ambiente desktop Gnome, aggiornato regolarmente; inoltre dispongono di numerosi strumenti software preinstallati (Es. NetCat, VirtualBox, Marionnet, ...) e su richiesta possono essere installati dal personale ATA software liberi presenti sui repository ufficiali. [...]

Contenuto: L'obiettivo principale dell'unità didattica è quello fornire un quadro d'insieme finalizzato alla comprensione del problema della sicurezza informatica. Inoltre, si punterà a trasmettere e a far comprendere le informazioni ed i concetti utili per iniziare ad indagare ed identificare in autonomia gli aspetti più disparati ed avanzati, sia in ambito aziendale che personale, riguardo la sicurezza informatica, la sicurezza delle informazioni e la protezione dei sistemi informativi.

Obiettivi:

Obiettivi elementari (OE) (memorizzazione, automatismi cognitivi, operazioni)
[...]
Obiettivi intermedi (OI) (comprensione, applicazione)
[...]
Obiettivi superiori convergenti (OSC) (analisi, sintesi)
[...]
Obiettivi superiori divergenti (OSD) (intuizione, invenzione)
[...]

Percorso didattico:

Considerando la complessità e la vastità dell'argomento, il quale solitamente è introdotto nel secondo quadrimestre delle classi V, e che richiede una base solida di numerosi ed avanzati aspetti sui sistemi informativi ed in particolare sui sistemi informatici, in questo percorso didattico si privilegerà la comprensione ad alto livello degli argomenti, e si procederà suddividendo l'unità didattica in quattro sotto-unità didattiche (SU):

1. Introduzione e standard per la sicurezza
Tempo complessivo previsto: 1 ora.
Lezioni, numero: 1 tipologia: prevalentemente dialogico, frontale.
Riferimento agli obiettivi: [...]
Eventuale recupero: da mezz'ora ad un'ora e mezzo, ulteriore lezione.

2. Introduzione alla crittologia
Tempo complessivo previsto: 2 ore.
Lezioni, numero: 1 tipologia: frontale, dialogica, attività in laboratorio, lavoro di gruppo.
Riferimento agli obiettivi: [...]
Eventuale recupero: lezione successiva, domande ed approfondimenti come compito a casa da presentare al docente.

Verifica formativa e correzione
Tempo complessivo previsto: 1 ora.
Tipologia: scritta.
Riferimento alle SU 1 e 2.

3. Protocolli per la sicurezza
Tempo complessivo richiesto: 4 ore
Lezioni, numero: 2 tipologia:
Riferimento agli obiettivi: [...]
Multidisciplinarità: eventuale collaborazione con Inglese e Matematica.
Eventuale recupero: lezione successiva, domande ed approfondimenti come compito a casa da presentare al docente.

4. Aspetti avanzati di sicurezza
Tempo complessivo richiesto: 1 ora
Numero lezioni: 1
Riferimento agli obiettivi: [...]

[... SU 1,2 ... ]

SottoUnità Didattica 3 (SU 3 – 3 ore)

Lezione 1 (2 ore):
Accoglienza: dialogo con la classe, eventuale appello e attività sul registro.
Note: 5 minuti
Ripasso sugli aspetti principali delle lezioni precedenti, in base all'andamento della verifica formativa, mediante domande dirette agli alunni ed eventuali chiarimenti e precisazioni del docente.
Note: 10-15 minuti.

Esperimento 3
Dal momento che gli alunni hanno visualizzato alcune semplici tecniche di crittografia facilmente applicabili, ma “difficilmente” decifrabili, si ripete l'esperimento 1, ma in questo caso gli studenti non possono preventivamente consultarsi per decidere algoritmo e/o chiave da utilizzare.
Questo esperimento introduce il discorso della cifratura a chiave simmetrica e asimmetrica
Tempo previsto: meno di 5 minuti
Introduzione al protocollo Diffie-Hellman per la creazione di un segreto condiviso.
Note: 3 minuti circa, utilizzo di video scaricati dalla rete in Inglese con sottotitoli in Italiano - solo parte iniziale “sui colori”:

 (Originale in lingua Inglese) https://www.youtube.com/watch?v=YEBfamv-_do
 (versione con sottotitoli in Italiano) https://www.youtube.com/watch?v=pYlQovEpOzk
 (By Numberphile, www.numberphile.com)
 Note:  Nel video con sottotitoli in italiano:
 - la voce in inglese dice 42 al posto di 46, mentre sia nei sottotitoli e nel testo c'è scritto correttamente 46;
 - c'è un errore sostanziale in quello che dice, ovvero che prende un numero primo (17) e sceglie 3 perché "non ha fattori in comune",
    ma tutti i numeri non hanno fattori in comune con un numero primo.
    Nella versione completa inglese hanno corretto entrambi gli errori, ed anche il calcolo finale è spiegato meglio.

Applicazione pratica di quanto visto nel video:
l'insegnante valuta come dividere opportunamente la classe in 3 gruppi e nominare dei capo gruppo (candidatura, votazione, nomina, …)
l'insegnante (e l'ITP) guidano la preparazione da parte dei 3 capo gruppo di 3 tavolozze con colori a tempera (es. 5 colori nelle stesse quantità)

Diffie.png

gruppo 1 e 3 scelgono un colore comune tra i 5 della tavolozza
gruppo 2 acquisisce l'informazione
gruppo 1 e 3 scelgono 1 colore a testa senza farlo vedere agli altri (spremono il tubetto e preparano 2 quantitativi uguali e separati di colore sulla tavolozza)
il colore segreto viene mescolato con quello iniziale
gruppo 1 e gruppo 3 dividono i colori mescolati in due parti uguali, se li scambiano e danno l'altra parte a gruppo 2
gruppo 1 e gruppo 3 aggiungono il loro colore segreto al colore ricevuto

(N.B. se non si dispone, o non si vuole provare ad utilizzare gruppi e/o tempere sono disponibili strumenti online quali ed esempio http://trycolors.com )
Durata dell'esperimento dai 15 ai 45 minuti circa (prevedere eventuale materiale, acqua, pause per recarsi in bagno, etc..).

Si prosegue con la seconda parte del video, che introduce lo scambio numerico e il problema del logaritmo discreto.
Note: 3 minuti circa; il video presenta alcuni errori e/o imprecisioni, ma la versione aggiornata e corretta non ha i sottotitoli in Italiano.
Approfondimento ed esempio alla lavagna dello scambio numerico.
Note: 5 minuti, più il tempo stimato per le domande (5-10 minuti).


Introduzione alla crittografia asimmetrica (RSA), mediante visualizzazione di un video:

 Video su RSA (in Lingua Inglese) https://www.youtube.com/watch?v=wXB-V_Keiu8
 Khan Academy – Brit Cruise - www.khanacademy.org
 Note: 5 minuti circa. Il video nella seconda parte è molto complesso, ma nella prima parte è utile per far comprendere le differenze con gli altri protocolli/metodi.
 Si richiede che l'insegnante sia capace di tradurre il video dall'Inglese in Italiano, su richiesta degli studenti.
 Questa attività potrebbe altresì essere multidisciplinare ed essere concordata sia con le ore di Inglese che con quelle di Matematica.


Lezione 2 (2 ore):
Ripasso sugli aspetti principali delle lezioni precedenti (20-25 minuti, domande dirette agli alunni ed eventuali chiarimenti e precisazioni del docente).

Introduzione alla firma digitale e alle Certification Authority, mediante lezione frontale con slides, ed alcuni brevi riferimenti e/o esempi sul PC del docente come ad esempio la visualizzazione firme e certificati all'interno di documenti e di un browser web.
Note: 15 minuti circa.

Esercizio pratico di creazione di un certificato (con Openssl) da parte dei singoli studenti; utilizzo del certificato per firmare un documento; auto-firma.
Note: 15 minuti circa; l'ITP aiuta il docente con la parte pratica.

Introduzione ai protocolli CHAP, EAP, WPA2, RADIUS e Kerberos, mediante lezione frontale con slides.
Note: 15-20 minuti circa.

Introduzione ai protocolli IPsec, SSL/TLS, HTTPS e gestione dei certificati, mediante lezione frontale con slides ed alcune brevi parti pratiche in laboratorio o dimostrazioni (PC docente), come ad esempio l'utilizzo di un certificato auto firmato in Apache al fine di consentire connessioni HTTPS.
Note: durata 25-35 minuti circa. L'ITP aiuta il docente con le dimostrazioni e con le parti pratiche. Gli ultimi 10-15 minuti finali di laboratorio sono in autonomia con docente ed ITP a disposizione degli studenti;

[... altre SU ...]

Strumenti personali
Namespace

Varianti
Azioni
Navigazione
Strumenti