Corso di laurea

Computer Science

Università degli studi di Bari · 31 materie · 4 file condivisi

La Laurea Magistrale in Informatica fornisce vaste ed approfondite competenze teoriche, metodologiche, sperimentali ed applicative nelle aree fondamentali dell'informatica.
Il laureato magistrale sarà in grado di valutare ed effettuare la scelta della tecnologia informatica più adatta alla pianificazione, alla progettazione, allo sviluppo, alla direzione lavori, alla stima, al collaudo e alla gestione di impianti e domini complessi sia nuovi sia già esistenti.
Questo obiettivo viene perseguito allargando ed approfondendo le conoscenze teoriche, metodologiche, sistemistiche e tecnologiche, in tutte le discipline che costituiscono elementi culturali fondamentali dell'informatica.
I laureati devono in particolare:
•possedere solide conoscenze sia dei fondamenti e sia degli aspetti applicativi dei vari settori dell'informatica;
•conoscere il metodo scientifico di indagine, comprendere e utilizzare gli strumenti di matematica discreta e del continuo, di matematica applicata e di fisica, che sono di supporto all'informatica ed alle sue applicazioni;
•conoscere i principi, le strutture e l'utilizzo dei sistemi di elaborazione;
•conoscere le tecniche, i metodi di progettazione e la realizzazione di sistemi informatici, sia di base sia applicativi;
•avere conoscenza di diversi settori di applicazione;
•possedere elementi di cultura aziendale e professionale.
Il corso di studio prevede due curricula denominati "Artificial Intelligence" e "Security Engineering". I due curricula hanno obiettivi formativi specifici, ma assicurano una base culturale comune. Pertanto, il primo semestre del primo anno è comune ai due curricula con obiettivi di completamento della formazione nei fondamenti delle discipline informatiche acquisita nelle lauree di primo livello e di omogeneizzazione delle differenti prospettive sviluppate dai rispettivi corsi di studio triennali. Nello specifico, il primo semestre del primo anno si articola in quattro insegnamenti che coprono le aree dell'informatica teorica, dell'analisi numerica e delle basi di dati.
Dal secondo semestre del primo anno, parte la formazione di base di alto livello che collega temi attuali della ricerca informatica a una tesi di ampio respiro (20 CFU) attraverso l'articolazione della formazione nei due curricula specializzanti, ciascuno strutturato in nove insegnamenti di cui cinque caratterizzanti lo specifico curriculum.
Gli obiettivi professionalizzanti del curriculum in Artificial Intelligence consistono nel favorire una solida formazione riguardo le tematiche relative sia alla progettazione e allo sviluppo di sistemi che simulano capacità e abilità cognitive tipiche dell'essere umano, quali riconoscimento, apprendimento, comprensione e ragionamento sia riguardo la programmazione di sistemi informatici esperti, detti "intelligenti" e robot, facendo riferimento al paradigma model-driven e al paradigma data-driven.
Gli obiettivi professionalizzanti del curriculum in Security Engineering consistono nella formazione relativa a tematiche quali la sicurezza applicativa, ovvero, sicurezza nella progettazione e nello sviluppo di sistemi software; la verifica e la messa in sicurezza di sistemi software legacy esistenti; la progettazione di interfacce e sistemi di accesso sicuri e nella valutazione della sicurezza della interazione; l'integrazione sicura con sensori e la gestione sicura di progetti IT.
Entrambi i profili possono essere impiegati in vari settori, quali medicina e sanità, industria, servizi al cittadino, finanza, militare, pubblica amministrazione, etc.
Quanto alla conoscenza di almeno una lingua dell'Unione Europea oltre l'italiano, è richiesto in ingresso la conoscenza della lingua Inglese a livello almeno B2, trattandosi di corso internazionale erogato interamente in lingua inglese. Con riferimento ai lessici disciplinari, il Corso di Studi prevede nell'offerta formativa 3 CFU per acquisire competenze nella lingua Inglese di tipo tecnico-scientifico avanzato.

The Laurea Magistrale Degree course in Computer Science provides vast, in-depth, theoretical, experimental and applicative competencies in the fundamental areas of Computer Science.
A Laurea Magistrale graduate will be able to evaluate and choose the most suitable computer science technology for the planning, design, work trends, assessment, testing and management of both new and existing complex systems and domains.
This aim is pursued by widening and deepening theoretical, methodological, systems theory and technological knowledge, in all the subjects that comprise the fundamental cultural elements of computer science.
In particular, graduates must:
possess a solid knowledge both of the basic and the applicative aspects of the various areas of computer science;
know the scientific method of investigation, understand and use discrete mathematics, continuum and applied mathematics instruments, which are a support to computer science and its applications;
know the principles, structures and use of processing systems;
know basic and applicative techniques, design methods and computer system production;
possess knowledge of various areas of application;
possess business and professional culture.
The Laurea Magistrale has two curricula: Artificial Intelligence and Security Engineering. The two curricula have specific educational objectives, but also ensure a strong cultural core basis. Therefore, the first semester of the first year is the same for both the curricula, aiming to complete the basic computer science training acquired in the Laurea (Bachelor's) Degree course and to homogenize the different perspectives developed in the respective Laurea Degree courses. More precisely, it is divided into four courses covering the areas of theoretical computer science, numerical analysis, and databases.
Starting from the second semester of the first year, an high-level training in current topics of computer science research is linked with an extensive dissertation (20 credits), by means of two specialistic curricula, each composed of nine courses, five of which characterize the specific curriculum.

The professional aims of the curriculum named Artificial Intelligence are: to foster a solid training in topics of particular importance, with regard both to the design and development of systems that simulate cognitive skills and abilities typical of the human being, such as recognition, learning, understanding and reasoning, and to the programming of expert computer systems, called "intelligent" and robots, referring to the model-driven paradigm and the data-driven paradigm.
The professional aims of the curriculum named Security Engineering consist in a deep training on topics such as applicative security, i.e., security in the design and development of software systems; verification and securing of legacy software systems; design of secure interfaces and access systems and evaluation of the security of interaction; secure integration with sensors and secure management of IT projects.
Graduates of both profiles can be employed in various fields, such as medicine and health care, industry, citizen services, finance, military, public administration, etc.
As for the knowledge of at least one European language other than Italian, knowledge of English language at least at B2 level is required for the admission, being the course provided in English. Moreover, the Laurea Magistrale includes 3 Credits to acquire skills in advanced technical-scientific English.

Ecco tutti i dettagli sul corso di laurea selezionato. Sul UniDocs troverai gli appunti condivisi dagli altri studenti del tuo corso di laurea, ordinati per materia. Ricordati che per poter visualizzare il materiale devi essere registrato al sito e possedere un numero di crediti sufficiente.

Al momento abbiamo 4 files caricati sul nostro portale suddivisi nelle 31 materie appartenenti al tuo corso di laurea.

Sfoglia il materiale didattico

Con UniDocs hai l'opportunità di studiare insieme a tutto il tuo corso di laurea. Guadagna subito dei crediti, carica il materiale del tuo ultimo esame!
Più condividi, più tempo avrai per studiare con tutta la community!

Materie del corso

COMPUTER VISION 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

L’insegnamento di Computer Vision si propone di fornire agli studenti nozioni di base sullo sviluppo e l’applicazione di tecniche di elaborazione delle immagini per la soluzione di tipici problemi di computer vision,…

Scheda dell'insegnamento

Obiettivi formativi

L’insegnamento di Computer Vision si propone di fornire agli studenti nozioni di base sullo sviluppo e l’applicazione di tecniche di elaborazione delle immagini per la soluzione di tipici problemi di computer vision, spaziando da metodi tradizionali per l’elaborazione di basso livello delle immagini, ad approcci moderni per l’elaborazione di alto livello delle immagini basati su reti neurali convoluzionali.
L’obiettivo formativo è quello di rendere autonomo lo studente nelle scelte degli algoritmi di elaborazione delle immagini per l’estrazione delle informazioni utili a descriverne il contenuto.

Gli studenti conosceranno i concetti di base e i principali approcci alla Computer Vision.

Gli studenti saranno in grado di applicare le tecniche di Computer Vision a problemi specifici in diverse aree interdisciplinari e di impostare correttamente le tecniche per applicazioni utili.

Autonomia di giudizio
Gli studenti saranno in grado di confrontare diverse tecniche di Computer Vision e di scegliere quelle più adatte ad affrontare problemi specifici.
Abilità comunicative
Gli studenti saranno in grado di lavorare in gruppo, mettendo a disposizione le proprie conoscenze per realizzare una proficua collaborazione con le competenze degli altri membri del gruppo.
Capacità di apprendere in modo autonomo
Agli studenti verranno fornite le basi metodologiche che permetteranno loro di comprendere gli ultimi sviluppi della Computer Vision e di rimanere aggiornati sui progressi pubblicati in recenti articoli scientifici e siti web autorevoli.

Programma

Course outline - From Image processing to Computer Vision
Part I - Basics of Image processing
● Light and Color, Image formation, Color models
● Transformations, Filtering, Convolution
● Contrast enhancement
Part II - Grouping/segmentation of pixels
● Edge detection and Thresholding
● Clustering and fuzzy clustering for image segmentation
Part III - Image classification and object recognition
● Machine learning for CV
● Image classification
● Supervised learning (ANNs) for Computer Vision
● Deep learning (CNNs) for Computer Vision
● XAI and Fuzzy logic for CV

Modalità d'esame

L’esame consiste nella discussione di un project work supportato da una relazione che includa sia i dettagli teorici dei metodi utilizzati sia i risultati sperimentali.
Il caso di studio viene assegnato dal docente del corso su richiesta dello studente oppure può essere proposto dallo studente, ma sempre concordato e validato dal docente. Il caso di studio dovrà presentare, dato il problema assegnato, un’analisi critica dello stato dell’arte ed una soluzione adeguata in linguaggio Python. Lo studente dovrà consegnare una relazione e il codice sorgente della soluzione che verranno discussi assieme al docente per la valutazione finale dell’apprendimento.
Per consentire allo studente di sostenere l'esame già al primo appello di Giugno, gli studenti sono incoraggiati a iniziare a sviluppare il proprio caso di studio già nel corso delle lezioni, con consegna (breve in termini temporali) prima dell'esame.
Per sostenere l’esame lo studente deve prenotarsi su Esse3 ad uno degli appelli dell’anno accademico in corso.
La prova d’esame è valutata in trentesimi, tenendo conto della qualità della relazione scritta, della correttezza del codice Python sviluppato per implementare e testare la soluzione, e della chiarezza espositiva durante la discussione del project work.
L’esito della prova d’esame è comunicato agli studenti attraverso il portale Esse3.

Testi di riferimento

Per gli argomenti della Parte I:
R.C. Gonzalez and R.E. Woods. Digital Image Processing, Prentice Hall, 2002.
Per gli argomenti della Parte II:
S. Gollapudi, Learn Computer Vision Using OpenCV - With Deep Learning CNNs and RNNs, Apress, 2019.
Per la parte di laboratorio:
J.E. Solem, Programming Computer Vision with Python, O’Reilly. ebook
Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.
I testi di riferimento saranno integrati con le dispense fornite dal docente nella pagina del corso sulla Piattaforma ADA - https://elearning.di.uniba.it/.
Inoltre sarà fornito, a cura del docente, il codice Python di esempi visti a lezione e l’indicazione di pubblicazioni scientifiche autorevoli.

Codice insegnamento P932672420

DATABASE SYSTEMS 1° anno · 1° semestre · 9 CFU · IINF-05/A · 1 file

Conoscenza e comprensione Progettazione BD: concetti generali e pratici. Progettazione concettuale. Progettazione logica in presenza di aggregati (Object-Relational). Organizzazione fisica dei dati e progettazione fisica…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e comprensione
Progettazione BD: concetti generali e pratici. Progettazione concettuale. Progettazione logica in presenza di aggregati (Object-Relational). Organizzazione fisica dei dati e progettazione fisica del database. Database attivi, gestione delle transazioni. Architetture distribuite. Banche dati e WEB. Strumenti di business intelligence.
Conoscenza e comprensione applicate. Progettazione concettuale, logica e fisica di un database. Progettazione di database attivi. Progettazione di database distribuiti. Progettazione di database sul web. Costruzione di un data warehouse: utilizzo di strumenti di selezione, preelaborazione e trasformazione dei dati e convalida dei modelli estratti.

Lo studente acquisirà le principali conoscenze riguardanti i modelli più evoluti delle basi di dati e, in particolare, il modello relazionale a oggetti. Lo studente possiederà le conoscenze formali che gli consentiranno di comprendere la struttura delle basi di dati rappresentate con il modello Entità Relazione e UML (livello concettuale), con il modello relazionale a oggetti (livello logico). Lo studente apprenderà a progettare un database attivo e a comprendere i meccanismi fisici utili per una progettazione fisica di un database centralizzato e/o distribuito.

Lo studente acquisirà̀ le conoscenze pratiche che gli consentiranno di applicare le conoscenze sulle basi di dati relazionali a oggetti (e attive) Oracle.
Sarà anche in grado di progettare fisicamente una base di dati (anche distribuita) in Oracle.

  • Autonomia di giudizio
    Lo studente acquisirà una autonomia di giudizio in quanto dovrà essere in grado di decidere le strategie da applicare in fase di progettazione concettuale, logica e fisica delle basi di dati. In particolare, sarà in grado di valutare aspetti relativi alla completezza, correttezza, minimalità degli schemi concettuali, nonché aspetti relativi all’efficienza nella progettazione di schemi logici e fisici.
  • Abilità comunicative
    Lo studente sarà in grado di descrivere, attraverso documenti che seguono precise metodologie, le scelte intraprese durante le fasi di progettazione concettuale e logica. Ciò migliorerà le sue capacità di comunicazione nei confronti di possibili utilizzatori della base di dati.
  • Capacità di apprendere in modo autonomo
    I concetti appresi non saranno solamente utili per gli argomenti esposti durante le lezioni frontali, ma risulteranno applicabili anche a contesti differenti (esempio, modelli aggregati diversi da quello Object-relational o DBMS diversi). Questo migliorerà la capacità di apprendimento dello studente, che sarà in grado di gestire situazioni analoghe, seppur diverse, rispetto a quelle esposte durante il corso.

Programma

1. Database attivi (8h). Banche dati e sistemi di produzione. Comportamento trigger in un sistema relazionale. Definizione e utilizzo dei trigger in Oracle. Caratteristiche evolute delle regole attive. Proprietà delle regole attive (terminazione, confluenza e determinismo delle osservazioni). Problemi di progettazione e realizzazione di basi di dati attive. Applicazioni di basi di dati attive.
2. Metodologie e modelli per la definizione del progetto (8h): il ciclo di vita dei sistemi informatici, una metodologia per la progettazione del database, il modello entità-relazione (costrutti e documentazione dello schema). E-R e UML per la progettazione concettuale, design pattern.
3. Database relazionali a oggetti (8h). Modelli di dati non nella prima forma normale. Dal modello relazionale agli oggetti. SQL-3: tuple e oggetti, gerarchie di tipi, tipi astratti, query con appiattimento e annidamento. Il manifesto dei database di terza generazione. Un DBMS relazionale a oggetti: implementazione di oggetti in Oracle: tipi di dati astratti, collezioni, oggetti riga, visualizzazione dell'oggetto, tipo di ereditarietà, identificazione del tipo di runtime. Progettazione logica in DBMS Object-Relational.
4. Tecnologia delle Basi di Dati (8h). Organizzazione fisica dei dati, concetti generali. Strutture fisiche: sequenziale e hash. Strutture fisiche: indici. B-albero. Esecuzione e ottimizzazione delle query. Esecuzione e ottimizzazione delle query. Gestione del buffer. Algoritmi di join. Progettazione fisica.
5. Gestione delle transazioni (8h). Transazioni. Controllo dell'affidabilità. Il processo di riavvio caldo e freddo. Controllo della concorrenza. view-serializability, conflict-serializability, locking a due fasi, controllo della concorrenza basato su timestamp. Locking gerarchico. Risoluzione dello stallo. Transazioni in SQL-3. Transazioni con diversi livelli di isolamento.
6. Architetture delle basi di dati (8h): architetture distribuite. Architettura client-server. Banche dati distribuite. Tecnologie di database distribuiti. Protocolli di commit in due fasi. Parallelismo. Database replicati. Banche dati federate.
7. Data warehouse (8h). Dati operativi e dati decisionali. Tecnologie di Business Intelligence. Sistemi di supporto alle decisioni (DSS), Sistemi informativi esecutivi (EIS) e Sistemi informativi gestionali (MIS). Caratteristiche di un data warehouse. Architettura di un data warehouse. Il modello multidimensionale. Diagramma del data warehouse: stella, fiocco di neve, costellazione. Operazioni OLAP e di analisi dei dati: drill down e roll up. ROLAP e MOLAP. Un caso di studio: il modello relazionale di un DW per il settore agroalimentare.
Laboratorio (30h)
Oracle DB:

  • introduzione
    -procedure (PL/SQL)
    -trigger
    -tipi ed ereditarietà

Modalità d'esame

L'esame si compone di una parte scritta e di una parte di laboratorio. La parte scritta mira a verificare le capacità progettuali concettuali, logiche e fisiche di un database. Inoltre, mira a verificare l'acquisizione di tutti gli argomenti affrontati durante le lezioni. La parte di laboratorio è una discussione orale di un piccolo elaborato pratico e mira a verificare le capacità pratiche di progettazione di un database e di utilizzare le tecnologie utilizzate durante le attività di laboratorio.
Le due parti non sono propedeutiche l'una all'altra (cioè sono indipendenti l'una dall'altra). I voti ottenuti per entrambe le parti saranno mantenuti fino al termine dell’Anno Accademico. Durante il periodo didattico sono previste due valutazioni parziali. In caso di esito positivo, esse sostituiscono la prova scritta.
La valutazione è in trentesimi per entrambe le prove e il voto finale è derivato applicando la media delle valutazioni delle prove. I risultati sono comunicati agli studenti tramite ADA per una visione preliminare e successivamente su Esse3.

Testi di riferimento

Database systems: concepts, languages & architectures Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone ISBN: 007235387
Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.
Sul sito https://elearning.uniba.it/ sono disponibili:
Le slide presentate a lezione, esempi di tracce di appelli precedenti, esempi di tracce della prova di laboratorio di appelli precedenti.

Codice insegnamento P634579094

FORMAL METHODS IN COMPUTER SCIENCE 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file
FUNDAMENTALS OF ARTIFICIAL INTELLIGENCE 1° anno · 2° semestre · 9 CFU · INFO-01/A · 0 file

Conoscenza della storia, delle motivazioni, degli obiettivi, delle questioni aperte, delle branche, degli approcci e delle tecniche dell'Intelligenza Artificiale. Capacità di identificare gli approcci, le tecniche e…

Scheda dell'insegnamento

Obiettivi formativi

  • Conoscenza della storia, delle motivazioni, degli obiettivi, delle questioni aperte, delle branche, degli approcci e delle tecniche dell'Intelligenza Artificiale.
  • Capacità di identificare gli approcci, le tecniche e gli algoritmi di Intelligenza Artificiale appropriati da applicare a determinati problemi.
  • Capacità di configurare correttamente componenti basati sull'Intelligenza Artificiale e di inserirli in sistemi più ampi.
  • Capacità di valutare le prestazioni di componenti basati sull'Intelligenza Artificiale.
    La maggior parte degli argomenti del corso saranno approfonditi negli insegnamenti successivi del corso di laurea. Questo corso consentirà allo studente di essere pronto a comprendere gli ulteriori dettagli forniti in tali insegnamenti e a collegare tutte queste prospettive specifiche in una visione globale e integrata dell'Intelligenza Artificiale.
  • Fondamenti, compiti principali e approcci principali dell'Intelligenza Artificiale, con particolare attenzione alla prospettiva simbolica.
  • Motivazioni per i rami e per i compiti specifici della disciplina
  • Dettagli tecnici di approcci e algoritmi di rilievo tratti dalla letteratura
  • Individuare i rami, gli approcci e gli algoritmi di Intelligenza Artificiale adatti a problemi specifici.
  • Applicare le tecniche di Intelligenza Artificiale a problemi specifici.
  • Impostare correttamente le tecniche per un'applicazione proficua.
  • Impostare ed eseguire esperimenti di valutazione.

Autonomia di giudizio

  • Confrontare le caratteristiche, i pro e i contro di diverse tecniche di Intelligenza Artificiale e scegliere quelle più adatte ad affrontare problemi specifici.
  • Valutare i risultati sperimentali e ricondurli alle caratteristiche della tecnica valutata.
    Abilità comunicative
  • Lavorare in gruppo, mettendo a disposizione le proprie conoscenze di Intelligenza Artificiale per realizzare una proficua collaborazione con altri tipi di competenze degli altri membri del team.
    Capacità di apprendere in modo autonomo
  • Utilizzare i fondamenti storici e metodologici forniti dal corso per comprendere gli ultimi sviluppi dell'Intelligenza Artificiale e rimanere aggiornati sui progressi dell'Intelligenza Artificiale.

Programma

  • Intelligenza artificiale (3 ore)
    Introduzione al corso: finalità, obiettivi, struttura, organizzazione, risultati attesi. Introduzione all'Intelligenza Artificiale: relazioni con l'Informatica, storia, obiettivi, branche, applicazioni. Agenti intelligenti: caratteristiche, struttura, tipi. Applicazioni dell'intelligenza artificiale.
  • Programmazione logica e Prolog (18 ore)
    Richiamo delle basi di logica proposizionale e del prim’ordine: storia, operatori, prove, proprietà. Logica clausale: definizione, relazione con la logica del prim’ordine completa, risoluzione, unificazione e pattern matching. Programmazione logica: interpretazione procedurale delle clausole di Horn, risoluzione SLD. Prolog: sintassi, uso per le basi di conoscenza, uso come linguaggio di programmazione.
  • Ricerca euristica e risoluzione di problemi (8 ore)
    Approcci di problem solving: casi in cui non è noto un algoritmo. Ricerca in uno spazio di stati: operatori, strategie, funzioni euristiche: ricerca non informata, ricerca informata; algoritmo A*. Risoluzione di problemi nei giochi: algoritmo min-max, pruning alfa-beta.
  • Ingegneria dei sistemi basati sulla conoscenza (7 ore)
    Metodologie per lo sviluppo di sistemi basati sulla conoscenza: analisi, concettualizzazione, progettazione, implementazione. Pattern Directed Inference Systems. Sistemi esperti: struttura, sviluppo, implementazione in Prolog. Strategie di inferenza: deduzione, astrazione, abduzione, induzione, ragionamento probabilistico, argomentazione, analogia. Il sistema ReLay.
  • Schemi per la rappresentazione della conoscenza (8 ore)
    Logica per la rappresentazione della conoscenza: logica tradizionale, logica modale. Ontologie: contesto filosofico, definizioni, formalismi di rappresentazione, logiche descrittive. Reti semantiche, grafi concettuali, frame e script. Il sistema GraphBRAIN.
  • Acquisizione automatica della conoscenza (5 ore)
    Il "collo di bottiglia nell'acquisizione della conoscenza". Apprendimento automatico e data mining. Tassonomia degli approcci, delle tecniche e dei sistemi di apprendimento automatico. Spazio delle versioni e Candidate Elimination Algorithm. Procedura di impostazione per l'esecuzione di esperimenti di Machine Learning. Suite di sistemi di apprendimento automatico.
  • Apprendimento automatico e acquisizione di conoscenza dichiarativa (7 ore).
    Approcci logici al Machine Learning: applicazioni, vantaggi, problemi. Relazioni tra alberi decisionali e regole. Programmazione Logica Induttiva: operatori di generalizzazione e specializzazione, sistemi. I sistemi InTheLEx e WoMan. Approcci di similarità per descrizioni logiche del primo ordine.
  • Elaborazione di documenti (7 ore)
    Elaborazione del linguaggio naturale: fasi di preelaborazione, indicizzazione e recupero, categorizzazione del testo, estrazione di informazioni. Elaborazione di immagini: attività di preelaborazione, analisi di immagini di documenti, comprensione di immagini di documenti. Il sistema DoMInUS.

Modalità d'esame

  • tipo di valutazione utilizzata: voto in trentesimi
  • modalità di comunicazione dei risultati delle prove: comunicazione diretta in caso di non approvazione del caso di studio
    L’esame si articola in due prove:
    1. caso di studio (idoneità con giudizio indicativo)
    2. prova orale (voto in trentesimi)
    Per accedere alla prova orale è necessario aver svolto con valutazione positiva il caso di studio, che consiste nell’implementare un modulo applicativo basato su funzionalità di IA.
    Il progetto del caso di studio è destinato a singoli studenti o a gruppi di massimo 3 studenti. Deve essere concordato con il docente, ma sono ben accette proposte degli studenti. Esempi di tipologie sono i seguenti (per complessità crescente):
  • Esecuzione di esperimenti relativi all'intelligenza artificiale
  • Sviluppo/ampliamento dell'interfaccia di un sistema di IA
  • Sviluppo di una base di conoscenza per un sistema di supporto alle decisioni
  • Sviluppo/Estensione di un modulo/funzionalità per un sistema basato su IA
    Qualsiasi branca dell'IA trattata nel corso è ammissibile per la traccia, ad es:
  • Apprendimento automatico / Estrazione dei dati
  • Mining di processi
  • Rappresentazione della conoscenza
  • Sistemi di supporto alle decisioni (motore inferenziale, base di conoscenza, interfaccia)
  • Ragionamento multistrategico (abduzione, argomentazione, analogia, logiche non standard, ...)
  • Elaborazione del linguaggio naturale
  • Elaborazione di immagini
    I domini applicativi suggeriti includono, ma non si limitano a:
  • Ambient Intelligence (Ambienti domestici intelligenti, Ambient Assisted Living, ...)
  • Turismo, patrimonio culturale e istruzione
  • Giochi e serious games
  • Elaborazione di documenti e biblioteche digitali
  • Reti sociali e grafi di conoscenza
  • Analisi e comprensione del traffico
  • Apprendimento e istruzione
  • Legge
  • Musica
  • Configurazione di prodotti/servizi
    Le attività di laboratorio svolte durante il corso possono contribuire al lavoro di progetto se conformi alla traccia.
    La conoscenza del linguaggio Prolog sarà valutata in uno dei seguenti modi:
  • progetto completo in Prolog
  • modulo/i Prolog collegato/i a sistemi in linguaggi tradizionali
  • esercizi durante l'esame orale (se il progetto non prevede l'uso di Prolog).
    Procedura d'esame:
    1. Gli studenti concordano con il docente l'assegnazione del progetto durante il primo mese di lezioni del corso (o circa un mese prima della data d'esame scelta per gli studenti non frequentanti). L'assegnazione e lo sviluppo del progetto durante il corso consentiranno agli studenti di mettere in pratica gli argomenti proposti nelle lezioni direttamente con il docente e di ottenere immediatamente riscontri e consigli sulle fasi iniziali dello sviluppo del progetto.
    2. Gli studenti consegnano il progetto finito non più tardi di una settimana prima della data d'esame. Il materiale da consegnare consiste in un link per scaricare un file ZIP che contiene sorgenti ed eseguibili, dati e risultati sperimentali, sorgenti ODT e PDF della documentazione del progetto.
    3. L'esame consisterà in una dimostrazione/discussione del progetto assegnato e in un esame orale che potrà riguardare qualsiasi argomento del programma del corso, indipendentemente dal fatto che sia coinvolto nel progetto dello studente.
    Il progetto va consegnato entro un mese dall’assegnazione, o entro la prima sessione utile per quelli svolti durante il corso.
    I progetti svolti durante il corso restano validi fino alla sessione di settembre. I progetti richiesti successivamente restano validi per una sessione.
    -
    Criteri di valutazione
    Conoscenza e capacità di comprensione:
  • Chiarezza e completezza delle risposte alle interrogazioni orali
  • Correttezza e perspicacia delle risposte alle domande orali
    Conoscenza e capacità di comprensione applicate:
  • Caso di studio
  • Chiarezza e completezza della documentazione del caso di studio
    Autonomia di giudizio:
  • Decisioni di progetto prese nel caso di studio
  • Risoluzione di problemi durante la prova orale
    Abilità comunicative:
  • Capacità di utilizzare una terminologia tecnica appropriata.
  • Chiarezza, concisione ed equilibrio delle risposte alle domande orali.
    Capacità di apprendere:
  • Capacità di individuare il giusto background utile per affrontare un nuovo argomento
  • Capacità di effettuare un'adeguata ricerca bibliografica
    -
    Criteri di misurazione
    dell'apprendimento e di attribuzione del voto finale
    Saranno valutati i risultati di apprendimento previsti in base a:
  • Qualità, completezza ed ampiezza del caso di studio (inclusa la documentazione).
  • Chiarezza, correttezza e completezza delle risposte alle domande orali.
  • Capacità di fornire approfondimenti o consulenze su questioni specifiche sulla base delle conoscenze acquisite.
    Il caso di studio è valutato in termini di idoneità a sostenere la prova orale, con un giudizio per fasce (insufficiente, sufficiente, buono, ottimo).
    La prova orale è valutata in trentesimi.

Testi di riferimento

  • W.F. Clocksin, C.S. Mellish 'Programming in Prolog' (5th ed.) Springer, Berlin, 2003
    Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.
    I contenuti del corso si trovano nei materiali forniti dal docente nella pagina del corso:
    http://ara.di.uniba.it/~ferilli/ufficiale/ai-eng.html
    I materiali di base sono le diapositive, in cui sono riportati e discussi tutti i contenuti che possono essere chiesti durante l'esame orale, con un dettaglio sufficiente a superare l'esame.
    Per alcuni argomenti, nella pagina Web del corso vengono forniti materiali aggiuntivi (facoltativi) sotto forma di articoli o sezioni di libri per fornire maggiori approfondimenti agli studenti interessati.

Codice insegnamento P623800893

HUMAN-COMPUTER INTERACTION FOR CYBER-SECURITY 1° anno · 0 file
INFORMATION THEORY 1° anno · 1° semestre · 6 CFU · INFO-01/A · 1 file

The course aims to introduce some fundamental concepts of Computer Science by drawing on General Systems Theory, Cybernetics, Shannon’s Communication Theory, and Algorithmic Information Theory. Its purpose is to…

Scheda dell'insegnamento

Obiettivi formativi

The course aims to introduce some fundamental concepts of Computer Science by drawing on General Systems Theory, Cybernetics, Shannon’s Communication Theory, and Algorithmic Information Theory. Its purpose is to establish the core concepts of the discipline and to enable students to recognize and use them in the professional practice of Computer Science.

At the end of the course, students are expected to have acquired theoretical and methodological knowledge of the concept of information in its broader sense and of the main theories connected with it. In particular, they are expected to know the fundamental concepts of information, entropy, coding, and stochastic processes.

At the end of the course, students are expected to be able to apply the acquired knowledge to the formalization and analysis of problems involving information-related phenomena in computing contexts. They should also be able to use the main concepts of Information Theory in exercises and structured problem-solving tasks.

Dublin Descriptor 3 - Making judgements
At the end of the course, students are expected to be able to reason autonomously about the concepts learned and to extend them to current computing contexts. They should be able to evaluate alternative solutions and support their choices with coherent and rigorous arguments.
Dublin Descriptor 4 - Communication skills
At the end of the course, students are expected to be able to communicate formal knowledge of a system in terms of informational concepts expressed through mathematical language. They should also be able to present solutions and arguments in a clear, precise, and logically organized manner.
Dublin Descriptor 5 - Learning skills
At the end of the course, students are expected to have developed the skills needed to continue learning independently through more specialized scientific sources, including textbooks, articles, and authoritative online resources. The course provides the conceptual foundations necessary to pursue further study with a high degree of autonomy.

Programma

The course covers the following topics in a progressive sequence: General Systems Theory; review of probability theory; measurement of information; sources with memory; noiseless coding; introduction to the philosophy of information. The organization of the contents is intended to guide students from foundational conceptual frameworks to the formal tools used in Information Theory.

Modalità d'esame

Learning assessment is carried out through a written examination consisting of three open-ended questions. As a rule, one question is based on an exercise similar to those discussed during the course, while the other two questions concern the theoretical contents of the syllabus.
The written examination is designed to assess the achievement of the intended learning outcomes in terms of knowledge, formalization skills, application of methods, and reasoning ability. No differentiated assessment methods are provided for attending and non-attending students.
Assessment criteria
Assessment is based on the following dimensions:
Knowledge and understanding: knowledge of the fundamental concepts of Information Theory and related disciplinary frameworks.
Applying knowledge and understanding: ability to use the acquired concepts and formal tools in exercises and in the analysis of information-related problems in computing contexts.
Making judgements: ability to reason autonomously, compare alternative formulations or solutions, and justify the adopted approach.
Communication skills: ability to present answers clearly, rigorously, and in an orderly way, using appropriate mathematical and disciplinary language.
Learning skills: ability to continue studying independently through textbooks, scientific material, and authoritative resources.
Assessment and grading criteria
The final grade is expressed in thirtieths, and the examination is passed with a mark equal to or greater than 18/30. Each of the three open-ended questions is worth up to 10 points, and the final mark is obtained by summing the scores achieved in the three questions.
High grades are awarded when the student demonstrates accurate knowledge of the contents, sound reasoning, correct formalization, and clear exposition. Honors may be awarded in the case of an excellent overall performance distinguished by completeness, rigor, and particularly effective argumentation.

Testi di riferimento

The main reference texts are:
Ash, R. B. (1990). Information Theory. Mineola, NY: Dover Publications.
Cover, T. M., & Thomas, J. A. (2006). Elements of Information Theory (2nd ed.). Hoboken, NJ: John Wiley & Sons.
MacKay, D. J. C. (2011). Information Theory, Inference, and Learning Algorithms. Cambridge: Cambridge University Press.
Skyttner, L. (2005). General Systems Theory: Problems, Perspectives, Practice (2nd ed.). Singapore: World Scientific.
The instructor may also provide handouts, including excerpts from the recommended texts, especially for topics not covered in detail in the main textbook.
Teaching materials, including slides used during lectures, are made available on the course platform. According to the guidelines, the indication of teaching materials and where they can be accessed is an integral part of the syllabus information.

Codice insegnamento P017239177

IoT SECURITY 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file
MACHINE LEARNING 1° anno · 2° semestre · 9 CFU · IINF-05/A · 0 file
NATURAL LANGUAGE PROCESSING 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

L’insegnamento si propone di introdurre: Conoscenza dei fondamenti teorici dell'elaborazione del linguaggio naturale; Conoscenza delle problematiche pratiche per lo sviluppo di sistemi di NLP. ● Fondamenti di…

Scheda dell'insegnamento

Obiettivi formativi

L’insegnamento si propone di introdurre:

  • Conoscenza dei fondamenti teorici dell'elaborazione del linguaggio naturale;
    Conoscenza delle problematiche pratiche per lo sviluppo di sistemi di NLP.

● Fondamenti di elaborazione del linguaggio naturale (NLP);
● Aspetti teorici, metodologici e operazionali del NLP con particolare riferimento ai principali livelli di analisi linguistica.

● Applicare le conoscenze sui fondamenti e sugli strumenti del NLP per affrontare i problemi relativi alla gestione dei documenti testuali;
● Sfruttare le tecniche di NLP per la progettazione di sistemi complessi che gestiscono dati non strutturati (es. applicazioni di text mining).

Autonomia di giudizio
● Capacità di valutare la correttezza della soluzione proposta ai problemi legati alla progettazione di sistemi di IA che gestiscono dati non strutturati (es. agenti dialoganti, sistemi di IA con interfaccia NLP);
● Capacità di trovare, valutare e adattare soluzioni e strumenti noti per progettare pipeline di NLP per problemi specifici (ad es. analisi del sentiment o mining di opinioni).
●
Abilità comunicative
● Capacità di comunicare - sia a livello tecnico sia a livello di divulgazione scientifica - le scelte sulle tecniche adottate in una pipeline di NLP progettata per risolvere un determinato problema.
Capacità di apprendere in modo autonomo
● Capacità di seguire i progressi nell'area NLP, apprendendo sia da libri sia da articoli scientifici pubblicati in atti di conferenze o riviste.

Programma

Parte 1: NLP Foundations (16 ore)
1. Introduzione al NLP ed alla linguistica computazionale
2. Processare dati testuali e corpora
3. Language Modeling
4. Classificazione di documenti
5. Part-of-Speech (PoS) Tagging e Riconoscimento delle Entità Nominali.
6. Grammatiche e Parsing
Parte 2: Distributional Semantics and Large Language Models (16 ore)
1. Semantica Distribuzionale
2. Deep Learning per NLP
3. Transformers e Large Language Models
Parte 3: Laboratorio (30 ore)
1. Strumenti e applicazioni NLP, (NLTK, spaCy, gensim), rilevamento del cambiamento semantico lessicale, sentiment analysis, implementazione di pipeline di NLP, transformers.
2. Esercitazioni su task di NLP, ad esempio EVALITA, per la preparazione dell’esame finale.

Modalità d'esame

L'esame consiste in una prova orale, regolamentata come segue:
● Ogni studente/essa svilupperà una soluzione per un task di NLP a sua scelta, selezionato da un elenco proposto dai docenti durante il corso (es. “Hate Speech Detection”) e pubblicato nella piattaforma https://elearning.uniba.it. Questo lavoro può essere svolto in collaborazione tra non più di due studenti/esse (non obbligatorio);
● In alternativa, sarà possibile proporre, motivando opportunamente, un task non compreso nell’elenco (ad esempio, studenti/esse già occupati/e possono proporre task legati al proprio ambito lavorativo);
● Si consegnano, 4 giorni prima della data della prova orale, un breve rapporto tecnico ed una presentazione della soluzione proposta. In caso di lavoro in collaborazione, ogni studente/essa dovrà discutere un aspetto specifico del lavoro;
● La prova orale consiste in una discussione sulla soluzione proposta, nonché sugli argomenti presentati a lezione. Durata della discussione: circa 20 minuti.
Il voto finale è espresso in una scala 0-30.
Il voto finale tiene conto dei seguenti aspetti:
1) correttezza tecnica della soluzione proposta al task affrontato;
2) correttezza e completezza delle risposte ai quesiti durante la prova orale;
3) chiarezza di esposizione.
4) chiarezza e completezza del rapporto tecnico.
Per superare l'esame, lo studente deve essere in grado di proporre una soluzione che soddisfi almeno l'aspetto 1). Valutazioni superiori al minimo sono assegnate quando sono soddisfatti anche gli altri aspetti.
La lode è data quando la logica seguita dallo studente evidenzia particolari capacità di astrazione, ragionamento per analogia, creatività, ed il report è considerato di livello eccellente.

Testi di riferimento

1. [JurMa] D. Jurafsky and J. Martin, Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition. Prentice-Hall Series in Artificial Intelligence, 2000. ISBN: 0130950696.
2. [ManSchu] C. Manning and H. Schutze, Foundations of Statistical Natural Language Processing. MIT Press, 2000.
3. [NLP-PY] Steven Bird, Ewan Klein, and Edward Loper. Natural Language Processing with Python. http://www.nltk.org/book (Il testo è disponibile con licenza Creative Commons Attribution Noncommercial No-Derivative-Works 3.0 US License.)
Si possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php e contattare la biblioteca per concordare il prestito.

Codice insegnamento P480142296

NUMERICAL METHODS FOR COMPUTER SCIENCE 1° anno · 1° semestre · 9 CFU · MATH-05/A · 2 file

Padroneggiare sia i concetti fondamentali che quelli avanzati di algebra lineare numerica per la modellistica di problemi reali. Abilità nello sviluppo di algoritmi efficienti per le applicazioni nell’image-processing…

Scheda dell'insegnamento

Obiettivi formativi

Padroneggiare sia i concetti fondamentali che quelli avanzati di algebra lineare numerica per la modellistica di problemi reali. Abilità nello sviluppo di algoritmi efficienti per le applicazioni nell’image-processing e nel data-mining e nell'information retrieval.

o Conoscere e comprendere le tecniche di algebra lineare numerica utili per il trattamento di dati strutturati.
o Applicare metodi di ottimizzazione per risolvere problemi nei contesti di data-mining, image-processing e information-retrieval.

o Acquisire le tecniche fondamentali dell’algebra lineare numerica per il trattamento di problemi reali. Capacità di sviluppo di codici numerici efficienti ed accurati per l’analisi di problemi nel contesto dell’image-processing, data mining e information retrieval.
o Padronanza delle tecniche fondamentali e delle tecniche avanzate dell’algebra lineare numerica per modellare problemi reali.

Autonomia di giudizio
o Studio critico ed individuale.
o Esercizi mirati durante il corso.
Abilità comunicative
o Uso del lessico tecnico appropriato per la descrizione degli argomenti trattati.
Capacità di apprendere in modo autonomo
o Apprendimento della metodologia e del problem-solving attraverso lo studio dei testi consigliati e l’implementazione pratica delle tecniche teoriche presentate durante il corso.

Programma

  • Numerical linear algebra:
    Vector spaces and subspaces. Matrices and operation with matrices. The 4 fundamental subspaces. Rank. Connectivity. Determinant of a matrix and its properties. Linear functions and transformations. Linear systems and consistency. Similarity. Norms, inner and outer products. Orthogonality. Gram-Schmidt ortho-normalization algorithm. QR factorization. Singular Value Decomposition (SVD) and its properties. Truncated-SVD. Eckart-Young theorem. Principal component analysis (PCA). Applications to image-processing and text-mining.
  • Optimization:
    Vector calculus (summary). Maxima and minima. Newton methods. Gradient method. Perceptron.
  • Eigenvalues and Eigenvectors:
    Definition. Computation of the associated eigenspace. Computation of the eigenvalues for 2x2 matrices. Algebraic and geometric multiplicity. Diagonalizability. Canonical Jordan form. Schur’s theorems. Core-nilpotent decomposition. Power method. Applications: Google Page-Ranking algorithm and spectral clustering.
  • Least squares:
    Introduction to the least squares problems. Linear and non linear regression. Linearization techniques. Normal system and its consistency properties. Use of the QR factorization and of the principal component regression. Projection. Examples on real dataset for fitting and forecasting problems.

Modalità d'esame

Durante le lezioni verranno discussi, in modo partecipato, diversi quesiti ed esercizi simili per tipologia a quelli comunemente somministrati durante gli esami e le prove parziali. La finalità è duplice: monitorare in tempo reale lo stato di preparazione degli studenti frequentanti, perfezionandone la preparazione in vista dell'esame o delle prove parziali; agevolare lo studio in itinere degli aspetti pratici della disciplina, motivando concretamente i corsisti a sostenere l'esame in tempi brevi, sfruttando possibilmente la modalità delle prove parziali. Sono previste due prove parziali scritte per facilitare la preparazione all’esame: la prima durante l'interruzione delle lezioni a metà corso, la seconda a fine corso. Entrambe le date sono concordate, nei limiti consentiti, con gli studenti frequentanti. Di seguito sono elencati ulteriori vantaggi riservati ai frequentanti:

  • La partecipazione alle prove parziali consente di avere informazioni sulle parti di programma che vanno approfondite e quindi migliorare la preparazione all’esame finale.
  • La prova parziale viene valutata complessivamente durante l’esame orale al momento del recupero degli argomenti considerati insufficienti, in modo da migliorare la valutazione complessiva.
  • Le prove parziali sono prese in considerazione per i tre appelli che seguono la fine delle attività didattiche.
    Lo studente che non ha sostenuto le prove parziali sosterrà l’esame orale completo in cui dimostrerà la conoscenza degli argomenti teorici e la capacità di risolvere esercizi. Tale conoscenza può essere dimostrata anche risolvendo esercizi per iscritto.
    Tutti gli studenti all’orale presenteranno e discuteranno in sede di esame la soluzione degli esercizi da svolgere in Python che gli saranno stati assegnati la settimana precedente l’esame orale. Gli esercizi proposti sono simili a quelli svolti a lezione e disponibili sulle piattaforme elearning (https://elearning.uniba.it/ ) e/o Teams.

Testi di riferimento

1. C. Meyer, Matrix Analysis and Applied Linear Algebra, SIAM, 2003.
2. Lars Eldèn, Matrix Methods in Data Mining and Pattern Recognition, SIAM 2007
3. Gilbert Strang, Calculus, Wellesley-Cambridge press, 1991 (Chapter 13)
4. Jorge Nocedal, Stephen Wright - Numerical Optimization. Springer Series in Operations Research and Financial Engineering, Second Edition (2006, Springer) (Chapters 1-2)
Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.

Codice insegnamento P060882735

SECURE SOFTWARE ENGINEERING 1° anno · 2° semestre · 9 CFU · INFO-01/A · 0 file

L’insegnamento di Secure Software Engineering si propone di fornire strumenti e tecniche per lo sviluppo sicuro del software e, di conseguenza, orientato alla privacy. Ciò include lo sviluppo di un’applicazione che…

Scheda dell'insegnamento

Obiettivi formativi

L’insegnamento di Secure Software Engineering si propone di fornire strumenti e tecniche per lo sviluppo sicuro del software e, di conseguenza, orientato alla privacy.
Ciò include lo sviluppo di un’applicazione che integri in ogni fase del ciclo di vita appropriati elementi di sicurezza.

Conoscenza e capacità di comprensione

  • Il principale risultato di apprendimento atteso è la conoscenza relativa a processi, metodi e tecniche per l’analisi e la modellazione di minacce cyber e di integrare in tutte le fasi del ciclo di vita del software requisiti di sicurezza e privacy.
  • Lo studente acquisisce tale conoscenza sia attraverso le lezioni frontali e la partecipazione a seminari tematici erogati durante il corso, sia attraverso esercitazioni che gli consente di mettere in pratica e verificare quanto appreso, acquisendo così consapevolezza della capacità di comprensione e di come migliorare l’applicazione delle tecniche apprese.

Conoscenza e capacità di comprensione applicate

  • Per consentire allo studente di applicare le conoscenze per l’identificazione e la gestione delle vulnerabilità, si svolgono in aula sia esercitazioni individuali che collettive.
  • Allo studente è richiesto di sviluppare un progetto, nel quale è necessario applicare alcune delle tecniche presentate in aula, dopo aver selezionato quelle più appropriate per il caso specifico. Questo progetto contribuisce alla valutazione finale dello studente e quindi al voto finale d’esame.

Competenze Trasversali
Autonomia di giudizio

  • Acquisire una significativa autonomia nel valutare i pericoli inerenti alle minacce cyber di sistemi informatici.
  • Acquisire la capacità di lavorare in team per lo sviluppo si sistemi sicuri e orientati alla privacy. Le esercitazioni che si svolgono durante il corso contribuiscono al raggiungimento di tali competenze grazie anche alla discussione di tali scelte con il docente.
  • L’autonomia di giudizio è parte della valutazione finale dello studente e tiene conto delle discussioni avvenute durante le lezioni, delle esercitazioni e della presentazione del progetto.
    Abilità comunicative
  • Illustrare in modo chiaro ed efficace le conoscenze apprese, presentare casi applicativi ed esempi illustrativi.
  • La presentazione e discussione del progetto sviluppato in gruppo è parte della prova orale d’esame e consente allo studente di mostrare le proprie abilità comunicative.
    Capacità di apprendere in modo autonomo
  • Per stimolare la capacità di apprendere in modo autonomo, allo studente è richiesto di approfondire specifici argomenti oppure è invitato a partecipare a seminari tenuti da altri docenti, interni o in visita al dipartimento, sui quali lo studente deve poi presentare durante le lezioni, e riportare in sede d’esame.

Programma

Introduzione (ore 3)

  • Scenario Cyber
  • Security Life Cycle
  • Secure Software Application
    Concetti fondamentali (ore 5)
  • Asset
  • Threat: Modellazione delle minacce e Threat Hunting
  • Threat Actors/Agent
  • Threat Intelligence
  • Vulnerabilità
  • Rischio
  • Exploit
  • Attacco
  • CIA Triade: Confidenzialità, Integrità e Disponibilità
  • CVE (Common Vulnerabilities and Exposure)
  • CVSS (Common Vulnerabilities Score System)
  • Attacchi alla sicurezza: Attacchi Passivi, Attacchi attivi, Mitigazione e Controllo
    Access Control (ore 2)
  • Subject e Object
  • Processi
  • Tipologie di Access Control
  • Modelli di Access Control
    Cyber Kill Chain (ore 3)
  • Fasi della Kill Chain: Reconnaissance, Weaponization, Delivery, Exploit, Installation, Command & Control
  • Indicatori Kill Chain: Atomico, Computed, Behavioral
    Red Team (ore 4 + 1 esercitazione)
  • Penetration Testing: Black Box, White Box, Grey Box
  • Network Penetration Testing
  • Application Penetration Testing
  • Web Application Penetration Testing
  • Physical Penetration Testing
  • Social Engineering Testing
  • Vulnerability Assessment: Pianificazione e Fasi
    Blue Team (ore 4 + 1 esercitazione)
  • Security Operation Centre (SOC): Struttura, Funzioni, Responsabilità e Ruoli, Modelli, Security Monitoring System, Servizi
  • Computer Security Incident Response Team (CSIRT): Struttura, Funzioni, Servizi
  • Application Penetration Testing
  • Web Application Penetration Testing
  • Physical Penetration Testing
  • Social Engineering Testing
  • Vulnerability Assessment: Pianificazione e Fasi
    Sicurezza Organizzativa (ore 4 + 1 esercitazione)
  • Ciclo di vita della Sicurezza: Funzioni: Identify, Protect, Detect, Respond e Recover; Controlli essenziali di Cybersecurity
  • Unità Organizzative di Sicurezza
    MITRE ATT&CK (ore 4 + 1 esercitazione)
  • Tattiche e Tecniche
  • Threat Based Model
  • Casi d’uso: Adversary Emulation, Red Teaming, Behavioral Analytics Development, Defensive Gap Assessment, SOC Maturity Assessment, Cyber Threat Intelligence Enrichment
  • Domini tecnologici
    Sviluppo del software orientato alla privacy (ore 5 + 2 esercitazione)
  • General Data Protection Regulation (GDPR)
  • Privacy by Design and by Default
  • Data Protection
  • Privacy Knowledge Base: Principi della Privacy by Design, Strategie di progettazione orientate alla Privacy, Privacy Patterns, Vulnerabilità, Contesto: Requisiti Architetturali, Casi d’uso e scenari, Privacy Enhancing Technologies
  • Sviluppo del software orientato alla privacy (POSD: Privacy Oriented Software Development):
    Fasi per lo sviluppo di software orientato alla privacy (Forward)
    Fasi per la reingegnerizzazione di software (Backward)
  • Vulnerabilità: Access Violation, Access Control: Authorization Bypass, Indirect Access to Sensitive Data, Command Injection, Cookie Security: HTTPOnly not Set, Insufficient Data Protection, Insecure Storage, Privacy Violation, Credential Management
    Security by Design (ore 4 + 1 esercitazione)
  • Privacy vs Security
  • Principi della Security by Design
  • NIS2 (Network and Information Security)
  • Cybersecurity Act
  • DORA (Digital Operational Resilience Act)
    Vulnerabilità delle Web Application e Security Flaws (ore 3 + 1 esercitazione)
  • OWASP Top 10
  • Threat Modeling e Application Security Risks
    Sicurezza Applicativa (ore 5 + 4 esercitazione)
  • Vulnerabilità o Buffer overflows o Race Conditions o Input validation attacks o Authentication attacks o Authorization attacks o Cryptographic attacks o SQL Injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSFR) o Brute Force
  • Application Security Challenges
  • Secure Software Development Life Cycle (SSDLC)
  • Responsive Security Environment
  • Application Security Tools
  • API Security
    AI Security (ore 8 + 2 esercitazione)
  • Sicurezza dei sistemi basati su AI
  • AI Act
  • Tipologie di Attacco
  • Tecniche di difesa
  • MITRE ATLAS
  • Caso di studio (ore 2 + 1 esercitazione)

Modalità d'esame

La verifica dei risultati formativi raggiunti avviene durante l’esame finale, che prevede:

  • Un colloquio orale in cui si presenta e si discute il progetto sviluppato in gruppo e si verificano le competenze acquisite durante il corso e le capacità espositive dello studente.
    Per gli studenti frequentanti sono previste le seguenti facilitazioni:
  • Bonus punteggio a valere sulla valutazione del progetto per gli studenti che svolgono positivamente le esercitazioni sul progetto/caso di studio.

Testi di riferimento

Omar Santos, Joseph Muniz, Stefano De Crescenzo, “CCNA Cyber Ops SECFND 210-250”, Cisco Systems; Har/Psc edizione (3 aprile 2017)

Codice insegnamento P526353333

URBAN SECURITY 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Il corso si colloca nel più ampio contesto delle tematiche legate alle tecnologie dell’informazione applicate alla sicurezza. Strutturato come corso specialistico, si concentra in particolare sulle potenzialità e sulle…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si colloca nel più ampio contesto delle tematiche legate alle tecnologie dell’informazione applicate alla sicurezza. Strutturato come corso specialistico, si concentra in particolare sulle potenzialità e sulle questioni aperte relative alla sicurezza urbana, analizzando le tecnologie allo stato dell’arte nel settore, i fondamenti teorici su cui esse si basano e avviando lo studente allo sviluppo di applicazioni che impiegano tali tecnologie e conoscenze.
Obiettivi del corso:

  • comprensione teorica delle dinamiche sottostanti alle problematiche di sicurezza urbana
  • comprensione teorica e pratica delle tecnologie allo stato dell’arte utilizzate per le applicazioni nell’ambito della sicurezza urbana
  • capacità di analisi autonoma nella progettazione e nell’implementazione di soluzioni ai problemi di sicurezza urbana
  • capacità di analizzare i dati e di esporre il lavoro prodotto
  • Conoscenza delle tematiche fondamentali del corso di studio, ovvero inerenti alla sicurezza urbana
  • Conoscenza tecnica e pratica delle tecnologie utilizzate nel campo della sicurezza urbana
  • Sviluppo algoritmico di soluzioni tecnologiche
  • Implementazione con codice sorgente dei suddetti algoritmi

Autonomia di giudizio

  • Sviluppo di capacità analitiche e critiche nella consultazione dei materiali di ricerca disponibili, acquisendo consapevolezza dello stato dell’arte in uno specifico ambito di ricerca
  • Individuazione dei problemi che incidono su uno specifico ambito di ricerca
  • Sviluppo di soluzioni realistiche ed efficaci rivolte ai problemi sopra citati
  • Capacità di analisi quantitativa e qualitativa dei risultati ottenuti.
    Abilità comunicative
  • Capacità organizzative ed espositive del materiale di ricerca autoprodotto, con annessa esposizione interpretativa dei risultati ottenuti
    Capacità di apprendimento
  • Sviluppo della capacità di individuare le questioni sensibili in un settore tecnologico di interesse
  • Capacità di sviluppare e implementare soluzioni adeguate per rispondere alle problematiche in corso in un settore tecnologico
  • Comprensione del proprio livello di competenza e conseguente azione compensativa attraverso la ricerca critica di informazioni e conoscenze provenienti dal mondo della ricerca

Programma

  • Concetti di base di Probabilità e Statistica
  • Concetti di base di Intelligenza Artificiale: CNN, RNN
  • Concetti di base sugli Indici di Rischio Urbano
  • Introduzione al concetto di rischio nel contesto urbano
  • Concettualizzazione del sistema urbano
  • Caratteristiche dinamiche e caratteristiche statiche
  • Tecnologie applicate alla sicurezza urbana
    Laboratorio:
    È previsto lo sviluppo di una soluzione a un problema pratico di sicurezza urbana, che sarà presentata, con i relativi risultati, al docente in sede d’esame. In questo contesto sono previste le seguenti attività:
  • Ricerca sullo stato dell’arte e individuazione dei problemi attuali nel contesto della Sicurezza Urbana
  • Sviluppo di soluzioni applicate alla Sicurezza Urbana
  • Sviluppo di codice per l’implementazione delle soluzioni di cui sopra
  • Esposizione critica dei risultati ottenuti

Modalità d'esame

È previsto un esame orale. Lo studente dovrà presentare il seguente materiale esplicativo del proprio lavoro a supporto dell’esame orale:

  • Un documento PDF che funga da relazione del lavoro svolto, corredato di ogni dettaglio esplicativo dello stesso, dalle premesse teorico-pratiche allo sviluppo del lavoro pratico, fino alla raccolta e all’analisi dei risultati ottenuti
  • Una presentazione PowerPoint dei contenuti raccolti nella relazione PDF, attraverso la quale lo studente possa condurre l’esposizione orale del lavoro svolto al docente.
  • Il codice sorgente dell’implementazione del lavoro svolto, da discutere con il docente.
    La valutazione finale è espressa in trentesimi.

Testi di riferimento

L’intero apporto di conoscenze del corso viene trasmesso allo studente tramite contenuti multimediali ad hoc, in lingua inglese, forniti dal docente.

Codice insegnamento P277711311

Usable Privacy And Security 1° anno · 2° semestre · 9 CFU · INFO-01/A · 0 file
ARTIFICIAL INTELLIGENCE FOR SECURITY 2° anno · 6 CFU · ING-INF/05 · 0 file

Il corso si propone di fornire gli strumenti algoritmici per lo sviluppo di competenze teoriche e metodologiche in merito a tecniche di Intelligenza Artificiale che possono essere usate a supporto della sicurezza dei…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di fornire gli strumenti algoritmici per lo sviluppo di competenze teoriche e metodologiche in merito a tecniche di Intelligenza Artificiale che possono essere usate a supporto della sicurezza dei sistemi

La classe acquisirà l’abilità di elaborare cyber dati con tecniche di Intelligenza Artificiale con l’obiettivo di scoprire cyber minacce. Si focalizzerà l’attenzione su tecniche di machine learning supervisionate e non e si forniranno i concetti base del deep learning.

La classe sarà in grado di utilizzare la conoscenza acquisita per: a) selezionare la tecnica di Intelligenza Artificiale adatta a risolvere un problema di cybersecurity; b) adottare e adattare l’approccio di Intelligenza Artificiale selezionato per risolvere un problema di cybersecurity; c) valutare i risultati conseguiti.

Autonomia di giudizio
La classe acquisterà l’abilità di analizzare i cyber dati con tecniche di Intelligenza Artificiale con l’obiettivo di scoprire cyber minacce. Durante l’esame lo studente dovrà discutere gli approcci di Intelligenza Artificiale oggetto del programma e risolvere un problema di cybersecurity applicando un approccio di Intelligenza Artificiale.
Abilità comunicative
La classe migliorerà le sue conoscenze rispetto alla capacità di usare tecniche di Intelligenza Artificiale in problemi di cybersecurity. Tali conoscenze saranno valutate durante l’esame
Capacità di apprendere in modo autonomo
La classe acquisirà l’abilità di leggere articoli scientifici su approcci di Intelligenza Artificiale pubblicati in conferenze e riviste internazionali, come anche progettare nuove funzionalità di Intelligenza Artificiale per sistemi commerciali di cyber difesa.

Programma

Teoria:
●Introduzione all’Intelligenza Artificiale compresi approcci task di machine learning e problemi di cybersecurity (10 ore)
●Selezione e validazione di modelli (2 ore)
●Tecniche di classificazione: Alberi di decisione, Prisms, k-nearest neighbouring, Nayve Bayes, Random forest, SVM, Stacking, Boosting (Adaboost),, Ensemble) (9 ore)
●
Tecniche di clustering (k-means, k-medod, DBScan, clustering agglomerativo) (5 ore)
●
Tecniche di scoperta di associazioni (Apriori, FPGrowth) (3 ore)
●Introduzione al Deep Learning (Feed-Forward Neural Network, Autoencoder) (3 ore)
Laboratorio: Esercizi sull’applicazione di tecniche di classificazione, clustering e scoperta di associazione, programmazione in Python usando librerie di sklearn ed Api funzionali Keras (15 ore)

Modalità d'esame

Prova scritta + Progetto
●Prova scritta in aula, 3 domande aperte su teoria ed esercizi in merito ad argomenti del sillabo; tempo assegnato 90 minuti; votazione massima 33/33. La prova scritta si ritiene superata se lo studente consegue una votazione maggiore uguale di 18/33. È consentito l’uso della calcolatrice tradizionale durante la prova (no pc, smartphone, tablet).
●Progetto: la consegna deve avvenire con weTransfer indirizzato alla email istituzionale del docente di riferimento del corso entro 24 ore prima la discussione del progetto e deve includere il codice prodotto in Python, il report dei risultati e la presentazione power point dell’attività di progetto svolta. Durante la discussione del progetto lo studente ha 10 minuti per presentare il progetto con le slide power point e dopo è chiamato a rispondere a domanda del docente in merito al modo in cui è stato scritto il codice corrispondente allo sviluppo del progetto.
Il codice della parte comune del progetto può essere sviluppato in gruppo (massimo 3 componenti), ma la presentazione power-point del progetto è distinta per ogni studente. La discussione del progetto è individuale.
Inoltre, il progetto prevede un'attività assegnata a ciascuno studente (non svolta in gruppo). Lo studente dovrà contattare il docente per avere l'assegnazione dell'attività personale.
Il progetto può essere discusso solo dopo il superamento della prova scritta.
La traccia del progetto è assegnata durante le lezioni di laboratorio (e contestualmente pubblicata su ADA).
Il progetto si ritiene superato se lo studente consegue una votazione maggiore uguale di 18/33 all’atto della sua discussione.
La prova scritta e il progetto hanno validità nell'AA corrente.
Prova scritta e progetto sono validi nel corrente anno accademico.

Testi di riferimento

Teoria:
Max Bramer, Principles of Data Mining. Terza edizione, Springer, 2016 (pagine 1-187, 209-328)
Aggarwal, Charu C. Neural Networks and Deep Learning A Textbook, 2018 https://www.springer.com/gp/book/9783319944623 (pagine 1-167)
Laboratorio:
Raschka, Sebastian - Mirjalili, Vahid Python machine learning: machine learning and deep learning with Python, scikit-learn, and TensorFlow 2 / Sebastian Raschka, Vahid Mirjalili. - 3. ed. - Birmingham ; Mumbai : Packt, 2019. - xxi, 741 p. : ill. ; 24 cm
Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.

Codice insegnamento P236545362

Advanced Scientific English 2° anno · 3 CFU · 0 file
BIG DATA 2° anno · 6 CFU · INF/01 · 0 file

Il corso mira a fornire una visione organica dei principi, delle metodologie e delle tecnologie per la gestione e l'analisi di grandi volumi di dati eterogenei, distribuiti e potenzialmente rumorosi. L'attenzione e…

Scheda dell'insegnamento

Obiettivi formativi

Il corso mira a fornire una visione organica dei principi, delle metodologie e delle tecnologie per la gestione e l'analisi di grandi volumi di dati eterogenei, distribuiti e potenzialmente rumorosi. L'attenzione e rivolta sia alle architetture di memorizzazione ed elaborazione scalabile, sia alla progettazione metodologica del processo di analisi.
Al termine del corso, lo studente sara in grado di:

  • comprendere le principali caratteristiche dei Big Data e le relative esigenze di scalabilita;
  • scegliere modelli e tecnologie adeguati per la memorizzazione, l'elaborazione e l'analisi dei dati;
  • progettare un processo completo di Knowledge Discovery secondo la metodologia CRISP-DM;
  • applicare metodi di analisi statistica, data mining e machine learning a dati di grandi dimensioni e a flussi di dati;
  • sviluppare e discutere una soluzione di Big Data Analytics basata sulle tecnologie trattate nel corso.

Lo studente acquisira conoscenze e capacita di comprensione relative a:

  • caratteristiche, opportunita e criticita dei Big Data;
  • principi di scalabilita, elaborazione distribuita e organizzazione dei dati;
  • modelli NoSQL e database a grafo;
  • fasi del processo KDD e metodologia CRISP-DM;
  • principali tecniche di analisi delle associazioni, apprendimento bayesiano ed ensemble learning;
  • architettura e modelli di programmazione di Apache Spark;
  • metodi fondamentali per l'analisi di flussi di dati, incluso il concept drift.

Lo studente sara in grado di:

  • analizzare i requisiti di un problema di Big Data Analytics;
  • selezionare modelli di memorizzazione e tecnologie di elaborazione coerenti con dati e carico applicativo;
  • progettare un processo completo, dalla comprensione del problema alla valutazione e presentazione dei risultati;
  • utilizzare Cassandra e l'ecosistema Spark per realizzare semplici pipeline di gestione e analisi;
  • applicare tecniche di preparazione e analisi dei dati e valutarne criticamente risultati e limiti.

Autonomia di giudizio - Descrittore 3
Lo studente sapra confrontare soluzioni alternative, motivare la scelta di modelli, metodi e tecnologie e valutarne l'adeguatezza rispetto al dominio, ai dati disponibili, ai requisiti di scalabilita e ai vincoli applicativi.
Abilita comunicative - Descrittore 4
Lo studente sapra descrivere con chiarezza il processo di analisi, documentare le scelte effettuate e presentare in modo comprensibile e credibile i risultati, utilizzando una terminologia tecnica appropriata e rendendo il processo trasparente e riproducibile.
Capacita di apprendimento - Descrittore 5
Lo studente sviluppera la capacita di approfondire autonomamente nuovi metodi e tecnologie di Big Data Analytics, leggere documentazione tecnica e articoli scientifici e trasferire i principi appresi a nuovi domini, dati e piattaforme. Making judgements - Descriptor 3
Students will be able to compare alternative solutions, justify the selection of models, methods, and technologies, and evaluate their suitability with respect to the domain, available data, scalability requirements, and application constraints.
Communication skills - Descriptor 4
Students will be able to clearly describe the analytics process, document the adopted choices, and present the results in an understandable and credible manner, using appropriate technical terminology and making the process transparent and reproducible.
Learning skills - Descriptor 5
Students will develop the ability to independently study new Big Data Analytics methods and technologies, read technical documentation and scientific papers, and transfer the acquired principles to new domains, datasets, and platforms.

Programma

1. Introduzione ai Big Data
Definizioni; motivazioni e contesti applicativi; caratteristiche e dimensioni dei Big Data; scalabilita; estrazione di valore dai dati; il quarto paradigma della ricerca scientifica.
2. Modellazione e memorizzazione dei Big Data
Modello ad aggregati. Modelli key-value, documentale e column-family. BigTable e DynamoDB. Database a grafo: concetti, interrogazione e organizzazione dei dati.
3. Knowledge Discovery in Databases
Contesto e definizioni; processo KDD; metodologia CRISP-DM: business understanding, data understanding, sampling, feature selection, trasformazione e costruzione delle caratteristiche. Analisi fattoriale. Rappresentazione dei dati e dei modelli; costruzione e valutazione dei modelli; PMML.
4. Correlazione e associazione tra variabili
Correlazione tra due o piu variabili quantitative. Associazione tra variabili qualitative: test chi-quadro, coefficiente lambda e coefficiente di correlazione di Spearman. Regole associative: Apriori e FP-Growth.
5. Framework bayesiano ed Ensemble Learning
Apprendimento MAP; classificatore Bayes ottimo. Metodi ensemble: Bagging, Boosting e Stacking.
6. Framework di programmazione per la Big Data Analytics
Paradigma MapReduce. Apache Spark: RDD, DataFrame e Dataset; Spark SQL, Spark MLlib e Spark Streaming/Structured Streaming.
7. Apprendimento da flussi di dati
Motivazioni e definizioni; risposte approssimate; Count-Min Sketch; stima di statistiche su finestre e campionamento; Very Fast Decision Trees; concept drift.
Attivita di laboratorio
Cassandra: introduzione, architettura e modello logico. Esercitazioni pratiche con Spark, Spark MLlib e Spark Streaming.

Modalità d'esame

Struttura dell'esame
L'esame e composto da una prova orale e da una prova pratica. La prova orale verifica la conoscenza e la comprensione di tutti gli argomenti affrontati durante il corso. La prova pratica consiste nella discussione orale di un piccolo elaborato e verifica la capacita di progettare e realizzare un processo di Big Data Analytics, preferibilmente secondo la metodologia CRISP-DM e mediante una o piu tecnologie trattate nel corso.
Le due prove sono indipendenti e possono essere sostenute separatamente. Le valutazioni conseguite sono conservate fino al termine dell'anno accademico. Entrambe le prove sono valutate in trentesimi; il voto finale e ottenuto mediante la media delle due valutazioni.
Criteri di valutazione
La valutazione considera:

  • accuratezza e chiarezza nell'esposizione delle tecniche e dei fondamenti teorici;
  • capacita di progettare un'architettura e un processo completo di analisi;
  • correttezza tecnica dell'elaborato e appropriatezza delle tecnologie selezionate;
  • capacita di motivare le scelte compiute rispetto ad alternative possibili;
  • chiarezza comunicativa, capacita di astrazione, ragionamento per analogia e adattamento della soluzione al dominio e ai dati disponibili.

Testi di riferimento

  • Mayer-Schönberger e Cukier, Big Data: A Revolution That Will Transform How We Live, Work, and Think, John Murray, 2013.
  • Sadalage e Fowler, NoSQL Distilled, Addison-Wesley, 2012.
  • Aggarwal, Data Mining: The Textbook, Springer, 2015.
  • Mitchell, Machine Learning, McGraw-Hill, 1997.
  • Roiger e Geatz, Introduction to Data Mining, McGraw-Hill, 2003.
  • Azzalini e Scarpa, Analisi dei dati e data mining, Springer, 2004.
    Articoli scientifici, slide e materiali di laboratorio sono disponibili su ADA.

Codice insegnamento P038059475

Final Examination 2° anno · 20 CFU · 0 file
PROJECT MANAGEMENT FOR SECURITY 2° anno · 6 CFU · ING-INF/05 · 0 file
SEMANTICS IN INTELLIGENT SYSTEMS 2° anno · 0 file
SERIOUS GAMES FOR CYBER-SECURITY 2° anno · 6 CFU · INF/01 · 0 file

Esistono diversi fattori di rischio per la sicurezza dei sistemi, uno degli anelli più deboli è il fattore umano. La scarsa conoscenza delle minacce a cui si è esposti e la mancata formazione degli individui può…

Scheda dell'insegnamento

Obiettivi formativi

Esistono diversi fattori di rischio per la sicurezza dei sistemi, uno degli anelli più deboli è il fattore umano. La scarsa conoscenza delle minacce a cui si è esposti e la mancata formazione degli individui può amplificare i danni degli attacchi informatici. Il corso ha l’obiettivo di illustrare i processi di progettazione e realizzazione di serious game per acquisire solide conoscenze relative alla sicurezza dei sistemi e limitare le vulnerabilità causate dagli utenti.

  • Acquisire conoscenza relativamente ai metodi per progettare esperienze di apprendimento usando l’approccio del gioco
  • Acquisire conoscenza riguardo all’integrazione degli elementi del gioco (meccaniche, dinamiche, regole e estetica) per veicolare in maniera efficace il tema della cybersecurity
  • Acquisire conoscenza relativamente alla progettazione e produzione di un serious game come prodotto multimediale
  • Saper progettare e sviluppare un serious game per la cybersecurity
  • Saper combinare l’elemento di gioco e il trasferimento di conoscenza relativo alla cybersecurity

Autonomia di giudizio
Un importante obiettivo del corso è che lo studente
raggiunga la capacità di integrare la conoscenza, gestire la complessità e prendere decisioni durante la progettazione, lo sviluppo e la valutazione di un gioco serio.
I casi di studio sono un mezzo per allenare gli studenti a prendere decisioni. Questa capacità sarà valutata dal docente e contribuisce al voto finale, che tiene conto anche della partecipazione attiva dello studente alle discussioni in classe e alla presentazione dei casi studio.
Abilità comunicative
Capacità di comunicare i risultati ottenuti a interlocutori specialisti e non, così come lo sviluppo di capacità collaborative indispensabili per il lavoro di gruppo.
Capacità di apprendere in modo autonomo
Raggiungere l'autonomia nello studio e nell'identificazione e definizione di giochi per sostenere l'apprendimento nella cybersecurity. Saper applicare il serious game in contesti diversi dalla cybersecurity.

Programma

Part I: Serious games fundamentals
1. Designing Learning Experience (10 ore)
1.1. Learning element: motivation, engagement, and experience
1.2. Building experiences with games
1.3. Intrinsically experiences in a game
2. What is a Serious game (5 ore)
2.1. Play and game
2.2. Play as indispensable element of learning
2.3. Games definition
2.4. Making game design choices that support learning
3. Pedagogy and games (3 ore)
3.1. The impact of pedagogic approaches on educational game
3.2. Learning theories
Part II: Design Serious games for cyber-security
4. Designing a game (4 ore)
4.1. Learning objectives and gaming essence
4.2. Gamification in educational context
4.3. Game aspects
4.4. Designing tips: brainstorming, prototypes, iterative approach
4.5. Game elements
5. The creation process (2 ore)
5.1. The game space
5.2. The rules
6. Game Mechanics and Aesthetics (6 ore)
6.1. The flow state
6.2. Decision making
6.3. Chance
6.4. Skills
6.5. Collaboration and competition
6.6. Linking fun to learning
6.7. Linking game mechanics to learning
6.8. Aesthetics
7. The target audience (4 ore)
7.1. Player taxonomies
7.2. Player learning styles
Part III: Serious games LAB
8. International research in serious games for cybersecurity (5 ore)
9. Serious games for cybersecurity examples (7 ore)
10. The creative process to create a serious game (5 ore)
11. Describe a document to plan and design a serious game for cybersecurity (3 ore)

Modalità d'esame

La verifica dei risultati formativi raggiunti avviene tramite:

  • Caso di studio Gli studenti organizzati in piccoli gruppi (da 2 a 4 componenti) dovranno progettare e realizzare un serious game utilizzando le metodologie illustrate a lezione. Il caso di studio, inoltre, deve essere accompagnato da un documento che illustri tutti gli elementi tipici di un serious game. La consegna del caso di studio deve avvenire tramite la piattaforma di e-learning ADA e entro 10 giorni dalla data fissata per ogni singolo appello. La valutazione del caso di studio, in trentesimi, terrà conto delle competenze acquisite dagli studenti e dalla loro capacità di applicarle a casi reali. Il voto acquisito per il caso di studio valido per tutti gli appelli dell’a.a. Se il caso di studio è valutato insufficiente gli studenti non potranno accedere alla prova orale.
  • Prova orale. Discussione orale del caso di studio in cui gli studenti dovranno dimostrare di saper illustrare il caso di studio e collegarlo alle conoscenze teoriche illustrate durante le lezioni frontali. La prova orale è singola ma è preferibile che il gruppo di studenti sostenga l’esame orale nello stesso appello. La prova orale sarà valutata in 30simi e si considera superata se il voto è maggiore di 18.
    Per gli studenti che frequentano le lezioni, i progetti/studi di casi sono svolti durante il semestre di lezione. Gli studenti che non intendono frequentare le lezioni devono contattare l'insegnante all'inizio del semestre in modo che possano organizzare la discussione e realizzazione dei progetti/casi di studio.
    < 18 insufficiente
    Conoscenze frammentarie e superficiali dei contenuti, errori nell’applicare i concetti, descrizione carente.
    18 - 20
    Conoscenze dei contenuti sufficienti ma generali, descrizione semplice, incertezze nell’applicazione di concetti teorici.
    21 - 23
    Conoscenze dei contenuti appropriate ma non approfondite, capacità di applicare i concetti teorici, capacità di presentare i contenuti in modo semplice.
    24 - 25
    Conoscenze dei contenuti appropriate ed ampie, discreta capacità di applicazione delle conoscenze, capacità di presentare i contenuti in modo articolato.
    26 - 27
    Conoscenze dei contenuti precise e complete, buona capacità di applicare le conoscenze, capacità di analisi, descrizione chiara e corretta.
    28 - 29
    Conoscenze dei contenuti ampie, complete ed approfondite, buona applicazione dei contenuti, buona capacità di analisi e di sintesi, descrizione sicura e corretta.
    30 -30 e lode
    Conoscenze dei contenuti molto ampie, complete ed approfondite, capacità ben consolidata di applicare i contenuti, ottima capacità di analisi, di sintesi e di collegamenti interdisciplinari, padronanza di descrizione.

Testi di riferimento

Kalmpourtzis, G. (2018). Educational Game Design Fundamentals: A journey to creating intrinsically motivating learning experiences. AK Peters/CRC Press.
Nel corso delle lezioni il docente illustrerà i concetti con l’ausilio di slide che sintetizzano i contenuti del corso. Le slide saranno rese disponibili al termine di ogni lezione sulla piattaforma ADA del dipartimento (v. sopra 'sede virtuale').
Sulla piattaforma ADA sono disponibili, inoltre, tutte le indicazioni per realizzare il caso di studio, alcuni esempi di documentazione di casi di studio degli a.a. precedenti e il template per la realizzazione del documento di progettazione.
Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.

Codice insegnamento P361502490

SOFTWARE ENGINEERING FOR AI-ENABLED SYSTEMS 2° anno · 6 CFU · INF/01 · 0 file

Obiettivo primario del corso è fornire agli studenti conoscenze teoriche e pratiche sulla costruzione di componenti software basati su tecniche di machine learning (ML), assicurandone la qualità e la diretta…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivo primario del corso è fornire agli studenti conoscenze teoriche e pratiche sulla costruzione di componenti software basati su tecniche di machine learning (ML), assicurandone la qualità e la diretta integrabilità in produzione, all'interno di sistemi abilitati dall’AI. A tale scopo, il corso illustra pratiche e strumenti di MLOps e ne mostra l’applicazione in sessioni di laboratorio iterative.

Il corso adotta la prospettiva dell’ingegneria del software per la costruzione di sistemi abilitati dall’intelligenza artificiale, illustrando come i componenti di machine learning rappresentino soltanto una parte di sistemi più ampi e complessi. Le lezioni presentano una metodologia, basata su tecniche e strumenti di Machine Learning Operations (MLOps), per tradurre un’idea di machine learning in un prodotto software scalabile, affidabile e manutenibile, mettendo a fuoco i vari aspetti relativi alla progettazione, all’implementazione, all’esercizio in produzione e all’assicurazione di qualità, oltre che le dinamiche di collaborazione tra sviluppatori e data scientist.

Gli studenti impareranno a utilizzare vari strumenti di MLOps per tradurre un modello di machine learning in un prodotto scalabile, affidabile e manutenibile.

  • Autonomia di giudizio: gli studenti conosceranno le sfide principali dell’ingegnerizzazione dei sistemi software basati sull’AI e impareranno a valutarne la qualità secondo criteri che vanno oltre l’accuratezza dei modelli.
  • Abilità comunicative: gli studenti svilupperanno capacità di comunicazione e collaborazione in gruppo, alternando momenti di lavoro individuale e collaborativo. Eserciteranno inoltre le abilità di presentazione e di documentazione tecnica.
    Capacità di apprendere in modo autonomo: gli studenti impareranno ad approfondire autonomamente concetti teorici ed evidenza empirica attraverso la lettura di articoli di ricerca e letteratura grigia.

Programma

Lezioni:

  • Introduzione e concetti fondamentali
  • Ingegneria dei requisiti per il Machine Learning (ML)
  • Controllo di versione per codice e dati
  • Tracciamento degli esperimenti di ML
  • Assicurazione della qualità per sistemi di ML
  • API per componenti di ML
  • Model Context Protocol (MCP)
  • Progettazione di sistemi basati su ML
  • Containerizzazione e orchestrazione
  • CI/CD per componenti di ML
  • Monitoraggio dei componenti di ML
    Esercitazioni e laboratori:
  • Pratiche e strumenti di MLOps

Modalità d'esame

  • Prova di laboratorio: project work finalizzato alla costruzione di una pipeline di ML riproducibile e alla trasformazione di un modello di ML da prototipo a componente software “production-ready”: testato, containerizzato, dotato di API e pronto per l’esercizio in ambiente cloud.
  • Prova orale: test orale delle conoscenze acquisite, con domande sui contenuti del corso.

Testi di riferimento

Testo principale:

  • Christian Kastner, Machine Learning in Production (https://mlip-cmu.github.io/book/)
    Altri testi suggeriti:
  • Emmanuel Ameisen. Building Machine Learning Powered Applications: Going from Idea to Product, O'Reilly Media, 2020, ISBN: 9781492045113.
  • Valliappa Lakshmanan, Sara Robinson, Michael Munn. Machine Learning Design Patterns: Solutions to Common Challenges in Data Preparation, Model Building, and MLOps. O'Reilly Media, 2020, ISBN: 9781098115784.
  • Chip Huyen. Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications. O’Reilly Media, 2022, ISBN: 9781098107963.
  • Chip Huyen. AI Engineering: Building Applications with Foundation Models. O’Reilly Media, 2025, ISBN: 9781098166304.
    Articoli di ricerca e letteratura grigia suggeriti:
  • F. Lanubile, S. Martinez-Fernandez and L. Quaranta, "Training Future Machine Learning Engineers: A Project-Based Course on MLOps" in IEEE Software, vol. 41, no. 02, pp. 60-67, 2024. doi: 10.1109/MS.2023.3310768
  • F. Lanubile, S. Martínez-Fernández and L. Quaranta, "Teaching MLOps in Higher Education through Project-Based Learning," ICSE 2023, Software Engineering Education and Training Track, pp. 95-100, doi: 10.1109/ICSE-SEET58685.2023.00015 (https://arxiv.org/abs/2302.01048v1)
  • Sato, Wider, Windheuser. “Continuous Delivery for Machine Learning” (https://martinfowler.com/articles/cd4ml.html)
  • D. Sculley et al., "Hidden technical debt in machine learning systems" NIPS'15
  • A. Vogelsang and M. Borg, "Requirements Engineering for Machine Learning: Perspectives from Data Scientists," REW 2019 (https://arxiv.org/abs/1908.04674)
  • M. Mitchell et al., 2019. “Model Cards for Model Reporting”. In Proceedings of the Conference on Fairness, Accountability, and Transparency (FAT* '19), doi: 10.1145/3287560.3287596 (https://arxiv.org/abs/1810.03993)
  • L. Quaranta, F. Calefato, and F. Lanubile. 2022. “Eliciting Best Practices for Collaboration with Computational Notebooks.” Proc. ACM Hum.-Comput. Interact. 6, CSCW1, Article 87 (April 2022), 41 pages, doi: 10.1145/3512934
  • M.T. Ribeiro, T. Wu, C. Guestrin, and S. Singh. "Beyond Accuracy: Behavioral Testing of NLP Models with CheckList." In Proceedings ACL, p. 4902–4912. (2020) (https://arxiv.org/abs/2005.04118)
  • J. Zhang, M. Harman, L. Ma and Y. Liu, "Machine Learning Testing: Survey, Landscapes and Horizons" in IEEE Transactions on Software Engineering, vol. , no. 01, pp. 1-1, 5555. doi: 10.1109/TSE.2019.2962027 (https://arxiv.org/pdf/1906.10742.pdf)
  • Jeremy Jordan. “A simple solution for monitoring ML systems” (https://www.jeremyjordan.me/ml-monitoring/)
    Raccolte di risorse online:
  • MLOps Primer (https://elvissaravia.substack.com/p/mlops-primer-2021)
  • Made With ML (https://madewithml.com/)

Codice insegnamento P476948640

Semantics in Intelligent Information Access 2° anno · 6 CFU · INF/01 · 0 file

Lo studente acquisirà la conoscenza dei fondamenti teorici della semantica e dei sistemi per l’accesso intelligente all’informazione e delle tecniche alla base dell’analisi e della progettazione e dello sviluppo di…

Scheda dell'insegnamento

Obiettivi formativi

Lo studente acquisirà la conoscenza dei fondamenti teorici della semantica e dei sistemi per l’accesso intelligente all’informazione e delle tecniche alla base dell’analisi e della progettazione e dello sviluppo di sistemi per l’accesso intelligente all’informazione basati sulla semantica.

Lo studente acquisirà conoscenze sui fondamenti della semantica e dei sistemi per l’accesso intelligente all’informazione. In particolare, lo studente sarà in grado di conoscere e comprendere:

  • gli aspetti teorici, metodologici e operativi della semantica con particolare riferimento ai principali livelli di rappresentazione dei contenuti;
  • le tecniche ed i principali framework open source per la semantica e per i sistemi per l’accesso intelligente all’informazione;
  • gli aspetti teorici, metodologici e operativi dei sistemi per l’accesso intelligente all’informazione e dell'indicizzazione e condivisione semantica delle informazioni;
  • gli aspetti teorici, metodologici e operativi dei sistemi di filtraggio delle informazioni e dei sistemi di raccomandazione;
  • le tecniche e i principali framework open source per la progettazione di sistemi di raccomandazione.

Lo studente sarà in grado di:

  • applicare le conoscenze sulla semantica e sui principali livelli di rappresentazione dei contenuti per affrontare problemi legati alla gestione e integrazione di dati non strutturati (testo) e sistemi per l’accesso intelligente all’informazione, anche in contesti nuovi, non familiari o interdisciplinari;
  • utilizzare le tecniche e le principali piattaforme per la semantica e la progettazione di sistemi di raccomandazione per sviluppare e valutare sistemi informatici complessi che richiedono la gestione e l'integrazione dei contenuti ed il filtraggio delle informazioni;
  • applicare le proprie competenze per individuare soluzioni efficaci a problemi complessi legati al trattamento dei contenuti (dati non strutturati) e al filtraggio delle informazioni, e per giustificare, supportare e argomentare adeguatamente le proprie scelte.

Autonomia di giudizio
Lo studente sarà in grado di:
● formulare la propria valutazione e definire un giudizio critico, supportandolo all'interno del gruppo di lavoro con cui il task prescelto è stato sviluppato nel caso di lavoro in collaborazione;
● integrare in modo autonomo le conoscenze necessarie nonché gestire la complessità derivante da informazioni limitate o incomplete a disposizione;
● prendere decisioni e individuare soluzioni nelle aree della semantica e dei sistemi per l’accesso intelligente all’informazione tenendo conto delle implicazioni sociali ed etiche e delle responsabilità professionali che implicano.
Abilità comunicative
Lo studente sarà in grado di:

  • scegliere la forma ed i mezzi di comunicazione più adeguati agli interlocutori, specialisti e non;
  • comunicare efficacemente informazioni, idee, problemi e soluzioni legate alla semantica ed ai sistemi per l’accesso intelligente all’informazione.
    Capacità di apprendere in modo autonomo
    Lo studente acquisirà la capacità di:
  • sviluppare un alto livello di autonomia nell'apprendimento delle discipline della semantica e dei sistemi per l’accesso intelligente all’informazione;
  • tenersi aggiornato sull'evoluzione delle discipline della semantica e dei sistemi per l’accesso intelligente all’informazione attingendo a fonti bibliografiche;
  • proseguire il proprio percorso formativo intraprendendo studi di più alto livello.

Programma

La numerazione degli argomenti ne indica l’ordine di presentazione e di studio.
Inoltre, l’indice di ogni argomento è utile per individuare i relativi contenuti nei testi di riferimento.
1. Motivazioni, Semantica e Sistemi di Accesso all’Informazione
Ore lezione frontale: 4
2. Rappresentazione dei Contenuti: Semantica Endogena ed Esogena
Ore lezione frontale: 4
3. Recommender Systems: approcci principali, metodologie di valutazione ed hands-on
Ore lezione frontale: 9
Ore esercitazione in aula: 10
4. Semantics-aware Recommender Systems: approcci basati su knowledge graph, approcci multimodali, approcci basati su large language model
Ore lezione frontale: 5
Ore esercitazione in aula: 5
5. Metodologie Avanzate: Recommender Systems Conversazionali, Agentic Recommender Systems
Ore lezione frontale: 5
Ore esercitazione in aula: 5
6. Approcci Trasversali: Recommender Systems per il Social Good, tecniche di spiegazione per sistemi di raccomandazione, metodologie Text-to-SQL
Ore lezione frontale: 5
Ore esercitazione in aula: 10

Modalità d'esame

Sessioni d'esame (al termine dell’insegnamento).
L'esame consiste in una prova orale relativa alla presentazione e discussione di una soluzione per uno dei task, scelto dallo studente tra quelli proposti dai docenti durante le lezioni.
La discussione della prova è individuale, mentre lo sviluppo del task può essere svolto in gruppi di massimo tre studenti. Nel caso di lavoro in collaborazione, ogni studente discuterà uno specifico aspetto del task prescelto.
La durata della prova varia a seconda del tipo di task scelto e non supera i 30 minuti (comprensivi di presentazione e domande). La documentazione a supporto del task dovrà essere inviata entro sette giorni dalla data dell'appello.
Il tipo di valutazione adottato è il voto in trentesimi.
L'esito è reso disponibile tramite la piattaforma online esse3.
La discussione della prova è individuale, mentre lo sviluppo del task può essere svolto in gruppi di massimo tre studenti. Nel caso di lavoro in collaborazione, ogni studente discuterà uno specifico aspetto del task prescelto.
La durata della prova varia in base al tipo di task scelto e non supera i 45 minuti.
Il tipo di valutazione adottato è il voto in trentesimi.
L'esito è reso disponibile tramite la piattaforma online Esse3.

Testi di riferimento

[Semantics] P. Lops, C. Musto, F. Narducci, G. Semeraro, Semantics in Adaptive and Personalised Systems: Methods, Tools and Applications, Springer Nature, 2019. ISBN: 978-3-030-05618-6.
[RecSys] Dietmar Jannach, Markus Zanker, Alexander Felfernig, Gerhard Friedrich, Recommender Systems: An Introduction. Cambridge University Press, 2010. ISBN: 0521493366.
[HandBook] F. Ricci, L. Rokach, B. Shapira (Eds.), Recommender Systems Handbook. 3rd Edition, Springer, 2022. ISBN: 978-1-0716-2197-4
[RecSoGood] Ludovico Boratto, Allegra De Filippo, Elisabeth Lex, Noemi Mauro, Francesca Maridina Malloci, Francesco Ricci (Eds.), Recommender Systems for Sustainability and Social Good, 2025. ISBN: 978-3-032-13341-0
Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.

Codice insegnamento 65407

Stage 2° anno · 7 CFU · 0 file
Cyber-Security Capstone Project 6 CFU · ING-INF/05 · 0 file

L’insegnamento di Cyber-Security Capstone Project si propone di fornire strumenti e tecniche per l’esecuzione di attività di offesa e difesa in campo cybersecurity. Ciò include lo sviluppo di un progetto che permetta…

Scheda dell'insegnamento

Obiettivi formativi

L’insegnamento di Cyber-Security Capstone Project si propone di fornire strumenti e tecniche per l’esecuzione di attività di offesa e difesa in campo cybersecurity. Ciò include lo sviluppo di un progetto che permetta di applicare tali strumenti in contesti IT, OT e IoT e che tenga in considerazione gli attuali modelli di AI alla base di tali sistemi.

  • Il principale risultato di apprendimento atteso è la conoscenza relativa a processi, metodi e tecniche per l’analisi e la modellazione di minacce cyber e relative mitigazioni.
  • Lo studente acquisisce tale conoscenza sia attraverso le lezioni frontali e la partecipazione a seminari tematici erogati durante il corso, sia attraverso esercitazioni che gli consente di mettere in pratica e verificare quanto appreso, acquisendo così consapevolezza della capacità di comprensione e di come migliorare l’applicazione delle tecniche apprese.
  • Per consentire allo studente di applicare le conoscenze per l’identificazione e la gestione delle vulnerabilità, si svolgono in aula sia esercitazioni individuali che collettive.
  • Allo studente è richiesto di sviluppare un progetto, nel quale è necessario applicare alcune delle tecniche presentate in aula, dopo aver selezionato quelle più appropriate per il caso specifico. Questo progetto contribuisce alla valutazione finale dello studente e quindi al voto finale d’esame.

Autonomia di giudizio

  • Acquisire una significativa autonomia nel valutare i pericoli inerenti alle minacce cyber di sistemi informatici.
  • Acquisire la capacità di lavorare in team per la gestione delle minacce cyber. Le esercitazioni che si svolgono durante il corso contribuiscono al raggiungimento di tali competenze grazie anche alla discussione di tali scelte con il docente.
  • L’autonomia di giudizio è parte della valutazione finale dello studente e tiene conto delle discussioni avvenute durante le lezioni, delle esercitazioni e della presentazione del progetto.
    Abilità comunicative
  • Illustrare in modo chiaro ed efficace le conoscenze apprese, presentare casi applicativi ed esempi illustrativi.
  • La presentazione e discussione del progetto sviluppato in gruppo è parte della prova orale d’esame e consente allo studente di mostrare le proprie abilità comunicative.
    Capacità di apprendere in modo autonomo
  • Per stimolare la capacità di apprendere in modo autonomo, allo studente è richiesto di approfondire specifici argomenti oppure è invitato a partecipare a seminari tenuti da altri docenti, interni o in visita al dipartimento, sui quali lo studente deve poi presentare durante le lezioni, e riportare in sede d’esame.

Programma

Cyber-Social Security

  • Domini: Cyber, Informativo, Cognitivo e Fisico
  • Operazioni. Multi-Dominio
  • Impatti ed effetti di un attacco cyber-social
    Security Information and Event Management
  • Ciclo di vita della sicurezza
  • Strumenti e tecniche
    Security Orchestration Automation and Response
  • Contesto di applicazione
  • Strumenti e tecniche
    API Security
  • Vulnerabilità
  • Gestione del rischio
  • Identificazione delle minacce
    Adversarial Threat Landscape for Artificial-Intelligence Systems
  • Pattern di attacco
  • Tattiche
  • Tecniche di mitigazione
  • Strumenti ed esempi pratici
    Caso di studio
  • Introduzione caso di studio
  • Esempi e best practices
  • Progettazione caso di studio

Modalità d'esame

La verifica dei risultati formativi raggiunti avviene durante l’esame finale, che prevede:

  • Un colloquio orale in cui si presenta e si discute il progetto sviluppato in gruppo e si verificano le competenze acquisite durante il corso e le capacità espositive dello studente.
    Per gli studenti frequentanti sono previste le seguenti facilitazioni:
  • Bonus punteggio a valere sulla valutazione del progetto per gli studenti che svolgono positivamente le esercitazioni sul progetto/caso di studio.

Testi di riferimento

  • Omar Santos, Joseph Muniz, Stefano De Crescenzo, “CCNA Cyber Ops SECFND 210-250”, Cisco Systems; Har/Psc edizione (3 aprile 2017)
    Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.

Codice insegnamento 64943

Ethics, Privacy And Security 6 CFU · IUS/01 · 0 file

Il corso si propone di fornire agli studenti della Laurea Magistrale in Computer Science una solida comprensione dei quadri normativi, etici e giuridici relativi alla sicurezza informatica e alla protezione dei dati…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di fornire agli studenti della Laurea Magistrale in Computer Science una solida comprensione dei quadri normativi, etici e giuridici relativi alla sicurezza informatica e alla protezione dei dati personali, con particolare riferimento al contesto europeo e nazionale (es. GDPR, direttive sulla cybersecurity). L'obiettivo è formare professionisti in grado di progettare e gestire sistemi informatici complessi nel pieno rispetto della privacy by design/default, valutando i risvolti etici delle tecnologie emergenti (intelligenza artificiale, big data,
IoT).

Acquisire una conoscenza avanzata dei principi etici, delle normative sulla privacy (es. GDPR) e dei quadri giuridici della sicurezza informatica applicati ai sistemi software e alle architetture di rete complesse.

Saper applicare i concetti normativi ed etici alla progettazione di sistemi digitali secondo i paradigmi di Privacy by Design e Privacy by Default, gestendo la conformità legale nei progetti di ingegneria informatica.

Autonomia di giudizio (Making judgements)
Sviluppare un forte spirito critico per valutare i rischi legali, sociali ed etici derivanti dall'adozione di nuove tecnologie (come intelligenza artificiale e big data), formulando giudizi autonomi sui dilemmi professionali e di governance dei dati.
Abilità comunicative (Communication skills)
Acquisire la padronanza del linguaggio tecnico-giuridico di settore, sapendo comunicare chiaramente e con proprietà concettuale questioni di compliance, sicurezza e responsabilità professionale a interlocutori tecnici e non tecnici.
Capacità di apprendimento (Learning skills)
Sviluppare la capacità di aggiornarsi autonomamente in merito all'evoluzione della legislazione nazionale e internazionale, della giurisprudenza e degli standard di sicurezza e privacy, adattandosi a contesti tecnologici in rapido mutamento.

Programma

Etica dell'Informazione e della Tecnologia:

  • Fondamenti di etica applicata all'informatica e alle tecnologie digitali.
  • Responsabilità professionale, codici etici e dilemmi morali nello sviluppo software e nella gestione dei dati.
  • IA etica: trasparenza, equità, bias algoritmici e accountability.
    Privacy e Protezione dei Dati Personali:
  • Il quadro normativo europeo: il Regolamento Generale sulla Protezione dei Dati (GDPR - UE 2016/679) e la normativa nazionale.
  • Principi applicabili al trattamento dei dati, diritti dell'interessato e obblighi dei titolari e responsabili del trattamento.
  • Privacy by Design e Privacy by Default; Data Protection Impact Assessment (DPIA). Sicurezza Giuridica e Regolamentazione della Cybersecurity:
  • Normativa nazionale e sovranazionale in materia di sicurezza delle reti e dei sistemi informativi (es. direttive NIS/NIS2, Cybersecurity Act).

Modalità d'esame

Prova orale (ed eventuale prova scritta preliminare) volta ad accertare la comprensione dei concetti teorici, normativi ed etici discussi a lezione, nonché la capacità di applicarli a casi pratici.

Testi di riferimento

Floridi, Luciano. The Ethics of Information. Oxford University Press.
Documentazione ufficiale del Garante per la protezione dei dati personali e testi normativi di riferimento (GDPR UE 2016/679).
Ulteriori dispense, articoli scientifici e materiali integrativi forniti dal professore su Teams.

Codice insegnamento 68614

Explainable Artificial Intelligence 6 CFU · ING-INF/05 · 0 file

L’insegnamento si propone di fornire agli studenti le conoscenze teoriche e pratiche fondamentali nell’ambito dell’Explainable Artificial Intelligence (XAI), sviluppando la capacità di comprendere, analizzare e…

Scheda dell'insegnamento

Obiettivi formativi

L’insegnamento si propone di fornire agli studenti le conoscenze teoriche e pratiche fondamentali nell’ambito dell’Explainable Artificial Intelligence (XAI), sviluppando la capacità di comprendere, analizzare e spiegare il comportamento e le predizioni dei modelli di Machine Learning.
Il corso mira a fornire una comprensione delle motivazioni e degli obiettivi della XAI, delle principali tipologie di spiegazione e delle differenze tra modelli interpretabili per costruzione e metodologie di spiegazione post-hoc. Particolare attenzione sarà dedicata ai metodi model-agnostic per la spiegazione locale e globale dei modelli e alle tecniche specifiche per la spiegazione delle reti neurali, coerentemente con l’organizzazione del testo di riferimento. interpretable-machine-learning_…
L’insegnamento mira inoltre a sviluppare la capacità di selezionare, applicare e valutare criticamente differenti metodologie di XAI, comprendendone i principi di funzionamento, le modalità di interpretazione, i punti di forza e le limitazioni. interpretable-machine-learning_…
Le conoscenze teoriche saranno integrate con attività pratiche finalizzate all’applicazione delle metodologie di XAI a differenti modelli e tipologie di dati. Il corso affronterà inoltre la valutazione delle spiegazioni e introdurrà il tema della gestione dell’incertezza nelle spiegazioni.

Al termine dell’insegnamento, lo studente avrà acquisito conoscenze e capacità di comprensione relative ai principi fondamentali della Explainable Artificial Intelligence (XAI) e alle principali metodologie per comprendere e spiegare il comportamento e le predizioni dei modelli di Machine Learning.
In particolare, lo studente sarà in grado di:

  • comprendere le motivazioni, gli obiettivi e i concetti fondamentali della XAI;
  • conoscere le caratteristiche dei modelli interpretabili per costruzione;
  • conoscere e comprendere le principali metodologie XAI model-agnostic per spiegazioni locali e globali;
  • comprendere i principi fondamentali delle metodologie di XAI per le reti neurali;
  • comprendere il ruolo dell’incertezza nelle spiegazioni;
  • conoscere i principi fondamentali per la valutazione delle spiegazioni;
  • comprendere i punti di forza e le limitazioni delle diverse metodologie di XAI.

Al termine dell’insegnamento, lo studente avrà acquisito conoscenze e capacità di comprensione relative ai principi fondamentali della Explainable Artificial Intelligence (XAI), alle principali tipologie di spiegazione e alle metodologie utilizzate per comprendere e spiegare il comportamento e le predizioni dei modelli di Machine Learning.
In particolare, lo studente sarà in grado di:

  • comprendere le motivazioni e gli obiettivi della XAI;
  • conoscere le principali caratteristiche dei modelli interpretabili per costruzione;
  • conoscere e comprendere le principali metodologie XAI model-agnostic per spiegazioni locali e globali;
  • conoscere i principi fondamentali delle metodologie di XAI per le reti neurali;
  • comprendere il ruolo dell’incertezza nelle spiegazioni;
  • conoscere i principali principi e criteri per la valutazione delle spiegazioni e delle metodologie XAI;
  • comprendere i punti di forza e le limitazioni delle diverse metodologie di XAI.

Autonomia di giudizio
Al termine dell’insegnamento, lo studente sarà in grado di analizzare criticamente le spiegazioni prodotte dalle metodologie di XAI, valutarne l’appropriatezza rispetto al problema considerato e riconoscerne punti di forza e limitazioni. Sarà inoltre in grado di confrontare differenti approcci XAI e motivare la scelta delle metodologie più appropriate.
Abilità comunicative
Lo studente sarà in grado di descrivere e discutere in modo chiaro le metodologie XAI utilizzate e di comunicare e interpretare le spiegazioni ottenute. Sarà inoltre in grado di presentare efficacemente un progetto di XAI, illustrando il problema affrontato, le scelte metodologiche e i risultati ottenuti.
Capacità di apprendere
Lo studente sarà in grado di approfondire autonomamente metodologie e strumenti di XAI, utilizzare la documentazione e le risorse disponibili e applicare le conoscenze acquisite a nuovi modelli, dati e problemi applicativi.

Programma

  • Introduzione all’Explainable Artificial Intelligence (XAI)
  • Obiettivi della XAI
  • Panoramica delle metodologie di XAI
  • Modelli interpretabili per costruzione
  • Metodi XAI model-agnostic per spiegazioni locali
  • Metodi XAI model-agnostic per spiegazioni globali
  • XAI per reti neurali
  • Gestione dell’incertezza nelle spiegazioni
  • Valutazione delle metodologie di XAI

Modalità d'esame

La verifica dell’apprendimento consiste nella realizzazione di un progetto, nella preparazione di una tesina e nella discussione orale del lavoro svolto.
Il progetto prevede l’applicazione di una o più metodologie di XAI a un problema scelto dallo studente. Il lavoro dovrà essere documentato mediante una tesina, nella quale saranno descritti il problema affrontato, le metodologie utilizzate, le scelte effettuate e i risultati ottenuti.
La prova orale consiste nella presentazione e discussione del progetto e della relativa tesina ed è finalizzata a verificare la comprensione delle metodologie utilizzate e la capacità di interpretare e discutere criticamente le spiegazioni ottenute.
La valutazione terrà conto della correttezza del lavoro svolto, dell’appropriatezza delle metodologie XAI utilizzate, della qualità e riproducibilità del codice, della capacità di analisi critica delle spiegazioni e della chiarezza della presentazione.

Testi di riferimento

Christoph Molnar, Interpretable Machine Learning: A Guide for Making Black Box Models Explainable, 3rd Edition, 2025.

Codice insegnamento 68615

Interaction With Intelligent Systems 6 CFU · INF/01 · 0 file

L'Intelligenza Artificiale (IA) sta cambiando radicalmente le nostre vite e trasformando le nostre società. Questo cambiamento sarà molto probabilmente il più profondo e rapido che l'umanità abbia mai conosciuto. C'è…

Scheda dell'insegnamento

Obiettivi formativi

L'Intelligenza Artificiale (IA) sta cambiando radicalmente le nostre vite e trasformando le nostre società. Questo cambiamento sarà molto probabilmente il più profondo e rapido che l'umanità abbia mai conosciuto. C'è un consenso generale sul fatto che l'IA porterà molte nuove opportunità e che la maggior parte dei cambiamenti sarà positiva. È inoltre ampiamente riconosciuto che lo sviluppo dell'IA comporta numerosi rischi che devono essere gestiti con estrema attenzione. In questo scenario, è importante che i futuri specialisti di IA acquisiscano consapevolezza delle potenziali questioni etiche e pratiche legate a questi sistemi, oltre a sviluppare le competenze teoriche e metodologiche necessarie per progettarli adeguatamente. Per raggiungere questo obiettivo, è necessario adottare una prospettiva incentrata sugli utenti e sui loro bisogni, così da consentire loro di comprendere e controllare le tecnologie basate sull'IA.

Gli studenti apprenderanno i principi, le metodologie e le tecniche dell’Interazione Persona-Macchina per lo sviluppo di sistemi intelligenti interattivi che siano sicuri, affidabili e degni di fiducia per i loro utenti.
Attraverso la discussione di una serie di problematiche relative all’usabilità e all’interfaccia utente connesse ai sistemi intelligenti esistenti, gli studenti acquisiranno esperienza nella progettazione di studi volti a valutare gli aspetti di usabilità nei sistemi intelligenti.
Gli studenti acquisiscono queste conoscenze attraverso le lezioni dei docenti ed eventualmente seminari specifici, nonché attraverso discussioni ed esercitazioni in cui mettono in pratica quanto appreso. In questo modo, acquisiscono anche consapevolezza delle proprie capacità di comprensione e di apprendimento e di come queste possano essere migliorate.

Gli studenti svolgono sia esercizi individuali sia esercizi di gruppo.
Agli studenti viene richiesto di elaborare, prevalentemente in collaborazione di gruppo, un progetto in cui applicano alcune delle tecniche illustrate durante le lezioni, dopo aver selezionato quelle più appropriate al caso specifico. Il progetto contribuisce alla valutazione finale dello studente e, di conseguenza, al voto finale che otterrà nel corso.

Autonomia di giudizio

  • Un obiettivo importante del corso è che lo studente acquisisca la capacità di integrare le conoscenze, gestire la complessità e prendere decisioni durante la progettazione, lo sviluppo e la valutazione di sistemi intelligenti.
  • Gli esercizi e il progetto svolti durante il corso, discussi tra docenti e studenti, costituiscono uno strumento per formare gli studenti alla capacità di formulare giudizi. Tale capacità viene valutata dai docenti e contribuisce al voto finale, che tiene conto anche della partecipazione attiva dello studente alle discussioni in classe e alla presentazione del progetto.
    Abilità comunicative
  • Gli studenti sono incoraggiati a lavorare in gruppo e invitati a illustrare i risultati degli esercizi svolti individualmente o in gruppo, al fine di sviluppare le loro capacità di comunicazione e collaborazione.
  • Agli studenti viene inoltre richiesto di elaborare un progetto in cui applicare alcune delle tecniche apprese, selezionando quelle che ritengono più appropriate (in base alla loro capacità di formulare giudizi). Il progetto è presentato in classe; ciò consente allo studente di dimostrare le proprie capacità comunicative illustrando il lavoro svolto, eventualmente utilizzando alcune slide preparate in precedenza.
    Capacità di apprendere in modo autonomo
  • Per stimolare le proprie capacità di apprendimento, gli studenti sono invitati ad approfondire alcuni argomenti non trattati in dettaglio dai docenti, avvalendosi dei libri consigliati e/o di altre fonti. Gli studenti potrebbero presentare tali argomenti in classe.
  • Gli studenti sono inoltre invitati a partecipare a seminari tenuti da altri docenti, sia interni al dipartimento sia da ricercatori ospiti, e potrebbe essere loro richiesto di discutere in seguito in classe il contenuto di tali seminari.

Programma

Concetti di base dell’IPM: Progettazione dell’interazione, Usabilità ed Esperienza utente (UX), Human-centred design
Human-Centred Artificial Intelligence (HCAI): framework dell’HCAI, Metafore di progettazione, Struttura di governance
Intelligenza artificiale vs potenziamento dell’intelligenza: Potenziamento vs automazione, Interfacce utente di controllo e intervento, Principi di progettazione per le interfacce utente di intervento, Pregiudizi e spiegazioni
Intelligenza artificiale incentrata sulla persona e simbiotica: IA simbiotica: definizioni, quadri di riferimento e ruolo dell’affidabilità; IA incentrata sulla persona e la legge dell’UE sull’IA: quadri di riferimento basati su principi
Progettazione di interfacce utente per sistemi intelligenti: principi, linee guida, euristiche per sistemi intelligenti; linee guida di progettazione di Google; linee guida di progettazione di Microsoft; FrameSAI
Tecniche di raccolta dati: interviste, questionari, focus group, osservazione
Dati quantitativi e qualitativi: analisi dei dati qualitativi e quantitativi, statistica descrittiva, statistica inferenziale
Studi di valutazione: test con gli utenti, studi sul campo, esperimenti controllati
Esercitazioni e discussioni su prototipi di progettazione e di valutazione e/o su sistemi interattivi intelligenti, studi sugli utenti; tavole rotonde di gruppo.

Modalità d'esame

La verifica dei risultati formativi si basa principalmente sulla presentazione del caso di studio: un colloquio in cui l’intero gruppo illustra il progetto realizzato.
Il materiale relativo al progetto deve essere inviato tramite la piattaforma di e-learning 7 giorni prima della data fissata per la presentazione.
Il voto acquisito con il progetto rimane valido per tutti gli appelli dell’anno accademico 2026-2027.
Lə studentə deve sempre prenotarsi agli appelli tramite il portale ESSE3 entro la scadenza prevista (usualmente 4 giorni prima della prova).

Testi di riferimento

Shneiderman, B. Human-Centered AI. OUP Oxford, 2022. (textbook)
Preece, J., Rogers, Y., Sharp, H. "Interaction Design, beyond human-computer interaction", John Wiley & Sons, 5th Edition, 2019.
Lazar, J., Feng J.K., Hocheiser, H. Research Methods in Human-Computer Interaction, 2005, Morgan Kaufmann Publisher, 2nd Edition, 2017.
Materiale aggiuntivo - Articoli scientifici forniti dai docenti

Codice insegnamento 64944

Metodologie e Tecnologie Didattiche per L’Informatica 6 CFU · INF/01 · 0 file

Il corso si propone di sviluppare la conoscenza delle principali metodologie e tecnologie per la costruzione di un curriculum di Informatica coerente con gli obiettivi fissati dalle indicazioni nazionali e dalle linee…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di sviluppare la conoscenza delle principali metodologie e tecnologie per la costruzione di un curriculum di Informatica coerente con gli obiettivi fissati dalle indicazioni nazionali e dalle linee guida del ministero dell’istruzione per tutti i diversi livelli di scuola. Inoltre si propone l’acquisizione di pratiche didattiche e di processi di insegnamento e apprendimento dell’Informatica con l'uso delle tecnologie digitali.

Acquisizione di specifiche conoscenze e competenze utili all’insegnamento dell’informatica come disciplina scientifica.

Acquisizione delle competenze necessarie per la costruzione di attività e, più in generale, di un curriculum di informatica coerente con gli obiettivi fissati dalle indicazioni nazionali per i licei e dalle linee guida per gli istituti tecnici e professionali.

Autonomia di giudizio
Acquisizione di autonomia di giudizio rispetto alle implicazioni etiche e alle responsabilità professionali della pratica di insegnante di informatica.
Abilità comunicative
Acquisizione di abilità relative all’insegnamento dell’informatica sia attraverso lezioni teoriche che attraverso la realizzazione di attività laboratoriali.
Capacità di apprendere in modo autonomo
Acquisizione di autonomia nello studio e nella individuazione e definizione di soluzioni per la pratica dell’insegnamento.

Programma

Informatica come disciplina scientifica e le applicazioni dell’informatica.
Metodologie per l’insegnamento dell’informatica: principi, tipologie e modelli per la costruzione di attività per l’insegnamento/apprendimento dell’informatica.
Tecniche di problem solving, metodi e tecnologie cooperative per lo sviluppo di soluzioni.
Metodi di partecipazione attiva, progettazione di attività laboratoriali e principi della lezione partecipata.
L’importanza del pensiero logico computazionale: contenuti e software.
Tecniche di gamification per la didattica dell’informatica.
La robotica come strumento per la didattica dell’informatica.
Tecnologie per la valutazione dell’apprendimento: differenze tra valutazione formativa e sommativa.
Informatica e società: aspetti etici.

Modalità d'esame

L’esame prevede la presentazione e discussione di un progetto didattico per l’insegnamento sia nelle scuole primarie che nelle scuole secondarie di primo e secondo grado.
Per la presentazione del progetto lo studente deve necessariamente concordare con il docente gli argomenti che intende sviluppare nell’Unità Didattica di apprendimento scelta. La relazione completa di progettazione, scheda UdA e slide realizzate deve essere consegnata al docente entro il giorno prima della sessione d’esame.

Testi di riferimento

  • Hazzan O., Lapidot T., Ragonis N. (2014). Guide to Teaching Computer Science. An Activity-Based Approach. Ed. Springer
  • Gallo L., Pepe I. (2019). Manuale delle Metodologie e Tecnologie Didattiche. Ed. Simone
  • Randolph, J. (2008). Multidisciplinary Methods in Educational Technology
  • Cohen, L., Manion, L., & Morrison, K (2007). Research Methods in Education (6th Edition). London: Routledge
    I Capitoli da studiare sono indicati nella piattaforma di e-Learning.
    Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php e contattare la biblioteca per concordarne il prestito.

Codice insegnamento 63956

Quantum Computing 6 CFU · INF/01 · 0 file
Semantic Technologies And Knowledge Graphs 6 CFU · INF/01 · 0 file
Social Robotics And Intelligent Agents 6 CFU · INF/01 · 0 file

Recensioni del corso

Studi qui? Accedi per lasciare la tua recensione e aiutare altri studenti a scegliere.

★

Nessuna recensione per ora — e la prima è la più preziosa. Condividi la tua esperienza e orienta le future matricole.