Automazione del testing per lo sviluppo di compilatori

Docente

Giovanni Agosta (web, mail)

Area di ricerca

Metodologie e architetture software avanzate

Keyword (max 3 separate da virgola)

compilatori, testing harness

Tecnologie da utilizzare

Python o altro linguaggio di scripting

Descrizione (max 500 caratteri)

Il progetto si propone di creare una infrastruttura di testing per il compilatore MARCO. Poiché il compilatore è in corso di sviluppo, è necessario verificare periodicamente l’impatto delle nuove trasformazioni e ottimizzazioni su un set di test di riferimento, e mantenere uno storico delle prestazioni con interfaccia web.

Simple Virtual Tabletop Environment

A causa della pandemia, molti giocatori usano oggi ambienti online collaborativi (Virtual Tabletop o VTT) come Roll20, Foundry VTT o owlbear.rodeo. L’obiettivo del progetto è fornire una piattaforma open source VTT basata su tecnologie moderne (i.e., JavaScript) all’interno del browser. Il modello di riferimento per le funzionalità è owlbear.rodeo, quindi si intende realizzare le funzionalità relative al vero e proprio tavolo di gioco (mappa condivisa con griglia, token, e possibilità di caricare/importare set di token e di mappe personali), ma non funzionalità specifiche di un particolare gioco (per questo tipo di progetto si veda “Sviluppo di Bot Telegram in Python“) e neanche la gestione della connessione audio/video (esistono già strumenti di questo tipo che potrebbero essere integrati, ma l’integrazione non è particolarmente utile).

Caratteristiche e obiettivi

  • Mappa di gioco: la mappa permette l’interazione da parte dei giocatori. È possibile definire un utente privilegiato che può caricare e modificare la mappa, mentre gli utenti normali possono solo muovere i propri token. La mappa avrà una griglia quadrata (opzionalmente, è possibile consentire la selezione di una griglia alternativa esagonale, nel caso in cui il progetto sia svolto da più persone).
  • Token: si tratta di immagini più piccole che vengono sovrimpresse alla mappa, e possono essere spostate (nel caso in cui il progetto sia svolto da più persone, è possibile associare ogni token a uno o più giocatori, consentendo solo a questi di muovere quel token, e associare opzionalmente alcune caratteristiche numeriche ai token, mostrando delle barre di progresso sopra o sotto il token stesso).
  • Salvataggio dei dati: il sistema deve consentire la persistenza, usando lo spazio di storage locale (i dati non vengono salvati su server).
  • Chat e tiro di dadi. È utile, al fine di avere un sistema abbastanza completo, realizzare una semplice chat integrata con un generatore di numeri casuali controllato da comandi con una semplice sintassi per consentire il tiro di dadi all’interno dell’applicazione.

Tecnologie: JavaScript (o affini, e.g. TypeScript), HTML, CSS, possibilmente (ma non necessariamente) un framework front-end (e.g., Vue, React o Angular)

Una prima versione si può trovare qui. Può essere usata come punto di partenza per progetti futuri.

È anche possibile partire da un VTT open source come Mythic Table. In questo caso l’obiettivo è di replicare le caratteristiche del server usando un linguaggio più portabile di C# (ad esempio Python).

Sviluppo di bot Telegram o Discord in Python

A causa della pandemia, molte persone stanno usando applicazioni di messaggistica istantanea e/o servizi di teleconferenza per svolgere attività che in precedenza erano principalmente tenute in presenza, ad esempio i Giochi di Ruolo. Telegram è una applicazione di messaggistica che ha di recente introdotto anche un supporto per le teleconferenze. Come molti servizi analoghi, Telegram supporta la possibilità di definire dei bot, che possono essere impiegati per automatizzare attività di gioco come tirare i dati, creare i personaggi, gestire e memorizzare le schede dei personaggi.

Un sistema analogo, ma più diffuso per i giochi di ruolo è Discord. La discussione seguente vale per entrambi i sistemi.

Questa proposta è volta a realizzare bot che supportino specifici regolamenti di Giochi di Ruolo (meglio se open source). A titolo di esempio, sarebbe possibile supportare la SRD di Traveller (https://www.traveller-srd.com), impiegando l’implementazione python-telegram-bot (https://github.com/python-telegram-bot) dell’API per i bot Telegram.

Esempi di attività che potrebbero essere supportate:

  • Gestione del tiro dei dadi.
  • Memorizzazione e visualizzazione delle schede dei personaggi.
  • Generazione dei personaggi.
  • Gestione della campagna (memorizzazione e visualizzazione di personaggi non giocanti e del diario della campagna).
  • Automazione della scheda del personaggio (usando i comandi del bot e, dove utile, la tastiera virtuale).
  • Strumenti per il master che consentano di svolgere delle attività nascoste attraverso una conversazione separata con il bot.
  • Consentire l’accesso nella app alla mappa dell’universo di Traveller (https://travellermap.com) ed eventualmente anche ad altre fonti di dati sull’universo (e.g., https://travellertoolsdemo.azurewebsites.net/world).

Di seguito, un elenco di altri giochi che è possibile implementare (si tratta in generale di giochi open source, o comunque dotati di documenti di specifica aperti, si può vedere anche la pagina di Wikipedia sul movimento Open Gaming per altre idee):

Progetti già realizzati (utilizzabili come punto di partenza, esempio, etc):

Simulazione di sistemi elettorali in Python

Docente

Giovanni Agosta (web, mail)

Area di ricerca

Metodologie e architetture software avanzate

Keyword

Simulazione

Tecnologie da utilizzare

Python, librerie di analisi di dati (pandas, numpy)

Descrizione (max 500 caratteri)

Il progetto ha come obiettivo la realizzazione di un simulatore di sistemi elettorali usando come dati in ingresso gli open data del Ministero dell’Interno relativi alle elezioni politiche del 2013 (quando saranno disponibili, anche quelli relativi alle elezioni politiche del 2018).

Fasi del progetto:

  • Acquisizione dati (da csv con pandas/numpy)
  • Sviluppo della simulazione di uno o più sistemi elettorali (e.g., proporzionale con sbarramento, maggioritario di collegio, rosatellum, italicum, etc.)
  • Sviluppo della parte di presentazione dei dati (diagrammi a torta, mappe, etc.)

Nota bene: il progetto è ancora disponibile, ma si parte dalla versione più recente già sviluppata, disponibile su github.

Floating-point to fixed-point conversion

Docente

Giovanni Agosta (web, mail)

Area di ricerca

Architetture

Keyword

Fixed-point arithmetics

Sito web del progetto
TAFFO

Tecnologie da utilizzare

C++

Descrizione (max 500 caratteri)

Obiettivo di questo progetto è analizzare le prestazioni di un sistema di conversione semi-automatica da aritmetica in virgola mobile ad aritmetica in virgola fissa, realizzando una mini-applicazione benchmark (a partire da quelle delle suite mantevo o mediabench), per confrontare le prestazioni della versione in virgola fissa realizzata con il sistema semi-automatico con una versione generata manualmente.

Programmazione di Sistemi Eterogenei Paralleli

Docente

Giovanni Agosta (web, mail)

Area di ricerca

Architetture

Keyword (max 3 separate da virgola)

Parallel Programming, Heterogeneous Systems, High Performance Computing

Sito web del progetto

Tecnologie da utilizzare

C++, mangolibs

Descrizione (max 500 caratteri)

Questo progetto ha come obiettivo la realizzazione di applicazioni per la valutazione delle prestazioni di sistemi (hardware + software) eterogenei ad alte prestazioni, nell’ambito del progetto europeo MANGO.
Obiettivo del lavoro è realizzare una versione di una delle applicazioni della suite Mantevo che usi il modello di programmazione MANGO (simile a OpenCL, ma con gestione automatica delle risorse; basato su C++).