Skip to main content
If you continue browsing this website, you agree to our policies:
  • Condizioni di utilizzo e trattamento dei dati
Continue
x
e-Learning - UNIMIB
  • Home
  • My Media
  • More
Listen to this page using ReadSpeaker
 Log in
e-Learning - UNIMIB
Home My Media
Percorso della pagina
  1. Science
  2. Master Degree
  3. Data Science [FDS02Q - FDS01Q]
  4. Courses
  5. A.A. 2025-2026
  6. 2nd year
  1. Technological Infrastructures for Data Science
  2. Summary
Insegnamento Course full name
Technological Infrastructures for Data Science
Course ID number
2526-2-FDS01Q016
Course summary SYLLABUS

Course Syllabus

  • Italiano ‎(it)‎
  • English ‎(en)‎
Export

Obiettivi

Conoscenza e capacità di comprensione

Al termine del corso, lo studente avrà acquisito:

  • Conoscenze fondative delle principali soluzioni tecnologiche a supporto della data science, includendo virtualizzazione, cloud computing e containerization
  • Comprensione dei modelli architetturali di riferimento per le infrastrutture di data science, con particolare focus su Data Lake, HDFS e YARN
  • Conoscenze teoriche sui paradigmi di processamento dati (batch processing, stream processing, messaging) e relative tecnologie (Hadoop, Spark, Storm, Kafka)
  • Comprensione delle metodologie di sviluppo software moderne (Waterfall, Agile, DevOps, DataOps, MLOps) nel contesto della data science
  • Conoscenze di base per analizzare e valutare la possibilità di applicare soluzioni infrastrutturali esistenti a problemi specifici di data science

Conoscenza e capacità di comprensione applicate

Al completamento del corso, lo studente sarà in grado di:

  • Progettare e implementare soluzioni di containerization utilizzando Docker per applicazioni di data science
  • Utilizzare strumenti e piattaforme cloud per la gestione e l'elaborazione di grandi volumi di dati
  • Configurare e utilizzare sistemi distribuiti per il batch e stream processing di dati
  • Applicare metodologie di sviluppo software appropriate ai progetti di data science e machine learning
  • Sperimentare con soluzioni tecniche e tecnologiche specifiche attraverso attività laboratoriali pratiche
  • Interagire efficacemente con gli strumenti tecnologici presentati durante il corso

Competenze trasversali

Il corso contribuisce allo sviluppo delle seguenti competenze trasversali:

Autonomia di giudizio: attraverso l'analisi critica di diverse soluzioni tecnologiche e la valutazione della loro applicabilità a contesti specifici di data science.

Abilità comunicative: mediante la discussione orale di approfondimenti su tematiche del corso e la capacità di presentare soluzioni tecniche in modo chiaro e strutturato.

Capacità di apprendere: fornendo gli strumenti metodologici per rimanere aggiornati sull'evoluzione delle tecnologie per la data science e per approfondire autonomamente nuove soluzioni infrastrutturali.

Contenuti sintetici

Sezioni Tematiche

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

Conoscenze tecniche fondamentali

  • Architettura dei sistemi informatici: comprensione dell'organizzazione e del funzionamento dei componenti hardware (processore, memoria RAM, dispositivi di archiviazione) e della loro interazione

  • Sistemi operativi: familiarità con i concetti base e l'utilizzo pratico di ambienti Unix/Linux o Windows

  • Interfaccia a riga di comando: competenza nell'uso della shell/terminale per navigazione del filesystem, gestione file e esecuzione di comandi base

Competenze di programmazione

  • Linguaggio Python: conoscenza delle strutture dati fondamentali (liste, dizionari, tuple), costrutti di controllo (cicli, condizioni), funzioni e gestione base di librerie

  • Ambiente Jupyter: esperienza nell'utilizzo di Jupyter Notebook/Lab per sviluppo interattivo, visualizzazione dati e documentazione del codice

Livello richiesto

Le competenze elencate dovrebbero corrispondere a quelle acquisite in corsi introduttivi di informatica o programmazione a livello undergraduate, o attraverso esperienza pratica equivalente.

Modalità didattica

Il corso adotta un approccio didattico integrato che combina diverse metodologie per favorire l'apprendimento attivo e il coinvolgimento degli studenti:

Articolazione delle attività

Lezioni frontali interattive

  • Circa 15 lezioni da 2-3 ore ciascuna svolte in modalità interattiva in presenza
  • Durante le lezioni il docente promuoverà la partecipazione attiva degli studenti attraverso domande, discussioni guidate, analisi di casi studio e momenti di riflessione condivisa
  • Le lezioni integreranno contenuti teorici con esempi pratici e applicazioni concrete

Laboratori pratici

  • 6 laboratori da 3 ore ciascuno (oppure 9 da 2 ore) svolti in presenza con modalità interattiva
  • Attività hands-on per l'applicazione pratica dei concetti teorici
  • Lavoro individuale e di gruppo sotto la supervisione del docente

Contenuti asincroni

  • Una quota massima del 10% del corso verrà erogata in modalità asincrona mediante video-registrazioni
  • I contenuti asincroni integrano le lezioni frontali
  • Gli studenti potranno accedere a questi contenuti secondo i propri tempi di studio per consolidare e ampliare gli argomenti trattati in aula

Lingua di erogazione

Il corso verrà interamente 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 dell'apprendimento si articola in due componenti complementari, entrambe obbligatorie:

Prova scritta (25 punti)

La prova scritta valuta la conoscenza degli argomenti trattati durante il corso attraverso:

  • 12-13 domande a scelta multipla per verificare la comprensione dei concetti fondamentali
  • 2-3 domande a risposta aperta per valutare la capacità di analisi e sintesi

Durata: 60-75 minuti
Punteggio massimo: 25 punti

Prova orale - Presentazione di approfondimento (7 punti)

La prova orale consiste nella presentazione e discussione di un tema di approfondimento scelto tra:

  • Argomenti correlati al corso ma non trattati durante le lezioni
  • Approfondimenti di tematiche già affrontate in aula

Modalità di svolgimento:

  • Preparazione: il lavoro di ricerca e la creazione delle slide possono essere realizzati in gruppi di 2 persone
  • Presentazione e valutazione: individuali e personalizzate per ciascun componente del gruppo
  • Approvazione del tema: l'argomento deve essere previamente concordato con il docente

Punteggio massimo: 7 punti

Criteri di superamento dell'esame

L'esame si considera superato quando si verificano entrambe le seguenti condizioni:

  1. Soglia minima per ciascuna prova: punteggio ≥ 15 per la prova scritta e ≥ 4 in quella orale
  2. Punteggio complessivo: somma dei punteggi delle due prove ≥ 18 punti

Voto finale: corrisponde alla somma dei punteggi delle due prove (massimo 32 punti, corrispondente a 30 e lode).

Note importanti

  • Non sono previste prove parziali durante lo svolgimento del corso
  • Il mancato raggiungimento della soglia minima in una delle due prove comporta la ripetizione della specifica prova e non dell'intero esame

Orario di ricevimento

Martedì 12:30-14:30, chiedere conferma per email

Sustainable Development Goals

IMPRESE, INNOVAZIONE E INFRASTRUTTURE
Export

Aims

Knowledge and Understanding

Upon completion of the course, students will have acquired:

  • Foundational knowledge of the main technological solutions supporting data science, including virtualization, cloud computing, and containerization
  • Understanding of reference architectural models for data science infrastructures, with particular focus on Data Lakes, HDFS, and YARN
  • Theoretical knowledge of data processing paradigms (batch processing, stream processing, messaging) and related technologies (Hadoop, Spark, Storm, Kafka)
  • Understanding of modern software development methodologies (Waterfall, Agile, DevOps, DataOps, MLOps) in the context of data science
  • Basic knowledge to analyze and evaluate the possibility of applying existing infrastructural solutions to specific data science problems

Applying Knowledge and Understanding

Upon completion of the course, students will be able to:

  • Design and implement containerization solutions using Docker for data science applications
  • Use cloud tools and platforms for managing and processing large volumes of data
  • Configure and use distributed systems for batch and stream data processing
  • Apply appropriate software development methodologies to data science and machine learning projects
  • Experiment with specific technical and technological solutions through practical laboratory activities
  • Effectively interact with the technological tools presented during the course

Transversal Skills

The course contributes to the development of the following transversal skills:

Making Judgements: through critical analysis of different technological solutions and evaluation of their applicability to specific data science contexts.

Communication Skills: through oral discussion of in-depth topics from the course and the ability to present technical solutions in a clear and structured manner.

Learning Skills: by providing methodological tools to stay updated on the evolution of data science technologies and to independently explore new infrastructural solutions.

Contents

Topics

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

Technical Fundamentals

  • Computer Systems Architecture: understanding of hardware components organization and operation (processor, RAM memory, storage devices) and their interaction

  • Operating Systems: familiarity with basic concepts and practical use of Unix/Linux or Windows environments

  • Command Line Interface: proficiency in using shell/terminal for filesystem navigation, file management, and basic command execution

Programming Skills

  • Python Language: knowledge of fundamental data structures (lists, dictionaries, tuples), control structures (loops, conditionals), functions, and basic library management

  • Jupyter Environment: experience using Jupyter Notebook/Lab for interactive development, data visualization, and code documentation

Required Level

The listed competencies should correspond to those acquired in introductory computer science or programming courses at the undergraduate level, or through equivalent practical experience.

Teaching form

The course adopts an integrated teaching approach that combines different methodologies to promote active learning and student engagement:

Course Structure

Interactive Lectures

  • Approximately 15 lectures of 2-3 hours each conducted in interactive mode in presence
  • During lectures, the instructor will promote active student participation through questions, guided discussions, case study analyses, and shared reflection moments
  • Lectures will integrate theoretical content with practical examples and concrete applications

Lab Sessions

  • 6 lab sessions of 3 hours each (or 9 lab sessions of 2 hours) conducted in presence with interactive methodology
  • Hands-on activities for practical application of theoretical concepts
  • Individual and group work under instructor supervision

Asynchronous Content

  • A maximum of 10% of the course will be delivered asynchronously through video recordings
  • Asynchronous content complements face-to-face lectures
  • Students will be able to access this content according to their own study schedule to consolidate and expand on topics covered in class

Language of Instruction

The course will be entirely delivered 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 of learning consists of two complementary components, both of which are mandatory:

Written Exam (25 points)

The written exam evaluates knowledge of the topics covered during the course through:

  • 12–13 multiple-choice questions to test understanding of fundamental concepts
  • 2–3 open-ended questions to assess analytical and synthesis skills

Duration: 60–75 minutes
Maximum score: 25 points

Oral Exam – In-Depth Presentation (7 points)

The oral exam involves the presentation and discussion of a topic chosen from:

  • Subjects related to the course but not covered in class
  • Further exploration into topics already discussed during lectures

Format:

  • Preparation: research and slide creation may be carried out in groups of 2 people
  • Presentation and evaluation: must be individual and personalized for each group member
  • Topic approval: the topic must be approved in advance by the instructor

Maximum score: 7 points

Exam Passing Criteria

The exam is considered passed when both of the following conditions are met:

  1. Minimum threshold for each component: score ≥ 15 in the written exam and ≥ 4 in the oral exam
  2. Total score: the sum of the two components must be ≥ 18 points

Final grade: corresponds to the sum of the two scores (maximum 32 points, equivalent to 30 cum laude).

Important Notes

  • No partial exams are scheduled during the course
  • Failure to reach the minimum threshold in either component requires retaking only that specific part, not the entire exam

Office hours

Tuesday 12:30-14:30 ask for email confirmation

Sustainable Development Goals

INDUSTRY, INNOVATION AND INFRASTRUCTURE
Enter

Key information

Field of research
INF/01
ECTS
6
Term
First semester
Activity type
Mandatory to be chosen
Course Length (Hours)
46
Degree Course Type
2-year Master Degreee
Language
English

Staff

    Teacher

  • Michele Ciavotta
    Michele Ciavotta
  • FF
    Federica Filippini

Students' opinion

View previous A.Y. opinion

Bibliography

Find the books for this course in the Library

Enrolment methods

Manual enrolments

Sustainable Development Goals

INDUSTRY, INNOVATION AND INFRASTRUCTURE - Build resilient infrastructure, promote inclusive and sustainable industrialization and foster innovation
INDUSTRY, INNOVATION AND INFRASTRUCTURE

You are not logged in. (Log in)
Policies
Get the mobile app
Powered by Moodle
© 2025 Università degli Studi di Milano-Bicocca
  • Privacy policy
  • Accessibility
  • Statistics