Course Syllabus
Obiettivi
Il corso ha come scopo principale quello di fornire allo studente una solida e fondativa conoscenza delle principali soluzioni tecnologiche e metodologie di sviluppo software a supporto della data science. Le esercitazioni forniranno allo studente le competenze di base necessarie per interagire con tali strumenti.
Contenuti sintetici
Il corso è costituito dai seguenti moduli:
Modulo 1 - Infrastruttura: Introduzione alla virtualizzazione, Cloud Computing e Containerization
Modulo 2 - Piattaforma: Organizzazione e distribuzione dei dati, Data Lake, HDFS, YARN
Modulo 3 - Processamento: Batch vs Streaming vs Messaging, i casi di Hadoop, Spark, Storm, Kafka
Modulo 4 - Sviluppo software: Waterfall, Agile, DevOps, DataOps, MLOps
Programma esteso
Argomenti del corso divisi per moduli:
Modulo 1 - Infrastruttura:
- La figura del data engineer
- L'architettura di riferimento
- Virtualizzazione
- Cloud Computing (Introduzione, Modelli di servizio e di deployment, cararatteristiche essenziali)
- Containerization con Docker
- Serverless
Modulo 2 - Piattaforma:
- Il Data Lake
- HDFS e YARN
Modulo 3 - Processamento:
- Batch processing (Apache Hadoop e Apache Spark)
- Stream processing (Apache Storm, Apache Spark e Apache Flink)
- Messaging (Apache Kafka)
Modulo 4 - Sviluppo Software:
- Service computing
- Software engineering
- Metodologie di sviluppo (Waterfall, Agile, DevOps, DataOps, MLOps)
Prerequisiti
Conoscenza basilare dell'architettura di un computer (CPU, RAM, Storage), Sistemi operativi, della Shell dei comandi, del linguaggio di programmazione Python e Jupyter.
Modalità didattica
Insegnamento con differenti modalità didattiche:
- 15 lezioni da 2 e 3 ore svolte in modalità interattiva in presenza; In tale modalità comunque il docente coinvolgerà gli studenti per mezzo di domande e spunti.
- 6 laboratori da 3 ore svolti in presenza - modalità interattiva.
Il corso verrà erogato in lingua inglese
Materiale didattico
Dispense e slide del corso fornite dai docenti.
Si segnalano i seguenti testi per approfondimento:
- The basics of cloud computing ISBN-13: 978-0124059320 Autori: Derrick Rountree, Ileana Castrillo
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems ISBN-13: 978-1449373320 Autore: Martin Kleppmann
Periodo di erogazione dell'insegnamento
Secondo anno, primo semestre
Modalità di verifica del profitto e valutazione
La valutazione è costituita da due parti: una prova scritta e una discussione orale su un argomento di approfondimento.
La prova scritta consiste in domande aperte e chiuse sugli argomenti del corso. Questa ha una durata di circa un'ora ed un punteggio massimo di 17 punti.
Una tipica prova scritta comprende 12-13 domande a scelta multipla e 2-3 domande a risposta aperta, per le quali si hanno a disposizione dai 60 ai 75 minuti.
La prova orale consiste nella discussione di una tematica non trattata durante il corso o di un approfondimento di una tematica trattata. Il lavoro di approfondimento (lavoro ricerca e creazione delle slide) potrà essere realizzato in gruppi di massimo 3 persone ma la discussione e la valutazione sono personali.
L'argomento dell'approfondimento deve essere previamente accordato con il professore. La prova orale dà diritto ad un massimo di 15 punti.
Una volta che lo studente avrà svolto entrambe le prove, l'esame si considererà superato se si verificheranno entrambe queste condizioni:
- per entrambe le parti lo studente avrà ottenuto più di (o uguale a) 7 punti
- la somma dei punti delle due parti sarà maggiore o uguale a 18
In tal caso potrà essere registrato un voto costituito dalla somme dei punti.
Non è prevista l'erogazione di prove parziali durante il corso.
Orario di ricevimento
Martedì 12:30-14:30, chiedere conferma per email
Sustainable Development Goals
Aims
The main purpose of the course is to provide the student with a solid, foundational understanding of the main technology solutions and software development methodologies in support of data science.
Hands-on sessions will provide the student with the basic skills needed to interact with such tools.
Contents
The course comprises the following modules:
Module 1 - Infrastructure: Introduction to Virtualization, Cloud Computing and Containerization.
Module 2 - Platform: Data organization and distribution, Data Lake, HDFS, YARN
Module 3 - Processing: Batch vs. Streaming vs. Messaging, the cases of Hadoop, Spark, Storm, Kafka
Module 4 - Software Development: Waterfall, Agile, DevOps, DataOps, MLOps
Detailed program
Course topics divided by modules:
Module 1 - Infrastructure:
- The figure of the data engineer
- The reference architecture
- Virtualization
- Cloud Computing (Introduction, Service and deployment models, essential features)
- Containerization with Docker
- Serverless
Module 2 - Platform:
- The Data Lake
- HDFS and YARN
Module 3 - Processing:
- Batch processing (Apache Hadoop and Apache Spark).
- Stream processing (Apache Storm, Apache Spark, and Apache Flink)
- Messaging (Apache Kafka)
Module 4 - Software Development:
- Service computing
- Software engineering
- Development methodologies (Waterfall, Agile, DevOps, DataOps, MLOps)
Prerequisites
Basic knowledge of computer architecture (CPU, RAM, storage), operating systems, command shell, Python programming language and Jupyter notebooks.
Teaching form
Teaching with different teaching modes:
- 15 lectures of 2 and 3 hours in interactive mode in the presence of the teacher, but with the participation of the students through questions and hints.
- 6 laboratories of 3 hours each delivered in the classroom - interactive mode.
The course will be taught in English.
Textbook and teaching resource
Lecture notes and slide decks.
The following textbooks are referenced for further study:
- The basics of cloud computing ISBN-13: 978-0124059320 Authors: Derrick Rountree, Ileana Castrillo
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems ISBN-13: 978-1449373320 Author: Martin Kleppmann
Semester
Second year, first semester
Assessment method
The assessment consists of two parts: a written test and an oral discussion on an in-depth topic.
The written test consists of open and closed questions on the course topics. This has a duration of about one hour and a maximum score of 17 points.
A typical written exam consists of 12-13 multiple-choice questions and 2-3 open-ended questions, and you have 60-75 minutes to complete them.
The oral test consists of a discussion of a topic not covered in the course or an in-depth study of a topic covered in the course. The deepening work (research work and slide creation) can be done in groups of up to 3 people but the discussion and evaluation are personal.
The topic of the deepening must be agreed in advance with the lecturer. The oral test entitles the student to a maximum of 15 points.
Once the student has taken both tests, the exam will be considered passed if both of these conditions are met:
- for both parts the student has scored more than (or equal to) 7 points
- the sum of the points for the two parts is greater than or equal to 18
In that case a grade consisting of the sum of the points can be registered.
No partial examination will be issued during the course.
Office hours
Tuesday 12:30-14:30 ask for email confirmation
Sustainable Development Goals
Key information
Staff
-
Michele Ciavotta
-
Vincenzo Cutrona