TECHNOLOGIES FOR ADVANCED PROGRAMMING

Anno accademico 2022/2023 - Docente: SALVATORE NICOTRA

Risultati di apprendimento attesi

Obiettivo dell'insegnamento è fornire una generale comprensione dell’utilizzo di tecnologie avanzate utili a definire soluzioni end-to-end di analisi, gestione ed elaborazione dati in real time.

Attraverso l’utilizzo di strumenti di automatizzazione del deployment di applicazioni (docker) e di orchestrazione di processi (kubernetes), il corso introduce la modalità di ricerca e di adozione di tecnologie “on the edge” per l’analisi di ingestion di dati in tempo reale, tecniche di data pipelines, strumenti di data processing e analisi e data visualization.

Il percorso formativo porterà gli studenti a migliorare le conoscenze e le capacità di comprensione (knowledge and understanding) delle principali metodologie (best practice) del settore delle tecnologie e i framework dall’analisi digitali.

Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze necessarie per approntare e redigere un rapporto tecnico, scegliendo gli apparati più opportuni, realizzando un piano di lavoro e redigendo una opportuna relazione tecnica.

Autonomia di giudizio (making judgements): Attraverso esempi concreti derivanti da "comuni errori" nell'analisi e nel preprocessing dei dati, lo studente sarà in grado di elaborare autonomamente soluzioni e ovviare alle principali difficcoltà

Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e di appropriatezza espressiva nell'impiego del linguaggio tecnico nell'ambito.

Capacità di apprendimento (learning skills): il corso si propone, come obiettivo, di fornire allo studente le necessarie metodologie teoriche e pratiche per poter affrontare e risolvere autonomamente nuove problematiche che dovessero sorgere durante una attività lavorativa. A tale scopo diversi argomenti saranno trattati a lezione coinvolgendo lo studente nella ricerca di possibili soluzioni a problemi reali.

Modalità di svolgimento dell'insegnamento

Lezioni Frontali con l’ausilio di PC per esercitazioni interattive.

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.

Prerequisiti richiesti

Nessuno in particolare.  PC portatile per esercitazioni.

Frequenza lezioni

Obbligatoria

Contenuti del corso

  • Nozioni di Stream Processing
  • Concetti di Digital Marketing
  • Introduzione a Docker e Kubernetes
  • Data Ingestion (Logstash, Fluentd)
  • Data Streaming (Apache Kafka)
  • Data Processing (Spark)
  • Fondamenti di Machine Learning e classificazione
  • Data Indexing and Query (Elastic Search)
  • Data Visualization (Grafana/Metabase)

Testi di riferimento

1. Slides e manuali di riferimento  dei relativi framework utilizzati durante il corso.

2. Github Organization https://github.com/tapunict/

Programmazione del corso

 ArgomentiRiferimenti testi
1Data IngestionSlides e manuali di riferimento dei relativi framework utilizzati durante il corso.
2Data ProcessingSlides e manuali di riferimento dei relativi framework utilizzati durante il corso.
3Data VisualizationSlides e manuali di riferimento dei relativi framework utilizzati durante il corso.
4ProgettiRepository di codice su github a supporto.

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

Installation Day per l’installazione delle componenti utilizzate nel corso

Progetto finale di implementazione di architettura software sulla base dei contenuti del corso su una base di dati concordata.

In sede di esame gli studenti dovranno:

  • Descrivere il design della soluzione tramite presentazione
  • Effettuare una demo live
  • Rispondere ad eventuali domande sulle componenti utilizzate

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere

Esempi di domande e/o esercizi frequenti

  • Ingestion di una base dati provenenti da twitter
  • Learning di un classificatore
  • Definizione di Stream Processing
  • Docker e Kubernetes