Architetture Digitali Sicure: IoT e Cloud Computing

Obiettivi formativi e Competenze in uscita

L'obiettivo del corso è fornire allo studente le competenze architetturali e operative necessarie per governare l'ecosistema digitale di un'impresa moderna. Integrando teoria e programmazione pratica in Python e Shell, il corso abilita lo studente alla gestione di sistemi operativi, di servizi Internet/Web e di strumenti di sicurezza informatica.

Le principali abilità acquisite saranno:

  • Gestione Sistemistica: Comprendere e governare l'architettura interna di un sistema operativo per ottimizzare l'allocazione delle risorse hardware.

  • Automazione di Processo: Padroneggiare la linea di comando Linux e lo scripting Shell per automatizzare task operativi e flussi di dati.

  • Progettazione di Sistemi Distribuiti: Sviluppare applicazioni basate sul modello Client/Server e integrare servizi Internet complessi, anche per soluzioni Internet of Things (IoT) e in ambienti Cloud.

  • Integrazione Industriale: Progettare soluzioni Industrial Internet of Things (IIoT) e gestire asset produttivi tramite Digital Twin.

  • Governance della Sicurezza: Identificare vulnerabilità sistemiche e applicare strumenti di cybersecurity per la protezione del patrimonio informativo aziendale.

 

Prerequisiti

Il corso richiede la conoscenza del linguaggio Python.

The course requires knowledge of the Python programming language.

 

Contenuti

- Fondamenti Architetturali: Cenni sull’architettura degli elaboratori e l’evoluzione dei sistemi operativi moderni.
- Automazione in Ambiente Unix/Linux: Padronanza della Shell, comandi di sistema e sviluppo di script di automazione.
- Gestione delle Risorse: Processi e strategie di scheduling. Sincronizzazione, comunicazione inter-processo (IPC) e gestione della memoria virtuale.
- Data Management & File Systems: Organizzazione, controllo degli accessi e gestione fisica/logica dei dati in ambiente Unix.
- Strategie Open Source: Analisi di benefici, rischi e modelli di licenza per l'impresa.
- Sistemi Distribuiti e Networking: architetture di rete, modelli Client/Server ed evoluzioni, Cloud Computing, sistemi di nomi (DNS), tolleranza ai guasti, scalabilità, analisi dei principali servizi Internet (e-mail, Web, …).
- Network Programming: Sviluppo di applicazioni Client/Server tramite Socket in Python.
- Cybersecurity & Identity Management: Crittografia simmetrica/asimmetrica, soluzioni per la gestione sicura delle identità, principali minacce e strumenti di difesa.
- Smart Factory & Industria 4.0: Introduzione all’Industrial Internet of Things (IIoT) e implementazione di Digital Twin per la gestione remota di sistemi industriali.

 

Metodi e Approcci Didattici 

L’insegnamento è erogato in presenza, per favorire la massima interazione con il docente, con il supporto delle registrazioni delle lezioni per il ripasso asincrono. Le attività didattiche includono:

 - lezioni frontali

 - esercitazioni guidate

 - esempi svolti e commentati

 

Compiti di docenti e tutor

Il tutor didattico agisce come facilitatore tecnico, supportando studentesse e studenti:

  • Durante le sessioni di laboratorio, fornendo assistenza immediata nel debugging e nella logica di programmazione.

  • Attraverso didattica integrativa mirata, organizzando sessioni di ripasso collettivo o ricevimenti individuali (sincroni/asincroni) per chiarire i punti più complessi del programma.

 

Testi e Materiali Didattici 

- Materiale didattico originale fornito dal docente (slide, dispense, esempi di codice)

 - Eventuali risorse online selezionate e rese disponibili sulla piattaforma del corso

 - Libri di testo di approfondimento opzionali: 

1) I moderni Sistemi Operativi 3/ed - Andrew S. Tanenbaum - Pearson Prentice Hall

2) J. Kurose, K. Ross, "Reti di Calcolatori - Un approccio top-down a Internet", Pearson Education Italia, 8a edizione, 2022.

3) Computer security: principles and practice - William Stallings, Lawrie Brown - Global edition

 

Modalità di valutazione

L'esame, volto a verificare la capacità di "problem solving" tecnico e teorico, si svolge in laboratorio ed è articolato in 3 moduli indipendenti:

  1. Modulo Automazione: Sviluppo di uno script Shell per la gestione di task di sistema.

  2. Modulo Network and System Programming: Sviluppo di un’applicazione distribuita Client/Server con server multiprocesso (Python Socket) per applicazioni Industrial Internet-of-Things (IIoT).

  3. Modulo Teoria: Test di verifica sulle basi concettuali, architetturali e di sicurezza.

Il superamento di ciascun modulo richiede un punteggio minimo di 18/30. Il voto finale è calcolato come media delle tre prove.

Le tre prove possono anche essere sostenute separatamente in appelli diversi.