My Origin

The Arch of Trajan is an ancient Roman triumphal arch erected in honor of Emperor Trajan across the Via Appia at the entrance of Benevento

I was born in Benevento, a relatively small town in southern Italy. It is a city and comune of Campania and the capital of the province of Benevento. It is situated about 50 kilometers in the northeast of Naples. Benevento has a fascinating and long history. It occupies the site of the ancient Beneventum, originally Maleventum. It hosts several historical monuments and findings from the Roman epoch, such as the Arch of Trajan, the Roman Theatre, and the Church of Santa Sofia, which became a UNESCO World Heritage Site in 2011. Benevento also hosts the excellent University of Sannio, founded in 1998. Today, it is a modern and dynamic institution in constant evolution with four faculties, including courses for both Bachelor’s and Master’s degrees in Software Engineering.

My Training

An exciting recreational day at the SERG’s retreat in Antwerp, Belgium

During my early years, I had the opportunity to visit the DRF Elettronica in Benevento as an apprentice. There, I learned how to build, use, and manage electronic equipment; this fascinating world strengthened my passion for technology.

In 2006, I started my bachelor’s in software engineering at the University of Sannio. Meanwhile, in 2010, while working as a hardware designer at ACME Systems, a Microchip Technology partner, I incorporated my first company specialized in embedded software development and electronic design.

In 2011, I concluded the first cycle of my study, receiving the Italian title of engineer. Later, leveraging my hardware design experience, I participated in a French research project to measure the harmful effects of continuous noise exposure on the human body (here some outcomes).

Later on, I continued with a Master’s in software engineering at the University of Sannio. In 2015, I concluded this second cycle of my study by achieving a master’s degree cum laude in software engineering. The thesis, supervised by Massimiliano Di Penta, focused on the differences in developing video games vs. traditional software.

While studying, I actively collaborated with Elettronica IN, the top Italian magazine for applied electronics. I built several educational projects motivated by the passion for sharing my knowledge with new generations (here is the list of my projects). Meanwhile, I taught assembly and C/C++ programming languages at the I.P.I.A. Palmieri, a professional Italian high school in Benevento. These incredible experiences allowed me to build strong relationships with a vibrant network of experts in the embedded development world.

In 2016, I moved to The Netherlands, where I started my Ph.D. in computer science at the Delft University of Technology, known as TU Delft. While being part of the SERG group led by Arie van Deursen, I was remotely supervised by Alberto Bacchelli, head of the ZEST group at UZH. Besides, during my Ph.D. I have been interned twice. In the summer of 2016, I was a visitor at the IMDEA Software Institute in Spain, where I collaborated with Alessandra Gorla. And in 2018, I interned at the Software Improvement Group, The Netherlands, where I collaborated with Magiel Bruntink, head of the SIG’s research group.

In 2019, I co-founded LPSystems; a Dutch company specialized in designing high-performance Internet-of-Things equipment that runs low-level embedded software for streaming web radios.

In 2020, I joined the DEVINTA project at the Università della Svizzera Italiana (USI) in Switzerland. Here, as a postdoctoral researcher, I work in the SEART group of Gabriele Bavota. Here, I co-advised three Ph.D. students (Rosalia Tufano, Matteo Ciniselli, and Antonio Mastropaolo) by focusing on three different research topics: artificial intelligence, natural language processing, and reinforcement learning.

In August 2022, I won a junior professorship at the Free University of Bozen-Bolzano; nonetheless, I later decided to join the PBL group at ETH Zurich as a lecturer and researcher.

My Research

My new Nvidia Jetson AGX for small-scale deep-learning experiments

My research is not limited to software engineering— which remains my main domain—but covers embedded development and hardware design. Indeed, in my bachelor’s thesis, I designed the PCB for a multipurpose data acquisition system by leveraging a consumer audio-band A/D converter. Then, I applied a Bayesian error correction algorithm to overcome the limitations of a sigma-delta A/D. The embedded algorithm written in C executed by a 32-bit microcontroller takes advantage of an LUT to limit the performance’s impact in real-time environments. The experimental results show up to 20 dB in the THD response reflected in a gain of 2 bits in the Effective number of bits (ENOB) of the considered analog-to-digital converter.

Later on, my research experience continued in collaboration with Bruitparif in Paris, initially designing a dedicated device for the remote control and successively developing an innovative multidirectional microphone. The motivation behind this study is the damaging effect that continuous noise exposure generates on people. To this aim, we designed a wearable system that must be extremely small, low-power, and guarantee remote access while having an excellent dynamic during the signal sampling. The first achievement, reached in 2019 after a highly challenging path, is a system capable of locating sound sources in a 3D map.

As I said, my research experience does not cover only hardware design and embedded development. Still, it focuses on empirical software engineering and, in particular, mining repositories, defect predictions, code review, natural language processing, artificial intelligence, and deep learning in general.

During my Master’s thesis, I conducted an empirical study to characterize quantitatively and qualitatively the differences between the development of video games and traditional software in open-source projects. Starting from a collection of 60 open-source projects and 81 survey participants, this study investigates how developers contribute, prevent malfunctions, and perceive the development process. The results shed light on the different needs of video game developers, which deal with a polyhedric environment that requires experts in various fields.

In my Ph.D. I focused on the code review and, in particular, on the possibility of using the off-the-shelf defect prediction techniques to ease the review process. The developer-centered nature of code review can represent a bottleneck that does not scale in large systems, compromising firms’ profits. This challenge has led to an entire line of research on code review improvement. I started reimplementing state-of-the-art defect prediction to understand its replicability; then, I evaluated this model in a more usual scenario. To improve defect prediction techniques, I developed a fine-grained just-in-time defect prediction model that anticipates the prediction at commit time and reduces the granularity at the file level. After that, I explored how to improve further prediction performance by using alternative sources of information. I conducted a comprehensive investigation of code comments written by both open and closed source developers. Finally, to further improve the code review process, I explored the information that reviewers need to lead a proper code review.
Findings showed that defect prediction could not be directly used to support code review when evaluated in a realistic scenario. Furthermore, I assessed that alternative sets of metrics, anticipated feedback, and fine-grained suggestions represent independent directions to improve prediction performance. Finally, I evaluated that research must create intelligent tools that, other than predicting defects, must satisfy actual reviewers’ needs, such as expert selection, splittable changes, real-time communication, and self-summarization of changes.

However, during my Ph.D. I had the opportunity to investigate additional topics, such as one related to mobile applications. In particular, developing mobile applications is a nontrivial task because even the tiniest error may have immediate and significant effects due to negative user reviews. Moreover, mobile software has to handle various sensors, respond promptly to users’ inputs, struggle with limited battery life, or deal with limited interface size. Nonetheless, the mobile applications market keeps growing. For example, mobile software for healthcare assistance is becoming a pervasive reality that allows users to keep their health status under control. Nonetheless, development practices adopted in mobile software still differ from traditional development, such as the self-reported activities of Android developers or the different logging practices with Mobile Analytics.

I am currently mainly focusing on the DEVINTA project to build an advanced assistant that eases developers’ duties. To this aim, the latest research triggers two deep learning models. The first one learns code changes performed by developers during real code review activities, thus providing the contributor with a revised version of her code implementing code transformations usually recommended during code review before the code is even submitted for review. The second one automatically provides the reviewer commenting on a submitted code with the revised code implementing her natural language comments. Another approach aims to explore state-of-the-art deep learning models’ capabilities in supporting code completion at different granularity levels. In particular, this study trains and evaluates a RoBERTa model on two corpora of actual data with performance ranging from 7% to 58% in terms of perfect predictions—according to the submitted task’s granularity.