Modulo 3
Le AI generative e predittive
Un sistema di intelligenza artificiale generativa viene costruito applicando l’apprendimento automatico non supervisionato o auto-supervisionato a un insieme di dati. Le capacità di un sistema di intelligenza artificiale generativa dipendono dalla modalità o dal tipo di set di dati utilizzato. L’AI predittiva prevede l’uso dell’analisi statistica e dell’apprendimento automatico (Machine Learning) per individuare modelli, anticipare i comportamenti e prevedere gli eventi in programma. Le organizzazioni utilizzano l’AI predittiva per prevedere i potenziali risultati futuri, la causalità, l’esposizione al rischio e altro ancora.

La generazione, in tal senso, può produrre: testo, codice di programmazione, immagini, molecole, musica, video, multimodale e voce.
Esempi di applicazioni:
- Generazione di testi: Sistemi come ChatGPT per creare risposte, racconti o articoli.
- Generazione di codice back e front-end per la creazione di moduli web nei linguaggi più diffusi.
- Immagini: Generazione di immagini realistiche o artistiche, sulla base di spunti forniti dall’utente.
- Musica: Creazione di melodie o brani originali.
- Design: Creazione di design personalizzati per prodotti, interfacce o arte.
- Video: Produzione di video realistici o animazioni.



Integrare e rielaborare contenuti digitali – IoT

1. Lego Mindstorms
- Descrizione: Una piattaforma di robotica educativa sviluppata da LEGO. Combina mattoncini LEGO con sensori, motori e un’unità centrale programmabile.
- Applicazioni: Ideale per insegnare programmazione e robotica a bambini e ragazzi.
- Versioni popolari: RCX, NXT, EV3 e il più recente Robot Inventor Kit.
- EV3: Parte della linea Lego Mindstorms, l’EV3 è un’unità programmabile avanzata.
- Differenze: Rispetto a NXT, ha un processore più potente, un’interfaccia migliore e maggiori possibilità di espansione.
- Applicazioni: Robot complessi e competizioni come la FIRST LEGO League.
2. Micro:bit

- Descrizione: Un microcontrollore progettato per l’educazione. È semplice da usare e dotato di sensori integrati come accelerometro, magnetometro e LED.
- Linguaggi di programmazione: Scratch, Python, JavaScript.
- Applicazioni: Perfetto per progetti semplici e per introdurre i bambini al coding.
3. Raspberry Pi

- Descrizione: Un computer su scheda singola (SBC) economico, sviluppato per scopi educativi.
- Caratteristiche: Supporta sistemi operativi Linux, ha porte GPIO per il controllo di dispositivi elettronici.
- Applicazioni: Automazione, IoT, progetti di intelligenza artificiale, media center e molto altro.
5. Arduino

- Descrizione: Una piattaforma open-source per l’elettronica basata su microcontrollori programmabili creata nel 2005.
- Componenti principali: Schede Arduino Uno, Nano, Mega, ecc.
- Linguaggi: Programmazione C/C++.
- Applicazioni: Prototipazione, domotica, IoT, controllo di sensori e motori.
6. ROS (Robot Operating System)

- Descrizione: Un framework open-source per sviluppare software per robot complessi. Non è un sistema operativo, ma un insieme di strumenti, librerie e convenzioni.
- Caratteristiche: Offre supporto per sensori avanzati, simulazioni e moduli di intelligenza artificiale.
- Applicazioni: Utilizzato in progetti di robotica avanzata, inclusi robot industriali e autonomi.
Copyright e licenze

Il copyright e le licenze Creative Commons (CC) sono strumenti legali importanti per proteggere e regolare l’uso delle opere creative. Ecco una panoramica:
Copyright
- Cos’è: È il diritto legale esclusivo che un autore ha sulla sua opera creativa. Protegge lavori come testi, immagini, musica, video, software, ecc.
- Diritti dell’autore: Include il diritto di riprodurre, distribuire, eseguire pubblicamente e creare opere derivate.
- Durata: Generalmente dura tutta la vita dell’autore più un certo numero di anni (spesso 70 anni dopo la morte).
- Eccezioni: Uso equo (fair use) o libero utilizzo (come per scopi educativi o parodia, ma varia da paese a paese).
Licenze Creative Commons
Le licenze Creative Commons sono un’alternativa flessibile al copyright tradizionale. Consentono agli autori di mantenere il copyright, ma di concedere alcuni diritti agli utenti.
Principali tipi di licenze CC
- CC BY (Attribuzione)
- Permette di usare, modificare e distribuire l’opera anche per scopi commerciali, purché si attribuisca l’autore.
- CC BY-SA (Attribuzione – Condividi allo stesso modo)
- Come CC BY, ma le opere derivate devono essere distribuite con la stessa licenza.
- CC BY-ND (Attribuzione – Non opere derivate)
- Permette l’uso dell’opera, anche commerciale, ma non consente modifiche.
- CC BY-NC (Attribuzione – Non commerciale)
- Permette l’uso e la modifica, ma solo per scopi non commerciali.
- CC BY-NC-SA (Attribuzione – Non commerciale – Condividi allo stesso modo)
- Come CC BY-NC, ma le opere derivate devono avere la stessa licenza.
- CC BY-NC-ND (Attribuzione – Non commerciale – Non opere derivate)
- La più restrittiva: consente di condividere l’opera senza modificarla o usarla per fini commerciali.
Differenze principali
- Copyright tradizionale: “Tutti i diritti riservati.” Devi chiedere il permesso per ogni utilizzo.
- Creative Commons: “Alcuni diritti riservati.” L’autore decide quali diritti concedere agli altri.
Programmazione
Classificazione degli algoritmi

- In base al tipo di problema:
- Ordinamento (Sorting): Algoritmi per organizzare i dati (es. Bubble Sort, Merge Sort, Quick Sort).
- Ricerca (Searching): Algoritmi per trovare elementi in strutture di dati (es. Ricerca binaria, Ricerca lineare).
- Ottimizzazione: Algoritmi che trovano la soluzione migliore tra molte possibili (es. Algoritmo di Dijkstra per i percorsi più brevi).
- Ricognizione: Algoritmi per esplorare e identificare pattern o dati (es. Algoritmi di clustering come k-means).
- In base al metodo di progettazione:
- Divide et Impera: Divide il problema in sottoproblemi più semplici (es. Merge Sort).
- Greedy: Fa scelte locali ottimali per trovare la soluzione globale (es. Algoritmo Prim per i grafi).
- Programmazione Dinamica: Risolve problemi complessi dividendo il problema in sottoproblemi sovrapposti (es. Algoritmo di Floyd-Warshall).
- Backtracking: Cerca soluzioni esplorando tutte le possibili opzioni, tornando indietro se necessario (es. Risoluzione del Sudoku).
- Randomizzazione: Usa la casualità per trovare soluzioni approssimative o rapide (es. QuickSort Randomizzato).
Esempi di algoritmi comuni
1. Ordinamento (Sorting)
- Bubble Sort: Scambio ripetuto di elementi adiacenti.
- Merge Sort: Divide la lista in sotto-liste, le ordina e le combina.
- Quick Sort: Sceglie un elemento pivot e divide i dati in base al pivot.
2. Ricerca (Searching)
- Ricerca Lineare: Controlla ogni elemento.
- Ricerca Binaria: Efficiente per dati ordinati, divide a metà il range a ogni passo.
I linguaggi alla base del web

