Shape
Shape
Shape
Shape
Shape
Shape
Shape
Shape
Shape
Shape

Hello, I’m

Alessandro Midolo

Post-Doc Researcher on Software Engineering

View my Work
hero

About Me

I'm a Post-Doc Researcher at the Department of Engineering (DING) of the University of Sannio (Benevento, Italy).


I received the International Ph.D. Degree in Computer Science from the University of Catania in 2024, defending a thesis with title "ReFrame: A Refactoring Framework to Support Developers in Improving and Optimising their Source Code", advised by Prof. Emiliano Tramontana


I received the Master Degree in Computer Science with 110/110 magna cum laude from the University of Catania in 2020, defending a thesis with title "Analisi di Applicativi Java per la Generazione Guidata di Test", advised by Prof. Emiliano Tramontana and Dott. Andrea Fornaia


I spent five months as PhD visitor student at the Newcastle University (UK) in 2022, under the supervision of Prof. Maciej Koutny, and one month as PhD visitor student at the University of Thessaly (GR) in 2023, under the guidance of Prof. Ilias Savvas

My Research Interest

Code Refactoring

Because sometimes the only way to go forward is to go back and clean up the mess you made

Software Testing

The art of finding bugs you didn't know existed in places you never thought to look

Parallel Computing

Two threads are better than one, but a thousand threads will drive you insane

Source Code Quality

Good code is like a good joke—if you have to explain it, it’s not that good

Mining Software Repositories

I mine software repositories for a living—it's like archaeology, but with more bugs and less dirt

Software Maintenance

If you think it’s expensive to hire a good developer, wait until you hire someone to maintain their code

My Recent Publications

EX-CODE: A Robust and Explainable Model

to Detect AI-Generated Code

Automated Refactoring of Non-Idiomatic Python Code: A Differentiated Replication with LLMs

Automatically Injecting Robustness

Statements into Distributed Applications

Automatic Generation of Accurate Test

Templates based on JUnit Asserts

An Automatic Transformer from

Sequential to Parallel Java Code

An API for Analysing and Classifying

Data Dependence in View of Parallelism

Teaching

Tutto il materiale didattico e gli esercizi sono disponibili sul Repository Github (il repository è privato, richiedere l'accesso al docente)


Argomenti del corso
  • Introduzione al corso [slides]
  • Introduzione a DevOps: la cultura DevOps, concetti chiave, SCM & pipelines, continous integration, continuous delivery, microservices, infrastructure automation [slides]
  • Git e Maven: comandi git, git workflow, concetti avanzati su git, maven, gestione dipendenze, compilazione e testing, reportistica, integrazione con sistemi CI/CD [slides]
  • Microservizi: vantaggi e svantaggi, implementazione con spring boot [slides_1, slides_2, slides_3, slides_4]
  • Microservizi con Python [slides]
  • Design Pattern per i Microservizi: database per service, saga, event sourcing, api gateway, service registry, health check API [slides]
  • Software Testing: unit testing, test suite & scaffolding, junit, mockito, jacoco, mutation testing, regression testing, generazione automatica di test [slides, slides_2, Code_Defender]

Tutto il materiale didattico e gli esercizi trattati durante il tutorato sono disponibili sul Repository Github


Argomenti trattati
  • Sistemi di numerazione e rappresentazione binaria dei numeri interi. Conversioni numeri da base x a base y. Addizioni binarie ed evento di trabocco
  • Complemento a uno e complemento a due. Sottrazioni numeri binari. Numeri a virgola fissa e mobile. Standard IEEE 754 numeri a 32 bit e 64 bit. Codice ASCII
  • Istruzioni Macchina. Memoria del Calcolatore. Istruzioni RISC e CISC. Linguaggio Assembly ed istruzioni elementari. Modi di indirizzamento. Visual2 (Simulatore assembly ARM). Direttive di Assemblatore. Bit di esito. Esecuzione con salto. Istruzione di salto. Istruzione condizionale. Codici di condizione sui bit di stato
  • Pila (Stack). Operazioni su Pila in Visual2. Area di attivazione in pila. Sottoprogramma. Area di attivazione con annidamento di sottoprogramma. Registri di gestione; Passaggio di parametri
  • Algebra Booleana. Somma logica, prodotto logico, negazione e differenza simmetrica. Proprietà algebra booleana. Teorema di De Morgan. Funzioni ed espressioni logiche. Sintesi in forma minima. Mappe di Karnaugh. Condizione di indifferenza. Circuiti logici. Reti combinatorie. Proprietà dei circuiti. Minimizzazioni applicate ai circuiti
  • Istruzioni assembly per la manipolazione dei bit. Algebra booleana in assembly. Reti sequenziali bistabili e asincrone
  • Simulazioni Prove d'esame

Tutto il materiale didattico e gli esercizi trattati durante il tutorato sono disponibili sul Repository Github


Argomenti trattati
  • String, Liste e Classi in Java
  • Strutture Dati (Mappe) e Gestione del File System
  • Erediterietà, Polimorfismo e Documentazione
  • Programmazione Funzionale: Espressioni Lambda e Java Stream
  • Design Patterns: Singleton, Factory Method, Adapter, Facade, State, Observer, Model View Controller, Mediator e Decorator
  • Programmazione Parallela: Parallel Stream
  • Software Testing e CodeDefender
  • Simulazioni Prove d'esame

Get In Touch

Address

Office n. 50 (Blocco 3), Dipartimento di Matematica e Informatica (DMI), Viale Andrea Doria, 6, Catania, Italy

Email

alessandro dot midolo

at unict dot it