Dettaglio insegnamento

ARCHITETTURE COMPUTAZIONALI, RETI E SICUREZZA

MF0614

Insegnamento
ARCHITETTURE COMPUTAZIONALI, RETI E SICUREZZA
Codice
MF0614
Anno Accademico
2026/2027
Anno regolamento
2026/2027
Corso di studio
INTELLIGENZA ARTIFICIALE E INNOVAZIONE DIGITALE
Curriculum
000 - 000-GENERICO
Responsabile didattico
CFU
9
Ore di lezione
72
Settore Scientifico Disciplinare (SSD)
INFO-01/A - Informatica
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ - Opzionale
Anno
1
Periodo
Secondo Semestre
Sede
VERCELLI
Lingua insegnamento
Italiano
Contenuti
Prima parte – Fondamenti di informatica, sistemi di calcolo, reti, applicazioni web e sicurezza (6 CFU)
La prima parte del corso offre una panoramica strutturata delle fondamenta dell’informatica, introducendo studentesse e studenti ai principali aspetti dei sistemi di calcolo: architettura dell’elaboratore, componenti hardware e software, rappresentazione dei dati e visione a strati delle architetture informatiche. Sono analizzate le principali tipologie di applicazioni, sia locali sia distribuite in rete, e i concetti fondamentali relativi alle licenze software. Una parte significativa è dedicata alle reti di calcolatori, ai protocolli di comunicazione e alle applicazioni web: studentesse e studenti sono guidati nella comprensione dei dispositivi e dei componenti necessari alla connessione in rete di PC, dispositivi mobili e sensori IoT, con attenzione al dimensionamento dei dispositivi e delle strutture di rete. La prima parte si conclude con un’introduzione alla sicurezza informatica: requisiti di sicurezza, principali tipologie di attacco, organizzazione e gestione degli incidenti, protocolli crittografici e principi di funzionamento dei firewall. Particolare attenzione è dedicata al riconoscimento delle diverse soluzioni crittografiche e alla loro relazione con requisiti di sicurezza, efficienza e affidabilità.

Seconda parte – Ingegneria del Software, requisiti e modellazione UML (3 CFU)
La seconda parte introduce i principi e le tecniche fondamentali per la progettazione di sistemi software, con particolare attenzione all’uso di UML (Unified Modeling Language) come linguaggio standard per la modellazione e la documentazione. Dopo una panoramica sul processo di sviluppo del software — dalla raccolta e analisi dei requisiti alla progettazione, implementazione, collaudo e manutenzione — il corso approfondisce il ruolo della modellazione nelle diverse fasi del ciclo di vita. Sono trattati la specifica dei requisiti funzionali e non funzionali, con attenzione a qualità del software, sicurezza, manutenibilità, efficienza, accessibilità e integrazione con sistemi locali o distribuiti, e i principali diagrammi UML per rappresentare requisiti, casi d’uso, struttura del sistema, interazioni tra componenti e comportamento dinamico. L’attività di laboratorio prevede l’utilizzo di strumenti software per la realizzazione di diagrammi UML e la loro progressiva traduzione in strutture di codice.

Integrazione della dimensione di genere
Il corso dedica uno spazio specifico e attività trasversali alla dimensione di genere nei sistemi digitali: bias di genere nei dati e nei sistemi informativi, accessibilità e progettazione inclusiva come requisiti non funzionali, sicurezza delle persone e violenza digitale di genere, divario di genere nelle professioni ICT e nella cybersecurity.
Testi di riferimento
Prima parte
• D. Curtin, K. Foley, K. Sen, C. Morin, A. Marengo, A. Pagano, «Informatica di base», 7ª edizione, McGraw-Hill (punto 1.1 del programma esteso).
• J. F. Kurose, K. W. Ross, «Reti di calcolatori e Internet. Un approccio top-down», Pearson (punto 1.2 del programma esteso).
• C. P. Pfleeger, S. L. Pfleeger, L. Coles-Kemp, «Security in Computing», 6th Edition, Addison-Wesley Professional (punto 1.3 del programma esteso).

Seconda parte
• I. Sommerville, «Ingegneria del software», Pearson Italia, 10ª edizione, 2017 – https://he.pearson.it/bundle/709?isbn=9788891902245 (punti 2.1, 2.2, 2.4 del programma esteso).
• M. Fowler, «UML distilled», Pearson Italia, 4ª edizione, 2018 – https://he.pearson.it/bundle/701?isbn=9788891907820 (punti 2.3 e 2.4 del programma esteso).

Materiale didattico integrativo
Slide delle lezioni, tracce delle esercitazioni, istruzioni di laboratorio, esempi svolti, articoli scientifici assegnati per il progetto e prove degli anni precedenti sono resi disponibili sulla pagina dedicata dell’insegnamento sulla piattaforma DIR – Didattica in Rete. Le indicazioni su quale materiale sia più adatto alla preparazione di ciascuna prova sono riportate nel campo «Modalità di verifica dell’apprendimento».
Obiettivi formativi
Il corso ha l’obiettivo di fornire alle studentesse e agli studenti una preparazione di base, ma strutturata, sui principali aspetti dell’informatica, dei sistemi di calcolo, delle reti, della sicurezza informatica e della progettazione software. L’insegnamento mira a sviluppare la capacità di comprendere il funzionamento dei sistemi informatici, di valutarne requisiti, potenzialità e limiti, e di interagire in modo consapevole con figure tecniche specialistiche quali analisti, sviluppatori, sistemisti ed esperti di sicurezza.Il corso è organizzato in due parti principali.Prima parte – Fondamenti di informatica, sistemi di calcolo, reti e sicurezzaLa prima parte del corso fornisce le conoscenze fondamentali relative alla rappresentazione digitale delle informazioni, alla struttura e al funzionamento dei sistemi di calcolo, alle componenti hardware e software, alle reti di comunicazione e agli aspetti principali della sicurezza informatica. Studentesse e studenti acquisiranno conoscenze sui componenti fondamentali di un sistema di calcolo, quali processori, memorie, supporti di memorizzazione, dispositivi di input/output e interfacce di comunicazione. Una parte rilevante sarà dedicata ai protocolli di comunicazione, alle reti di calcolatori e alla connessione di dispositivi eterogenei, inclusi PC, dispositivi mobili e sensori IoT. Il corso permetterà di comprendere le principali problematiche di dimensionamento dei sistemi, con riferimento alla capacità di memorizzazione, alle prestazioni, alla potenza di trasmissione e all’adeguatezza delle architetture rispetto a specifici contesti applicativi. Saranno inoltre affrontati i principali temi della sicurezza informatica, tra cui requisiti di sicurezza, tipologie di attacco, gestione degli incidenti, protocolli crittografici, firewall e soluzioni di protezione. Le studentesse e gli studenti saranno guidati a comprendere il rapporto tra sicurezza, efficienza, affidabilità e requisiti applicativi.Al termine di questa parte, la studentessa o lo studente sarà in grado di riconoscere le principali componenti di un sistema informatico, comprendere il ruolo dei protocolli di comunicazione, valutare problemi di dimensionamento e sicurezza, riconoscere le principali minacce informatiche e contribuire in modo informato alla definizione dei requisiti di un sistema nel proprio ambito applicativo.Seconda parte – Progettazione software e modellazione con UMLLa seconda parte del corso introduce i principi dell’Ingegneria del Software e le tecniche fondamentali per la progettazione, la modellazione e la documentazione di sistemi software, con particolare attenzione all’uso di UML, Unified Modeling Language. Studentesse e studenti apprenderanno le principali fasi del processo di sviluppo software, dalla richiesta del committente alla raccolta e analisi dei requisiti, dalla progettazione all’implementazione, fino al collaudo, alla consegna e alla manutenzione del sistema. Saranno introdotti alla distinzione tra requisiti funzionali e non funzionali, con attenzione ad aspetti quali qualità del software, sicurezza, manutenibilità, efficienza, integrazione e affidabilità.Il corso fornirà competenze pratiche nell’utilizzo dei principali diagrammi UML per modellare il dominio applicativo, i requisiti, l’architettura, le interazioni tra componenti e il comportamento dinamico del sistema. Particolare attenzione sarà dedicata alla coerenza tra requisiti, modelli progettuali e successiva implementazione. Attraverso attività pratiche e di laboratorio, studentesse e studenti saranno guidati nell’utilizzo di strumenti software per la realizzazione di diagrammi UML, nella progettazione di semplici sistemi software, nella documentazione delle scelte progettuali e nella traduzione progressiva dei modelli in strutture di codice. Al termine di questa parte, la studentessa o lo studente sarà in grado di organizzare un processo di sviluppo software secondo le fasi dell’Ingegneria del Software, individuare e formalizzare requisiti, rappresentare architettura e comportamento del sistema mediante diagrammi UML, utilizzare correttamente la terminologia tecnica del settore e comprendere documentazione tecnica o scientifica relativa a sistemi, pipeline e architetture software.Competenze complessive atteseAl termine del corso, studentesse e studenti avranno acquisito la capacità di comprendere e utilizzare la terminologia tecnica dell’informatica e dell’Ingegneria del Software, valutare criticamente diverse soluzioni architetturali, comunicative e di sicurezza, e contribuire alla definizione di requisiti tecnici in collaborazione con figure specialistiche. Saranno inoltre in grado di confrontare possibili soluzioni alternative, motivare le scelte progettuali, documentare in modo chiaro le caratteristiche principali di un sistema e aggiornare autonomamente le proprie conoscenze rispetto a nuove tecnologie, strumenti, protocolli e metodologie basate sui principi fondamentali trattati nel corso.
Prerequisiti
Non sono previste propedeuticità obbligatorie: l’accesso all’esame non è subordinato al superamento di altri insegnamenti. Si raccomanda tuttavia di aver acquisito le conoscenze di programmazione in Python e di basi di dati fornite dagli insegnamenti di base del Corso di Studio, che sono considerate propedeutiche in senso sostanziale alle attività di progettazione, modellazione UML e traduzione dei modelli in strutture software.
Conoscenze e abilità richieste in ingresso
Prima di affrontare l’insegnamento ci si attende che la studentessa o lo studente sappia:
• leggere e scrivere semplici programmi in Python, utilizzando i principali costrutti del linguaggio (assegnamento, selezione, iterazione), definendo funzioni e impiegando strutture dati elementari (liste, dizionari);
• descrivere i concetti fondamentali del modello relazionale (tabelle, attributi, tuple, chiavi primarie ed esterne);
• formulare interrogazioni SQL di base (SELECT, WHERE, ORDER BY, funzioni di aggregazione e semplici join).
Non è richiesta alcuna conoscenza pregressa di reti di calcolatori, sicurezza informatica, Ingegneria del Software o UML: questi argomenti sono introdotti dal corso a partire dai fondamenti.

Verifica e recupero dei prerequisiti
All’inizio del corso è resa disponibile su DIR una breve prova di autovalutazione non selettiva sui prerequisiti, corredata di materiali di riallineamento su Python e SQL. La prova non concorre alla valutazione finale ed è finalizzata a consentire a ciascuna studentessa e a ciascuno studente di verificare autonomamente il proprio livello di partenza.
Metodi didattici
Prima parte (6 CFU – 48 ore: 28 ore di lezione frontale, 20 ore di esercitazione)
Le lezioni frontali sono dedicate alla presentazione dei fondamenti dell’informatica, delle reti di calcolatori, dei principali protocolli di comunicazione alla base di Internet e delle applicazioni web, nonché alla connessione di dispositivi eterogenei (PC, dispositivi mobili, sistemi embedded, sensori IoT) e alla sicurezza informatica (requisiti di sicurezza, tipologie di attacco, vulnerabilità, rischio e incidente, protocolli crittografici, firewall, sistemi di autenticazione e misure organizzative).
Le esercitazioni guidate consolidano i concetti presentati attraverso esempi, casi applicativi ed esercizi svolti in aula su reti, protocolli, dimensionamento dei sistemi e scenari di sicurezza. Studentesse e studenti lavorano su casi assegnati — individualmente e in piccoli gruppi — e discutono in aula le soluzioni proposte, confrontando alternative e motivando le scelte: prestazioni computazionali, capacità di memorizzazione, potenza di trasmissione, scalabilità e adeguatezza delle architetture rispetto a specifici contesti applicativi.

Seconda parte (3 CFU – 24 ore: 12 ore di lezione frontale, 12 ore di laboratorio)
Le lezioni frontali presentano le principali fasi dell’Ingegneria del Software e la loro applicazione allo sviluppo di un sistema software, dalla raccolta e analisi dei requisiti alla progettazione, implementazione, collaudo e manutenzione, e introducono il linguaggio UML sia dal punto di vista formale sia applicativo.
Le attività di laboratorio prevedono la realizzazione di un progetto individuale nel quale studentesse e studenti definiscono un insieme coerente di diagrammi UML e, ove opportuno, ne sperimentano la traduzione in semplici strutture o script Python. Il progetto può essere sviluppato a partire da un caso di studio proposto durante il corso oppure dall’analisi di un articolo scientifico che descrive sistemi, pipeline o architetture software, anche nell’ambito dell’Intelligenza Artificiale e della Computer Science. L’esito è un documento di progettazione che formalizza requisiti, componenti, interazioni, scelte architetturali e principali aspetti implementativi. Sono utilizzati strumenti online per la realizzazione di diagrammi UML quali diagrams.net/draw.io, Visual Paradigm Online, PlantUML, Mermaid, Lucidchart o strumenti equivalenti.

Partecipazione attiva e integrazione della dimensione di genere
Il ruolo attivo di studentesse e studenti nel processo di apprendimento è promosso attraverso la discussione in aula delle soluzioni proposte per i casi assegnati, il confronto tra alternative progettuali, la revisione tra pari dei diagrammi UML prodotti in laboratorio e la presentazione pubblica del lavoro individuale, che stimola spirito critico e autonomia. La dimensione di genere è integrata sia in una specifica sessione tematica (punto 1.4 del programma esteso) sia in modo trasversale, mediante l’uso di un linguaggio rispettoso del genere in tutti i materiali didattici e la scelta di casi di studio, esempi e personas che evitino stereotipi e rappresentino utenti differenti per genere, età e abilità.

Il corso dispone di una pagina dedicata sulla piattaforma DIR – Didattica in Rete, nella quale sono disponibili slide, istruzioni, materiali di supporto, esempi, prove degli anni precedenti e ulteriori risorse utili allo svolgimento delle attività didattiche.
Altre informazioni
Le studentesse e gli studenti con disabilità o con Disturbi Specifici dell’Apprendimento (DSA) o con Bisogni Educativi Speciali (BES) possono richiedere servizi e strumenti specifici a loro dedicati rivolgendosi allo Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti e consultando la pagina dedicata del sito di Ateneo: https://uniupo.it/it/servizi/servizi-studenti-disabili-e-dsa.

Le studentesse e gli studenti con disabilità, DSA e BES possono inoltre contattare la/il docente titolare dell’insegnamento in relazione alla declinazione delle modalità di esame.

Il ricevimento si svolge su appuntamento, concordato via posta elettronica con la/il docente titolare. Tutte le comunicazioni relative all’insegnamento sono pubblicate sulla pagina DIR dedicata.
Modalità di verifica dell'apprendimento
La verifica dell’apprendimento consiste in un esame orale, sostenuto in un unico appello e articolato in due prove, coerentemente con la struttura del corso. Non sono previste prove intermedie né prove scritte a risposta multipla; non sono pertanto previste penalità per risposte errate od omesse. Le due prove non sono selettive l’una rispetto all’altra: si svolgono nella stessa seduta e concorrono entrambe al voto finale. La durata complessiva dell’esame è di circa 45 minuti.

* Prova A – Fondamenti (6 CFU, circa 30 min): 3–4 domande, di cui almeno una applicativa, su sistemi di calcolo, reti, applicazioni web, IoT e sicurezza informatica.
* Prova B – Software Engineering e UML (3 CFU, circa 15 min): presentazione individuale e discussione di un articolo scientifico in inglese, con relativa modellazione UML del sistema descritto. Slide e diagrammi devono essere caricati su DIR almeno 3 giorni prima dell’esame.

Ciascuna prova è valutata in trentesimi. Il voto finale è la media pesata delle due prove in proporzione ai CFU:
• Prova A (prima parte, 6 CFU): peso 2/3, pari al 67% del voto finale;
• Prova B (seconda parte, 3 CFU): peso 1/3, pari al 33% del voto finale.
Per il superamento dell’esame è necessario conseguire almeno 18/30 in ciascuna delle due prove: una valutazione inferiore a 18/30 in una delle due prove comporta il mancato superamento dell’esame, indipendentemente dalla media. Il voto finale è arrotondato all’intero più vicino (0,5 arrotondato per eccesso). La lode è attribuita a chi consegue una valutazione pari a 30/30 in entrambe le prove e dimostra, in modo documentato, autonomia critica nell’analisi dell’articolo scientifico e piena padronanza della terminologia tecnica.

È necessario ottenere almeno 18/30 in entrambe le prove
* Il voto finale è la discussione collegiale da parte dei docenti delle due prove, arrotondata all’intero più vicino.
* 30 e lode: 30/30 in entrambe le prove, con particolare autonomia critica e padronanza della terminologia tecnica.

Livelli di valutazione:
Programma esteso
Il corso è organizzato in due parti principali, per un totale di 9 CFU. La prima parte, pari a 6 CFU, è dedicata ai fondamenti dell’informatica, ai sistemi di calcolo, alle reti, alle applicazioni web e alla sicurezza informatica. La seconda parte, pari a 3 CFU, è dedicata all’Ingegneria del Software, alla definizione dei requisiti e alla modellazione UML.
1) Prima parte – Fondamenti di informatica, reti e sicurezza informatica (6 CFU)
La prima parte del corso introduce i concetti fondamentali dell’informatica e fornisce le basi necessarie per comprendere il funzionamento dei sistemi di calcolo, delle reti di comunicazione, delle applicazioni web e dei principali meccanismi di sicurezza informatica.
1.1) Informatica di base
Saranno presentati i concetti di base dell’informatica, con particolare attenzione all’architettura di un elaboratore, ai principali componenti hardware e software, alla rappresentazione dei dati e ai fondamenti della logica booleana. Verranno inoltre introdotte le differenze tra hardware, firmware, sistema operativo, applicazioni e servizi, secondo una visione a strati delle architetture informatiche.
1.2) Reti e applicazioni web
Una parte significativa del corso sarà dedicata alle reti di calcolatori e ai protocolli di comunicazione. Saranno introdotti il modello ISO/OSI, il protocollo Ethernet, il protocollo IP, i protocolli TCP e UDP e il protocollo HTTP. Verranno inoltre analizzate le applicazioni web, l’uso dei metodi HTTP e le principali tipologie di sistemi informativi basati su applicazioni web. Saranno presentati esempi pratici, anche in Python, per comprendere il funzionamento delle comunicazioni di rete e delle applicazioni distribuite.
1.3) Sicurezza informatica, web, cloud e privacy
La prima parte comprende anche un’introduzione alla sicurezza informatica. Saranno affrontati i concetti di base della sicurezza, i principali requisiti di protezione, le tipologie di attacchi, la crittografia, la sicurezza nel web, la sicurezza nelle comunicazioni di rete e la sicurezza nel cloud. Verranno inoltre introdotti elementi di privacy, protezione dei dati, autenticazione, controllo degli accessi, protocolli sicuri e principali strumenti di difesa, con attenzione al rapporto tra sicurezza, efficienza e contesto applicativo.
2) Seconda parte – Ingegneria del Software, requisiti e modellazione UML (3 CFU)
La seconda parte del corso introduce i principali concetti dell’Ingegneria del Software, con particolare attenzione al processo software e al ciclo di vita del software, dalla raccolta e analisi dei requisiti alla progettazione, implementazione, collaudo, manutenzione e gestione del progetto. Saranno approfondite la specifica e la progettazione di sistemi software mediante UML, Unified Modeling Language, come linguaggio standard per la modellazione e la documentazione. Verranno trattati la modellazione dei requisiti, la modellazione del dominio applicativo, la definizione dei casi d’uso, la scrittura delle narrative dei casi d’uso, la rappresentazione dell’architettura, delle interazioni tra componenti e del comportamento dinamico del sistema. Il corso affronterà inoltre il passaggio dai modelli UML al codice, con esempi e semplici applicazioni in Python. Saranno introdotti i principali modelli di processo software, alcuni design patterns di base e strumenti software per la realizzazione di diagrammi UML.
Una parte dell’attività sarà dedicata alla lettura, comprensione e analisi di articoli scientifici in lingua inglese relativi a sistemi, pipeline o architetture software nell’ambito dell’Intelligenza Artificiale e della Computer Science. A partire dall’articolo assegnato, studentesse e studenti dovranno ricavare un documento di progettazione e documentazione, formalizzando requisiti, componenti, interazioni, scelte architetturali e principali aspetti implementativi, e preparare una presentazione accademica sulla progettazione UML del sistema analizzato.
Risultati di apprendimento attesi
La verifica dell’apprendimento è organizzata in due parti, coerentemente con la struttura del corso. La prima parte valuta le conoscenze e le competenze relative ai fondamenti di informatica, ai sistemi di calcolo, alle reti e alla sicurezza informatica. La seconda parte è dedicata alla progettazione software e alla modellazione UML.

Prima parte – Fondamenti di informatica, sistemi di calcolo, reti e sicurezza
La verifica della prima parte accerta la conoscenza dei principali concetti relativi alla rappresentazione digitale delle informazioni, ai componenti hardware e software di un sistema di calcolo, alle reti di comunicazione, alle applicazioni web, ai dispositivi mobili e IoT e ai principali aspetti della sicurezza informatica.
La valutazione potrà comprendere domande teoriche, esercizi applicativi e quesiti di ragionamento, finalizzati a verificare la capacità della studentessa o dello studente di utilizzare correttamente la terminologia tecnica, distinguere tra hardware, firmware, sistema operativo, applicazioni e servizi, riconoscere le principali architetture di calcolo e valutarne l’adeguatezza rispetto a specifici contesti applicativi. Saranno inoltre verificate le conoscenze relative ai protocolli di comunicazione, al dimensionamento dei dispositivi, alla connessione di PC, dispositivi mobili e sensori IoT e all’integrazione con applicazioni mobili e sistemi cloud. Per quanto riguarda la sicurezza informatica, la verifica riguarderà i requisiti di sicurezza, le principali tipologie di attacco, i meccanismi di autenticazione e controllo degli accessi, i protocolli crittografici, HTTPS, TLS, firewall e altri dispositivi di sicurezza di rete. Sarà inoltre valutata la capacità di individuare protocolli, dispositivi e misure di sicurezza adeguati al contesto applicativo.

Seconda parte – Progettazione software e modellazione UML
La verifica della seconda parte consiste in un breve talk individuale della durata di circa 15 minuti su un argomento assegnato dal docente. A ciascuna studentessa o a ciascuno studente sarà fornito un articolo scientifico in lingua inglese relativo a un sistema, una pipeline o un’architettura software nell’ambito dell’Intelligenza Artificiale o della Computer Science.
A partire dall’analisi dell’articolo, la studentessa o lo studente dovrà preparare una presentazione finalizzata a descrivere la progettazione UML del sistema, identificandone i principali requisiti, i componenti, le interazioni, le scelte architetturali e, ove opportuno, il comportamento dinamico mediante opportuni diagrammi UML. La valutazione terrà conto della capacità di comprendere e sintetizzare il contenuto dell’articolo scientifico, della correttezza e completezza della modellazione UML, della coerenza tra descrizione del sistema e diagrammi prodotti, della chiarezza espositiva e dell’uso appropriato della terminologia dell’Ingegneria del Software.
Valutazione complessiva
La valutazione finale terrà conto di entrambe le parti della verifica, considerando la padronanza dei concetti teorici, la capacità di applicarli a contesti concreti, la correttezza dell’analisi tecnica, la qualità della modellazione UML, la capacità di argomentare le scelte progettuali e l’uso appropriato della terminologia dell’informatica, della sicurezza e dell’Ingegneria del Software.
Ultimo aggiornamento:09-09-2026 00:14:31