#acl EditorsGroup:read,write,revert,admin,delete GiovambattistaIanni:read,write,delete,admin,revert FrancescoPacenza:read,write,delete,admin,revert DeniseAngilica:read,write,delete,admin,revert All:read == Temi di tesi e stage - Giovambattista Ianni == <> === Come richiedere la tesi === <
> Di solito assegno la tesi entro la fine delle sessioni di esame (Febbraio/Marzo, Giugno/Luglio, Settembre). Per manifestare interesse per un tema di tesi è sufficiente inviarmi una e-mail con i vostri dati (nome, cognome, numero di matricola), segnalando l'argomento di interesse. Conviene cominciare il lavoro di tesi e l'eventuale tirocinio abbinato, quando mancano esami da sostenere per al massimo 24 crediti, o per al massimo 36 crediti per la laurea specialistica. Per ovvi motivi di tempo, non mi è possibile seguire con la dovuta attenzione molti tesisti in contemporanea, dunque sono spesso costretto a fare selezione. Non è possibile prenotare il posto per la tesi: vi prego di contattarmi esclusivamente nel momento in cui si ha intenzione di iniziare. I temi di tesi che leggete sotto possono essere assegnati sia per la laurea triennale che per la laurea magistrale. Nel secondo caso il lavoro di tesi (sullo stesso tema) richiede carico di lavoro, livello di approfondimento e originalità maggiore. Attenzione: le medie indicate '''non sono''' obbligatorie, ma solo indicative del livello di difficoltà del tema proposto. ==== Licenze d'uso del software prodotto ==== <
> E' fortemente consigliato che tutto il codice sorgente prodotto nel corso del lavoro di tesi sia rilasciato nel dominio open source sotto licenza GPL 3.0 (o differente, se ritenete opportuno) e che venga lasciata una copia dei propri sorgenti su un repository github pubblico. <
> Come apporre la licenza GPL sul proprio codice: http://www.gnu.org/licenses/gpl-howto.html <
> === Intelligenza Artificiale === * <> '''Introduzione di moduli di ragionamento automatico in robot''' * '''Strumenti da usare, conoscenze richieste''': programmazione multithread e a oggetti, answer set programming, software di riconoscimento oggetti (openCV, da imparare sul momento). * '''Di cosa si tratta''': sviluppo di AI per giochi su dispositivi mobili e di moduli di libreria per [[https://github.com/DeMaCS-UNICAL/BrainyBot|BrainyBot]] * '''Cosa imparerò''': gestione di robot sperimentali, tecniche di intelligenza artificiale applicata. '''Media base suggerita''': almeno 25. Tesi disponibile anche per laureandi magistrali in versione più complessa. <
> * <> '''Robocup vision module''' * '''Strumenti da usare, conoscenze richieste''': programmazione multithread e a oggetti, C++, sviluppo in ambienti Linux, software di riconoscimento oggetti (openCV o similare, da imparare sul momento). * '''Di cosa si tratta''': riadattare e sviluppare un modulo di visione artificiale da usare a bordo di un giocatore partecipante alla Standard Platform League della [[https://www.robocup.org/leagues/5|Robocup]]. * '''Cosa imparerò''': gestione di robot sperimentali, tecniche di artificial vision applicata. '''Media base suggerita''': almeno 25. Tesi disponibile anche per laureandi magistrali in versione più complessa. <
> * <> '''Scrittura di un servo driver per Tapsterbot''' * '''Strumenti da usare, conoscenze richieste''': configurazione di hardware Arduino, programmazione C++, Javascript e Python. * '''Di cosa si tratta''': sviluppo dei driver dei motori del futuro BrainyBot 2. Sito di BrainyBot 1: [[https://github.com/DeMaCS-UNICAL/BrainyBot|qui]] * '''Cosa imparerò''': gestione di robot sperimentali, gestione di attuatori robotici. '''Media base suggerita''': almeno 25. Tesi disponibile anche per laureandi magistrali in versione più complessa. <
> * <> '''Introduzione di moduli di ragionamento automatico in software per lo sviluppo di videogiochi'''. '''Strumenti da usare, conoscenze richieste''': programmazione multithread e a oggetti, answer set programming, C# (quest'ultimo si imparerà durante la tesi). '''Di cosa si tratta''': la tesi prevede l'utilizzo e la sperimentazione su un framework che consente l'introduzione di sistemi di ragionamento automatico all'interno del noto software di sviluppo Unity. '''Cosa imparerò''': sviluppo di videogames in ambienti professionali, tecniche di intelligenza artificiale applicata. '''Media base suggerita''': almeno 26. Tesi disponibile anche per laureandi magistrali in versione più complessa. <
> * <> '''Game development engines'''. '''Strumenti da usare, conoscenze richieste''': programmazione multithread e a oggetti. '''Cosa imparerò''': sviluppo di videogames in ambienti professionali. '''Di cosa si tratta''': la tesi prevede l'utilizzo e la sperimentazione su alcuni dei software per lo sviluppo di videogiochi più noti, tra cui Unity, Unreal Engine, Godot e vari altri. '''Media base suggerita''': almeno 26. Tesi disponibile anche per laureandi magistrali in versione più complessa. * <> '''Stream reasoning'''. La tesi prevede lo sviluppo e l'analisi teorica di alcune tecniche di stream reasoning. '''Strumenti da usare, conoscenze richieste''': programmazione, capacità di analisi teorica. '''Cosa imparerò''': dimostrare le proprietà formali di una tecnica di AI, scrivere un lavoro scientifico. '''Media base suggerita''': almeno 27. Tesi disponibile anche per laureandi magistrali in versione più complessa. === Sviluppo di estensioni per il browser Chrome === * Spoofstick: ridisegno di una estensione Chrome anti URL typo-squatting * Perfezionamento dell'estensione Chrome [[https://www.mat.unical.it/ianni/wiki/ScholarHIndexCalculator|H-Index Calculator]] '''Strumenti da usare, conoscenze richieste''': Javascript. '''Cosa imparerò''': Javascript (se già non lo conosci), tecniche di estensione per browser. '''Media base suggerita''': almeno 25. Tesi disponibile solo in versione per laurea triennale. * '''Filtri intelligenti anti-advertising sul Web'''. Sviluppo di estensioni Chrome finalizzate all'eliminazione avanzata di contenuti indesiderati sul web. Tecnologie: javascript, html 4, http, opencv. '''Media base suggerita''': almeno 26. * '''Language Switcher'''. Perfezionamento dell'estensione Chrome [[https://goo.gl/HGL2gL|Language Switcher]]. <
> === Reti di Calcolatori === ## * '''Riqualificazione della rete di un istituto scolastico''': riqualificazione di una rete di medie dimensioni in termini di meccanismi di autenticazione, sicurezza informatica, qualità del servizio. Tesi da condurre presso un istituto scolastico di Cosenza. ## '''Strumenti da usare, conoscenze richieste''': buona conoscenza delle reti di calcolatori. ## '''Media base suggerita''': almeno 25. Tesi disponibile solo per la laurea triennale. * '''Capture Sanitizer''': Estensione di un tool per la pseudonimizzazione reversibile di un file di cattura pcap. '''Strumenti da usare, conoscenze richieste''': buona conoscenza delle reti di calcolatori. Uso della libreria libpcap e del C. '''Media base suggerita''': almeno 25. Tesi disponibile sia in versione per laurea triennale che per laurea specialistica. <
> === Cloud, Sicurezza Informatica - Temi di tesi disponibili nella forma di stage presso NTT Data === * E' possibile avere in formato tesi uno dei progetti assegnati per l'esame di Network & Security (anche quelli che risultano già assegnati): * [[https://www.mat.unical.it/informatica/RetiESicurezzaInformatica/AssegnazioneProgetti2017|Cybersecurity]] * '''Tema: SELinux''' * Tesi 1: ''Studio e sperimentazione di un modello di controllo accessi MAC basato su SELinux per software applicativo (es. PostreSQL)''. SELinux è stato principalmente pensato ed applicato per l’implementazione di modelli di controllo accessi di tipo MAC alle risorse dei sistemi operativi Linux. A valle di uno studio sulle caratteristiche generali di SELinux, si punta ad approfondire il tema dell’applicazione di modelli MAC alle risorse interne dei software applicativi. Un esempio concreto di integrazione di SELinux a livello applicativo è costituito da PostgreSQL. Si punta a utilizzare PostgreSQL, o altra applicazione ad ampia diffusione, per la definizione di un modello di controllo accessi MAC. Riferimenti: https://wiki.postgresql.org/wiki/SEPostgreSQL_SELinux_Overview * Tesi 2: ''Realizzazione di un prototipo di convertitore di policy d’accesso dal formato ACL (es. eTrust AC) al formato SELinux basato su etichettature di contesto.'' Riferimenti: https://casupport.broadcom.com/cadocs/0/g007711e.pdf * '''Tema: Cloud Native Architectures''' * Tesi: ''Progettazione e sviluppo di un’applicazione “Cloud Native” allo stato dell’arte''. Il processo di sviluppo di un’applicazione va rivisto profondamente in ottica cloud native. Occorre utilizzare microservizi, architetture containerizzate e protocolli REST-based. Inoltre è necessario utilizzare tecniche di DevOps. Dopo aver studiato le nuove tematiche, si richiede di realizzare un prototipo di applicazione a microservizi che utilizzi in modo appropriato le nuove tecnologie. * '''Tema: Perfomance Elasticstack''' Promotore NTT Data: R. Spadafora * Tesi: ''Performance comparison of Elasticstack on VM and Elasticstack on Kubernetes''. Elasticsearch è un search engine, ed insieme ad altre componenti software come Logstash e Kibana è uno degli strumenti più utilizzati per log analysis, data intelligence e ricerche full text ad alte prestazioni. A valle di uno studio sulle caratteristiche generali di elasticstack, si punta a valutare la performance in ambiente virtualizzato e in ambiente docker utilizzando kubernetes come orchestratore. Un esempio concreto potrebbe essere quello di indicizzare 100GB di log monitorando le due soluzioni in termini di performance. Promotore NTT Data: M. Marano * Tesi: ''Tecnologie FIDO2''. Il protocollo FIDO2 (https://fidoalliance.org/fido2/) permette l’autenticazione sicura a servizi online. Il candidato dovrà studiare dettagliatamente il protocollo ed implementare un autenticatore FIDO2 per Android che permetta l’autenticazione sicura (utilizzando meccanismi propri del sistema operativo come l’impronta digitale o il pin) ad un’applicazione web che lo stesso candidato si occuperà di sviluppare. <
> === Temi di tesi disponibili in abbinamento a tirocinio presso 3D Research === * Sito di [[https://www.3dresearch.it|3D Research]] * '''Simulazioni di Folla/Branco e Comportamento Sociale:''' Creare algoritmi di intelligenza artificiale che guidino il comportamento di folla/branco e gruppi di personaggi (umanoidi e non) rendendo gli ambienti più vivi e realistici. * '''Casi studio:''' * Banco di pesci capaci di interagire realisticamente con l’ambiente virtuale circostante. * Avatar e NPC con diverse caratteristiche comportamentali che interagiscono con l’utente per verificarne la risposta in termini clinici (ad esempio: disturbi d’ansia, ecc). * Benessere psicologico in ambiente universitario. * '''IA per la Creazione di Storie Interattive e Contenuti:''' Sviluppare sistemi di intelligenza artificiale in grado di generare trame e narrazioni interattive, permettendo ai giocatori di influenzare lo sviluppo della storia o di un sotto-contenuto. * '''Generazione Automatica di Livelli/Dungeon e Percorsi:''' Sviluppare un sistema che, basandosi su algoritmi di generazione assistita da IA, crea livelli di gioco, dungeon o percorsi in modo automatico. * '''Casi studio:''' * Authoring Tool per la generazione semi-automatica di ambienti museali e mostre: a partire da alcune specifiche e/o da un dataset in input composto da modelli 3D e relativi metadati (tipologia reperto/opera, datazione, autore, etc.) il tool dovrebbe generare una serie di layout espositivi virtuali atti a ottimizzare l’esperienza del visitatore. Si potrebbe inoltre personalizzare l’esperienza in relazione al tipo di fruizione (ad esempio AR/VR, etc.) * Authoring Tool e/o applicativo per la generazione di ambienti virtuali di training: similarmente al tool per la generazione di ambienti museali, dovrà generare ambienti di training con diverse possibili challenge per l’utente (ad esempio nel caso delle cucine industriali si potrebbero simulare i rischi alimentari. * '''Problemi Fondamentali - Pathfinding:''' Sviluppa un sistema che, crei in maniera efficientemente utile, un percorso (il più breve e privo di interruzioni, data unicamente la posizione di partenza e di arrivo. * '''Casi studio:''' * Pathfinding in ambiente subacqueo * Piani turistici di visita per itinerari su più giornate e con diversi vincoli. * '''AI Osservatrice:''' L'IA può essere utilizzata per rilevare statistiche come l'umore o l'emozione dei giocatori e adattare l'esperienza di gioco di conseguenza, migliorando il coinvolgimento dell'utente. * '''AI Avversaria:''' Implementazione di algoritmi di AI per simulare il comportamento di avversari intelligenti in videogiochi multiplayer. Ad esempio, creare avversari virtuali controllati dall'IA che si adattano al livello di abilità dei giocatori e offrono sfide sempre più interessanti. === Sistemi Operativi === * '''Thread Monitor'''. E' molto difficile capire il comportamento di un programma che faccia uso di più thread e risorse condivise. La tesi prevede lo sviluppo di una apposita API in grado di consentire la visualizzazione e il monitoraggio dello stato dei vari thread in un programma concorrente. In particolare il sistema complessivo dovrebbe essere in grado di visualizzare, per ogni monitor presente nel sistema: i thread in stato di Wait, i thread in attesa di ottenere il lock sul monitor, l'eventuale thread attualmente attivo nel monitor stesso. '''Strumenti da usare, conoscenze richieste'''. E' richiesta una buona conoscenza delle problematiche legate alla multi-programmazione in Java. * '''Preparazione e sottomissione di package applicativi per Ubuntu/Debian'''. La tesi prevede di curare la (non banale) fase di rilascio di alcuni pacchetti applicativi per distribuzioni Linux Ubuntu/Debian. '''Media base suggerita''': almeno 24.