Proposta di Tesi/Stage: Ottimizzazione libreria Python per Fuzzy Systems and Evolutionary Computing

La tesi o stage è finalizzata all’ottimizzazione di una libreria Python, inizialmente concepita per l’insegnamento “Fuzzy Systems and Evolutionary Computing” del Corso di Laurea Triennale Inter-Ateneo in “Artificial Intelligence” e disponibile su GitHub all’indirizzo: https://github.com/AndreaCampagner/Fuzzy-Systems-and-Evolutionary-Computing. Scopo del lavoro sarà il profiling e studio della libreria summenzionata, al fine di individuare bottleneck (in particolar modo per quanto riguarda le parti relative ad Evolutionary Computing), nonché la sua parziale re-implementazione al fine di ottimizzare tempi di esecuzione e occupazione di memoria. Possibili soluzioni di ottimizzazione da considerare nello svolgimento del lavoro riguardano:

  • Parallelizzazione del codice di esecuzione degli algoritmi di Evolutionary Computing
  • Re-implementazione parziale della libreria (per quanto riguarda i principali bottleneck di esecuzione) in Cython
  • Re-implementazione parziale della libreria utilizzando tecniche di GPGPU computing

PREREQUISITI

  • Il candidato deve avere conoscenze di Python (Livello Programmazione 1-2)
  • (Preferibilmente) Conoscenze di sistemi concorrenti, paralleli e distribuiti e ottimizzazione codice

OBIETTIVI FORMATIVI

  • Lo stage o tesi permetterà al candidato di acquisire una solida competenza nello sviluppo Python, incluso l’ecosistema di Data Science (numpy, scipy, scikit-learn).
  • Lo stage o tesi permetterà al candidato di acquisire una competenza nelle basi dell’evolutionary computing, con particolare riferimento ad algoritmi genetici e altri approcci population-based.
  • Lo stage o tesi permetterà al candidato di acquisire una solida competenza nell’ambito del profiling ed ottimizzazione di codice, unitamente a conoscenze di base di optimized and high-performance computing.

DURATA DELLO STAGE E CONTESTO RACCOMANDATO

  • Adatto a: Tesi di Laurea Magistrale (Preferibile) o Stage di Laurea Triennale in Informatica
  • Durata: 3 mesi (stage)

MODALITA’ E ORARI DI LAVORO

  • Modalità di lavoro: da remoto, con frequenti riscontri via mail e occasionali incontri di persona.
  • Ore di lavoro: non fissate, ma generalmente ci saranno degli obiettivi settimanali da raggiungere.

CONTATTI

  • Andrea Campagner, andrea.campagner@unimib.it
  • Davide Ciucci, davide.ciucci@unimib.it