TECHNOLOGIES FOR ADVANCED PROGRAMMING & LABORATORY

Anno accademico 2021/2022 - 3° anno - Curriculum Information Technology
Docenti Crediti: 9
SSD: INF/01 - Informatica
Organizzazione didattica: 225 ore d'impegno totale, 153 di studio individuale, 36 di lezione frontale, 24 di esercitazione, 12 di laboratorio
Semestre:

Obiettivi formativi

  • TECHNOLOGIES FOR ADVANCED PROGRAMMING

    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 vuole presentare le 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.

  • LABORATORY

    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 vuole presentare le 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

  • TECHNOLOGIES FOR ADVANCED PROGRAMMING

    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.

  • LABORATORY

    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

  • TECHNOLOGIES FOR ADVANCED PROGRAMMING

    Nessuno in particolare. PC portatile per esercitazioni.

  • LABORATORY

    Nessuno in particolare. PC portatile per esercitazioni.


Frequenza lezioni

  • TECHNOLOGIES FOR ADVANCED PROGRAMMING

    Obbligatoria

  • LABORATORY

    Obbligatoria


Contenuti del corso

  • TECHNOLOGIES FOR ADVANCED PROGRAMMING
    • 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)
  • LABORATORY
    • 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

  • TECHNOLOGIES FOR ADVANCED PROGRAMMING

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

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

  • LABORATORY

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

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


Programmazione del corso

LABORATORY
 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. 
LABORATORY
 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

  • TECHNOLOGIES FOR ADVANCED PROGRAMMING

    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

  • LABORATORY

    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

  • TECHNOLOGIES FOR ADVANCED PROGRAMMING
    • Ingestion di una base dati provenenti da twitter
    • Learning di un classificatore
    • Definizione di Stream Processing
    • Docker e Kubernetes
  • LABORATORY
    • Ingestion di una base dati provenenti da twitter
    • Learning di un classificatore
    • Definizione di Stream Processing
    • Docker e Kubernetes