While pursuing my bachelor’s degree, I developed familiarity with complex problems
in math and physics, analytical thinking, and problem-solving skills that have
proven valuable in approaching challenges from a logical perspective.
I give my best when I’m working on projects that I am passionate about.
My experience with chess taught me to stay calm under pressure and to look
for a better solution for any
given problem.
I am passionate about reinforcement learning, physics, AI, programming,
and quantum computing.
[2023] Bachelor’s degree in physics at the
Università degli studi di Trieste
[2023] Internship in astrophysical data analysis at the INAF (supervisor: Elena Orlando)
[2015] High School diploma at the "Istituto di Istruzione Superiore Gabriele D'Annunzio"
Bachelor’s Thesis — Università degli Studi di Trieste
Supervisor: Elena Orlando (INAF).
Machine-learning tools are essential for handling the ever-growing volume of astrophysical data. This thesis evaluates state-of-the-art object-detection models — R-CNN, Fast R-CNN, Faster R-CNN, and Mask R-CNN—for source detection, classification, localization, and deblending. By comparing their performance and the datasets they rely on, the work highlights each model’s strengths, limitations, and best-suited astrophysical applications.
I created a
GitHub repository
that allows us to study the local correlation map between two HEALPix sky-maps.
The problem was open-ended, and I had to come up with my own solution, which was
to make a library for calculating the local correlation efficiently.
With this
system,
you can find files in a given directory based on the actual meaning of
your queries, rather than keywords. It leverages the semantic embeddings
generated by powerful LLMs.
Collaborator: Andrea Scomina.
Survey of various image classifiers, and the resilience
of GradCAM to perturbations.
This
project
investigates the robustness of popular computer vision models
trained on the ImageNet dataset—AlexNet, ResNet50, Vision Transformer (ViT),
and Swin Transformer—against adversarial attacks and perturbations.
It also inspects the reliability of the explanations these models generate
under such conditions.
Collaborator: Luis Palacios Flores.
Implemented a superhuman AI for the 4,000-year-old Royal Game of Ur using
AlphaZero-style
self-play reinforcement learning. The agent learns exclusively through self-play,
achieving strategic depth without human data.
Explore the implementation.
I created a self-reinforcement learning AI for the game of Mancala. The agent uses 2-ply exhaustive search and a neural network-based value function to choose the best move. The value function itself is trained from scratch, leveraging self-play. During each generation, a huge batch of games is created, and a new model is trained to predict the future expected reward in each board position. Throughout the training process, deeper search, bigger datasets, and better models are employed to ultimately reach a model with excellent performance.
A Python library that extends periodic time series by learning
underlying patterns, even in noisy or interrupted signals. Unlike
naive repetition, it models the true signal structure, supports batch
processing, and includes optional plotting for visualization.
I tested it on a real-world dataset to forecast product demand.
Install via pip install tisext or
view on GitHub.
In this project , I tested how evolutionary algorithms perform in mastering hidden information card games of various degrees of complexity. Mini-Hold'em is a simplified version of Poker Texas Hold'Em. The bot is able to achieve human-level play for simpler versions of the game, but it struggles when variability is too high.
In this article, I combine Natural Language Processing and
Semantic Embeddings to show how a sequence of tokens passed through
a semantic embedding can be interpreted as a particle moving through a potential
landscape, enabling the evaluation of thermodynamic quantities like temperature, energy, and entropy.
Read Paper
A multi-functional Telegram bot I built for personal use, featuring utilities like
automated Secret Santa assignments, reminders, and custom interactions for my friend group.
GitHub repository.
A strategic helper for Wordle that selects guesses to maximally reduce uncertainty.
Built on my search heuristic framework,
it evaluates word candidates by minimizing expected entropy after each guess.
See the solver in action.
This group project implements a
recommendation system
for Wikipedia pages. The user can provide feedback for each page, and
then he is fed with the next one, just like
with the app TikTok.
Collaborators:
Andrea Longo ,
Stefano Tumino ,
Alessandro Minutolo
.
In the rich and well-studied field of optimization, one generic use case is to find the best one among a set of random variables, trading off between reward and exploration cost. This project provides a simple implementation and comparison of some of the best-performing heuristics, ready to be applied in real-world scenarios. A very similar approach was implemented for AlphaGo, as it had to select the best move to play based on the results of the Monte Carlo tree search.
In this project, I computed the subgroups of the S_4 group. Classifying subgroups involves understanding group theory fundamentals, like subgroup structure, element orders, normality, closure checks, and isomorphism. It also involves recognizing structural equivalences between different-looking subgroups and employing computational tools like SymPy to verify the results.
In this project, I tested my knowledge of quantum mechanics by creating a module for simulating quantum logic gates. The library enables the user to visualize the process of applying quantum operators and perform simple quantum algorithms.
Using my knowledge of quantum mechanics, I created a repository that allows you to simulate the ground state of a quantum system of interacting particles. Given the potential, the program will find the ground state of the system using the variational method. The program makes the distinction between bosons and fermions. It can also handle potentials with a singularity at the origin.
The Ramanujan Machine is a tool based on continued fractions and gradient descent. It allows finding interesting equations for important mathematical constants. I created a GitHub repository that successfully implemented this tool, and it got featured in a YouTube video.
I created this simple CoLab program to help a friend in automatically localizing and estimating the intensity of peaks in real-life spectrometric data. It applies a kernel to preserve the signal (up to the 3rd Taylor expansion order), and to remove statistical noise. Then, a 2nd order fit is performed around every data-point, to localize the peaks. Finally, clustering is applied on the peaks to remove redundant results.
I created a repository that allows you to explore how steganography affects the individual bits of an image. The scheme that I implemented overwrites the least influential bits in the image, but only in high-entropy locations, to blend the changes with background noise.
This repository, which I created from scratch, can be used to build and train a neural network. This effort tested my knowledge and understanding of the subject, particularly NN architecture and gradient descent.
I created a simple simulation of a 2D wave using the Runge-Kutta method. The library allows for different boundary conditions, initial conditions, and obstacles that the waves interact with. The simulation can be exported to a GIF.
My first attempt at a proper simulation. Built in Pascal, it had a proper user interface where you could manage your simulations. It was capable of simulating gravitational attraction, repulsion, collisions, and each particle could be programmed to follow certain movements, like stochastic walks, chase other cells, and even reprogram them.
A personal passion project: a full-fledged narrative tabletop RPG inspired by games like D&D,
set in a unique world blending mystery, philosophy, and exploration.
The system emphasizes collaborative storytelling and character-driven arcs.
🏝 Explore the world of Shimanami!.
A lightweight, modular game engine designed for fast-paced, token-driven gameplay.
Built as part of the Shimanami universe, it offers a fresh alternative to traditional dice mechanics.
🇬🇧 Regole New Beginning
🇮🇹 New Beginning Rules
In my free time, I enjoy designing and developing new card games and board games.
This collection showcases various game mechanics, rule systems, and prototypes
that I create as a creative outlet combining strategic thinking with game theory.
Explore my games collection!
Developed a recommendation system for optional insurance coverages that truly enhance customer protection.
Focused on explainability and personalization.
Collaborators: Sepehr, Maddi, Vale, Paolo
Project repo
Built a global demand forecasting model using time series regression to predict real-world product demand.
Handled multi-horizon, multi-region forecasting under uncertainty.
Collaborators:
Uros Zivanovic,
Luis Fernando Palacios,
Liza
Project repo
Collaborative hackathon project focused on data-driven innovation.
Collaborators:
Uros Zivanovic,
Gabriele Pintus,
Andrea Ivkovic
Project repo
Participated in Google’s worldwide algorithmic programming competition, solving complex optimization problems under time constraints.
Collaborators:
Nicolò Rossi,
Simone Mezzavilla,
Kleit Rrokja
Solutions archive
[2015] Participant of “Scienze under 18”, an in-person activity that aims to bring math to the
attention of the public and young students (supervisor: Caterina Vicentini)
[2007-2010] Awarded 22 Chess medals in official tournaments
Initializing connection to game state...