🤓 Personal Info
-
💼 I'm currently working as a consultant at Iriscube Reply. -
🚂 I'm currently in the process of finalizing my train model at home and making significant improvements to the DCC Command Station. While the basic DCC implementation was completed in 2020, I am currently focused on improving train detection and autopilot features. -
🎥 I love making videos. You may want to checkout some videos on my website! My suggestion is to start from the trailer of the documentary I shot in Tanzania! -
📫 How to reach me: LinkedIn, Instagram, E-mail, Twitter
🎓 Education
-
Master’s Degree in Computer Science @ University of Milan (2020 - 2023). Final mark: 110/110
- Exchange Period @ University of New South Wales, Sydney (September 2022 - March 2023)
- Exchange Period @ Ecole Polytechnique, Paris (September 2021 - March 2022)
- Bachelor's Degree in Computer Science @ University of Milan (2016 - 2020)
👀 Overview
💻 Projects
Name | Description | Context | Year |
---|---|---|---|
DCC Command Station | Implementation of the Digital Command Control (DCC) on an Arduino Board. DCC is a protocol for controlling locomotives on model railway routes which allows one or more locomotives to move independently on the same section of track. | Final Project of the course "Embedded Systems" (University of Milan) | 2020 - In Progress |
Decentralized Data Market | A Proof of Concept showcasing the feasibility of the design presented in my Master's Thesis, which focuses on the creation of a decentralized data marketplace through the use of DLT technology. | Master's Thesis Proof of Concept (University of New South Wales) | 2023 |
Approximate Pattern Matching | Parallelization of the Approximate Pattern Matching problem using 3 different parallel programming models (MPI, OpenMP and CUDA) for various architectures (CPU and GPU). | Final Project of the course "Algorithmique parallèle et distribuée" (Ecole Polytechnique) | 2022 |
Dronazon | The project focuses on process communication, low-level concurrency and synchronization in Java. More in detail the topics analyzed are the following ones: Multi-Threaded Servers, Thread Synchronization (synchronized), Thread Signaling (wait and notify), Machine to Machine Communication (JSON and XML), Protocol Buffers, Remote Procedure Call, GRPC Framework, Rest Servers and MQTT. | Final Project of the course "Distributed and Pervasive Systems" (University of Milan) | 2021 |
Systems for Big Data - Project | Various exercises with Spark and SparkStreaming. Main project focused on ranking Wikipedia Web pages with a centrality measure; realized in Hadoop, Spark and Java Threads. | Final Project of the course "Systems for Big Data" (Ecole Polytechnique) | 2022 |
Assembly Calculator | Implementation of a simple calculator in Assembly MIPS. | Final Project of the course "Computer Architecture II" (University of Milan) | 2017 |
Exploring OpenSSL | Basic encryption with OpenSSL (symmetric and asymmetric cryptography) and X.509 Certificates with OpenSSL (Digital Signatures, Certificates). | Single Assignment of the course "Network Security" (Ecole Polytechnique) | 2022 |
Triangles | Explored many topics and tools regarding the Verification and Validation of the software. Topics: Parameterized Tests, Stateful Property-based Testing, Model-based Testing, Mutation Analysis and Automated Acceptance Testing. Tools: JUnit 5, Jacoco, Clover, Mockito, PBT, Guice, Jqwik, Cucumber, Checkstyle, PMD, JPF. | Assignments of the course "Software Verification and Validation" (University of Milan) | 2021 |
📄 Papers
Name | Description | Year |
---|---|---|
DLT Solutions for Personal Data Sharing in the Digital Health Domain | Master's Thesis. Abstract available here. | 2023 |
Analysis of the Monero Blockchain and its possible applications to electronic voting protocol | Bachelor's Thesis. Abstract available here. | 2020 |
Detailed Study on BGP Hijacking | Final Assignment of the course "Digital Citizenship and Civic Activism" (University of Milan) | 2021 |
In-Depth Analysis of the Monero Blockchain | Final Assignment of the course "Blockchain 1: Bitcoin and Smart-Contracts" (Ecole Polytechnique) | 2021 |
Climate Change | Final Assignment of the course "Data Visualization" (Ecole Polytechnique) | 2021 |
Efficient Certification of Spatial Robustness | Final Assignment of the course "Safe Intelligent Systems" (Ecole Polytechnique) | 2021 |
📚 Exams Taken
Name | Period | Description | Interest |
---|---|---|---|
Computer Programming | Bachelor - 1° Year | This is an introductory class on programming, its principles, and techniques. Its aim is to make the student, who might never have been exposed to programming, familiar with this discipline and to provide those insights and tools required to approach all further classes that assume some knowledge of programming. |
|
Continuous Mathematics | Bachelor - 1° Year | At the end of the course, students should prove to have a sufficient knowledge of basic mathematics, that includes the main properties of sets, of the main number sets, in particular of real numbers, of functions between sets, of elementary functions, of combinatorics and of complex numbers. The student should know the basic results in the theory of differential and integral calculus for functions of one real variable. Finally, at the end of the course students should be able to apply the theoretical results to solve elementary problems and exercises and in particular they should be able to tackle the following kinds of problems: computation of limits of sequences or functions, analysis of the continuity of a function, computation of derivates, study of the qualitative graph of a function, computation of the Taylor polynomial and expansion, computation of definite and indefinite integrals. |
|
Computer Architecture I | Bachelor - 1° Year | The course introduces the principles at the base of a computer; simple logic gates are first presented, and then combined, thought a succession of intermediate abstraction layers, into the design of ALU firmware and of a MIPS architecture, capable of executing programs with a core machine language. The student will be familiar with the basic principles underlying the processing of digital information. In particular, (s)he will have the skills needed to understand, analyze and design combinatorial and sequential circuits. |
|
Computer Architecture II | Bachelor - 1° Year | The course provides the knowledge of the digital architectures and in particular of pipelines, multi-core and memory hierarchies better understand operating systems and to deeply understand how software can be optimized. The instruments for a quantitative evaluation of an architecture are also provided. The student will be able to understand how pipeline and multicore architectures work, how memory hierarchies are handled and what is the hardware support to virtual memory; (s)he will understand the types of connections between different components and the various policies to handle I/O. The student will have the tools needed to evaluate computer performances and to optimize applications. |
|
Automata and Formal Languages | Bachelor - 1° Year | The aim of the course is introducing concepts in formal language and automata theory, which play a central role in several trends in computer science, helping the student to adopt formal approaches. The student should be able to manage basics on computability theory. He should be able to distinguish among several types of formal grammars, relating them with several presented computational models. He should be able to design pushdown and finite state automata for simple languages, minimize finite state automata and devise equivalent regular expressions. |
|
Mathematical Logic | Bachelor - 1° Year | The main purpose of the course is to provide the basic knowledge and reasoning skills of Mathematical Logic and its applications to Computer Science. The student should acquire the ability to model and solve simple logical problems exploiting the techniques presented in the course. Moreover, the student should be able to apply logic techniques to the resolution of specific Computer Science's problems. |
|
Discrete Mathematics | Bachelor - 1° Year | The objectives of the course include the basic notions of mathematical reasoning and their associated formalisms, with a particular focus in discrete mathematics (set theory, algebraic structures, linear algebra and geometry). The ability of formalizing mathematical notions and reasonings, mastering basic notions of set theory and algebraic structures, knowing and properly applying the foundamentals of linear algebra and affine geometry. |
|
Algorithms and Data Structures | Bachelor - 2° Year | The objective of the course is the introduction of the basic concepts for the design and analysis of algorithms and data structures. The course will illustrate the main data structures and will focus on some specific algorithms, also analyzing their computational complexity. The student will know and will be able to use the main data structures and algorithms studied during the course. The student will also be able to propose adequate algorithmic solutions to simple problems, using the most appropriate data structures, and will be able to estimate the computational complexity of the proposed solution. |
|
Databases | Bachelor - 2° Year | The course provides the fundamental concepts related to databases and systems for their management, with particular focus on relational database systems. The course addresses i) theory issues dedicated to models, languages, and design methodologies as well as security and transaction aspects; and ii) laboratory issues dedicated to the use of design and management tools for relational databases, as well as the main technologies for the development of web applications based on databases. The student will acquire the following knowledge and the corresponding practical skills: design the conceptual scheme and the relational scheme of a database both starting from an informal description of the application domain and starting from a set of unstructured data; verify the level of normalization of the scheme and understand the concepts of functional dependency and normalization; understand and execute complex SQL queries correctly and define the execution plan in terms of relational algebra operations; understand, design and define the different types of indexes to optimize data access; implement active database functionalities by means of SQL procedures; understand and create web interfaces for data access. |
|
Statistics and Data | Bachelor - 2° Year | The course aim at introducing the fundamentals of descriptive statistics, probability and parametric inferential statistics. Students will be able to carry out basic explorative analyses and inferences on datasets, they will know the main probability distributions and will be able to understand statistical analyses conducted by others; moreover, they will know simple methods for the problem of binary classification, and will be able to evaluate their performances. The students will also acquire the fundamental competences for studying more sophisticated techniques for data analysis and data modeling. |
|
Software Engineering | Bachelor - 2° Year | The aim is to provide knowledge of models and tools for the analysis, design, development, and testing of software systems, in order to develop the abilities needed to design, develop, and test software systems.Students will be able to plan the development of medium size software projects. They will have skills on modeling software requirements, developing code from models and performing code testing. They have also skills on design and architectural patterns |
|
Operating Systems | Bachelor - 2° Year | The course aims to provide the basic knowledge about the theoretical foundations, the algorithms, and the technologies of the overall system architecture and the management of the processor, the central memory, the input/output devices, the file system, the user interfaces, and the distributed environments in the operating systems for the main types of information processing architectures. Understanding of theoretical foundations, algorithms, and technologies for the management of the processor, the central memory, the input/output devices, the file system, the user interfaces, and the distributed environments in the operating systems. Understanding the behavior of the management of the processor, the central memory, the input/output devices, the file system, the user interfaces, and the distributed environments in the operating systems to support the optimum implementation of applications. Understanding the configuration opportunities and the management of the processor, the central memory, the input/output devices, the file system, the user interfaces, and the distributed environments in the operating systems. |
|
Cryptography I | Bachelor - 3° Year | The course aims to provide an in-depth knowledge of the cryptographic algorithms and protocols widely used in real life (symmetrical, asymmetric, hash functions, KDFs, key exchange), paying particular attention to applications that protect data in-transit data, at-rest, and end-to-end. At the end of the course the students will be able to: (1) Understand and properly use symmetric/asymmetric encryption algorithms, hash functions, digital signatures; (2) Describe and use key exchange protocols, secret sharing schemes, secure communication protocols; (3) Analyze the security of a system and the attacks known in literature: collisions of hash functions, differential cryptanalysis, attacks on implementations. |
|
Law of Digital Products | Bachelor - 3° Year | This course aims at addressing the students a basic knowledge of the main notions and concepts of law related to digital content and new media. Also, it has the objective of focusing on issues belonging to legal definitions and users' and owners' rights liability for use or sharing of digital contents. By the end of this course, students should be able to: 1) Demonstrate their understanding of the substantive rules and principles of law, with a focus on digital media, and the ability to apply this knowledge in the current legal context. 2) Demonstrate their understanding of legal definitions and concepts, including, but not limited to, the digital media legal discipline, and show basic knowledge of legal framework. 3) Recall how legal norms apply to online activities. 4) Develop a sensibility towards the legal and ethical dimensions of digital media |
|
Computer Networks | Bachelor - 3° Year | The course of Computer Networks is the first course on networking and has the main objective of providing the founding concepts of the Internet protocols by analyzing protocols and services at the different layers of the hierarchical architecture. Students know the founding concepts of a packet switched network, can design and dimension the main network equipments and are able to configure a small local area network. |
|
Operating Research | Bachelor - 3 Year | The course aims to introduce Operations Research, i.e. the scientific study of methods for solving complex decision problems with the help of a computer. The aim is to learn to construct mathematical models of optimization problems, knowing how to classify models and to know the mathematical foundations of algorithmic techniques that allow them to be solved. Students will develop the ability of recognizing optimization problems, formulating them in mathematical models and they will know the mathematical properties that underlie the algorithms developed to solve them. |
|
Security and Privacy | Bachelor - 3° Year | The purpose of the course is twofold: on the one hand, we will introduce the basic concepts on computer security, on the other hand, we will cover the security problems specific to Web and mobile systems. Expected learning outcomes: 1) Being able to identify the security properties a system must ensure in order to be considered "secure". 2) Knowing the main approaches that can be used to authenticate users to a machine. 3) Being able to analyse a security protocol and possibly highlight the vulnerabilities with respect to the most common types of attack. 4) Being able to identify and describe the most common attacks on Web applications. 5) Knowing the most frequent malware and how they propagate. 6) Being able to describe the security issues of mobile devices. |
|
Embedded Systems | Bachelor - 3° Year | Provide the knowledge to design and implement an embedded prototype system. After an overview of the existing platforms on the market the bases of electricity/electronics will be provided, to master interfacing with the physical world. Next, embedded platforms software development approaches will be discussed. Grasp the knowledge on: how to choose the embedded platform suitable for a purpose/project; how to design and implement the software to upload to MCU; limits and possibilities of interfacing with the external world; how to choose sensors and actuators for a specific purpose; how to read an electrical diagram; how to choose between communication protocols (sensors and actuators, network); how to manage embedded platforms with/without an operating system |
|
Information Systems | Bachelor - 3° Year | Goal of the course is to introduce basic concepts on Enterprise information systems with reference to models and architectures of business processes covering front-end systems, back-end systems, enterprise governance. The course specifically focuses on methodological aspects related to datawarehouse analysis and design, with focus on data extraction and integration activities, by also presenting basic notions of big data analysis systems and their possible roles in enterprise activities. Students will be able to effectively analyze information systems architectures, by critically discussing and motivating different architectural solutions. Students will be able to apply concepts and methods introduced in the course to solve simple datawarehousing analysis and design problems. |
|
Digital Citizenship and Civic Activism | Master - 1° Year | The aim of the course is to provide the cognitive, methodological and technological tools to actively and consciously participate in the process of mutual influence between citizenship and information technologies, taking into account the institutional (top-down) and the spontaneous or "self-organized" point of view (bottom-up). The aim of the course is to create the ability of using the technological tools for the participation to the civil life in a critical and conscious way. |
|
Communication Protocols for Mobile, Ad Hoc, And Wireless Sensors | Master - 1° Year | The aim of the course is to provide in-depth knowledge on architectural aspects and protocols for data communication in wireless computer networks. The course analyzes algorithms for the diffusion of data in vehicular networks (VANET), in wireless sensor networks (WSN) with both stationary and mobile nodes, and protocols for Internet-of-Things (IoT) infrastructures with focus also on applications in the Industry 4.0 field. The student will acquire useful skills for identifying suitable solutions for the development of sensor networks according to the needs of the foreseen applications. The student will be able to work competently in companies that implement applications in the automotive, Internet-of-things and Industry 4.0 fields thanks to the knowledge of the main network standards. |
|
Wireless and mobile networks | Master - 1° Year | The course aims at teaching the main wireless communication architectures and protocols. It is paid much attention to the application part with practical examples and laboratory. Expected learning outcomes: 1) Ability to choose between different network architectures. 2) Ability to interpret a problem (Inherent communication) with the formulation of a solution. 3) Ability to create basic communication software. |
|
Distributed and Pervasive Systems | Master - 1° Year | The objective of this course is to illustrate the foundations of modern distributed systems and their extension to pervasive systems obtained by including smart objects, IOT, sensors and actuators as system nodes. In addition to classical topics like transparency, synchronization and distributed consensus, the course covers sensor data management techniques and context-awareness principles. A second objective is to provide a technological view of the topic describing the distributed systems that are behind the current cloud and edge computing offering and guiding the students in the design and implementation of a distributed system. The student will learn the main problems involved in the design and development of complex distributed systems like Cloud, Edge and DLT systems. The student will also be able to design distributed systems handling sensor data streams. The student will also have a hands-on experience through a software project. |
|
Software Development in Complex Working Groups | Master - 1° Year | The course analyzes organizational issues in software projects. It aims at train software developers fully aware of the management issues of complex projects. Students will be able to critically discuss key organzational models (cathedral, bazaar, kibbutz, agile). She will be able to leverage on software configuration management tools (in particular git) and continuous integration & delivery services. She will able to write programs together with special documentation and specifications aimed at division of labour and collaboration (in particular by exploiting Design by Contract approaches). |
|
Verification and Validation of the Software | Master - 1° Year | The aim of the course is to provide a deeper understanding about validation (i.e., checking if the software product matches the client's expetctations) and verification (i.e., checking if the software product matches the specification written by the analyst): in particular, the focus is on static analysis, testing and formal analysis. The student will be able to use in a proficient and critical way some widespread testing and analysis frameworks, while understanding their methodolgical and theoretical core aspects. |
|
Systems for Big Data | Master - 2° Year | This course covers the design principles and algorithmic foundation of influential software systems for Big Data Analytics. The course begins with the design of large enterprise data warehouses, query processing techniques for Online-Analytic Processing, and data mining over data warehouses. The course then examines fundamental architectural changes to scale data processing and analysis to a shared-nothing compute cluster, including parallel databases, MapReduce, column stores, and the support of batch processing, iterative algorithms, machine learning, and interactive analytics in this new context. |
|
Algorithmique parallèle et distribuée | Master - 2° Year | With the advent of multicore processors (and now many-core processors with several dozens of execution units), expressing parallelism is mandatory to enable high performance on different kinds of applications (scientific computing, big-data...). In this context, this course details multiple parallel programming paradigms to help exploiting such a large number of cores on different target architectures (regular CPUs and GPUs). It includes distributed-memory model (MPI), shared-memory model (OpenMP) and heterogeneous model (CUDA). All these approaches would allow leveraging the performance of differents computers (from small servers to large supercomputers listed in Top500). |
|
Data Visualization | Master - 2° Year | The visual representation of data takes full advantage of the human visual system in terms of perception and cognition. Elaborate patterns, interesting data points and outliers can easily be identified, individual data points and sets can efficiently be compared and contrasted, provided that the data is properly represented. Visualization enables users to explore their data in an interactive manner, to get overviews and drill down to detailed views, following processes that yield insights that would be difficult to obtain using fully automated data analysis techniques from fields such as, e.g., data mining or machine learning. They serve different purposes, but can complement one another very effectively. Visualization can for instance help formulate hypotheses, that can then be tested using statistical tests or other elaborate data analysis techniques. Beyond these exploratory aspects, data visualization can also support decision making, and plays a central role in the communication of findings to a wide range of audiences. This course first gives an overview of the field of data visualization. It then discusses fundamental principles of human visual perception, focusing on how they help inform the design of visualizations. The following sessions focus on visualization techniques for specific data structures, and discuss them in depth from both design and implementation perspectives, including: multi-variate data, hierarchical structures, networks, time-series, statistical data and geographical data. All exercises are based on Web technologies, including the D3 software library (Data-Driven Documents) and the Vega-lite interactive graphics grammar. While positioned at different levels of abstraction, both enable developers to create a wide range of interactive, Web-based visualizations that run on a variety of platforms, ranging from desktop workstations to mobile devices. |
|
Internet: from fundamentals to reality | Master - 2° Year | Armed with the fundamentals and theory behind modern networking technology, this courses plunges into the reality of how the Internet really works, and how it came to be the resilient, yet in many ways quite fragile, world-wide system it is today. While billions of people take the Internet for granted today, the system is still at its infancy and is subject to rapid and significant change. One of the interesting, and perhaps surprising, characteristics of the Internet is, that we as individual engineers still can make a difference: by examining what works and what doesn't, and understanding the science and art of what truly makes for a successful protocol, the Internet remains a ripe field of innovation. In this course we will come face to face with the reality of what is and is not "broken" on the Internet today, how to examine the success or failure of an Internet protocol of their choice, and examine the economic and technical aspects of the patchwork of protocols and systems that make up the most complex distributed system mankind has ever created. |
|
Safe Intelligent Systems | Master - 2° Year | L'interaction de composantes informatiques, qui calculent et communiquent, avec leur environnement régi par des lois physiques, comme pour un avion ou un système médical implanté, est au centre du domaine émergent des systèmes cyber-physiques. Parmi les défis posés par ces systèmes auxquels nous nous intéresserons, l'utilisation croissante d'algorithmes d'intelligence artificielle (réseaux de neurones typiquement), que ce soit pour la perception ou le contrôle. Maitriser la modélisation, le contrôle et la vérification du comportement de tels systèmes est crucial pour garantir l'efficacité, les fonctionnalités et la fiabilité de ces systèmes, toujours plus complexes et le plus souvent critiques en terme de sécurité ou de coût. Le cours s'attachera à trouver un équilibre entre modélisation et vérification, et entre fondations théoriques et les aspects pratiques. Il introduira notamment aux principes et à l'utilisation de quelques outils représentatifs de l'état de l'art, et s'intéressera à des cas d'étude réalistes (notamment un modèle temporel de pacemaker modélisé et vérifié avec l'outil Uppaal). Le cours est central aux thématiques de la filière Design of Intelligent Autonomous Systems, mais il est également naturel dans le parcours Electrical Engineering ou dans les filières The Internet of Everything for a Digitized Society (IOE4DS) ou Algorithms and Foundations of Programming Languages. Des sujets de projets 3A en lien avec des thématiques peuvent être proposés. |
|
Multimedial Techa Organization and Digitalization | Master - 2° Year | The course objective is to give students the basic notions and techniques for organizing and digitizing information of multimedia libraries (large archives made up of textual, audio, image, video documents). The student should acquire the basic knowledge and techniques for digitization, indexing, digital preservation and enhancement through virtualization of media libraries. |
|
Network Security | Master - 2° Year | Threats and attacks are like living organisms: some survive unaltered, mostly hidden from view, but remain deadly when conditions are “just right”; others emerge quickly, wreck havoc, then become extinct — and yet others keep evolving, both in terms of their propagation methods and their impact. A network professional can therefore not be limited to just static application of risk assessment methodology, nor to mechanical application intrusion detection and forensics tools — and must, by nature, not simply be “following a cookbook”, but must also have a complete understanding of the whole processes, technologies, and theories involved in attacks. This program in network security is therefore not just limited to a theoretical understanding the state of the art of security standards, threats, and techniques— but tries to bring a broad systems-understanding, to be able to be proactive and identify potential attack surfaces of a system, before an attack exists, and the necessary background to be able to rapidly analyse and understand the root nature of a new attackon a system. To this end, the program alternates theoretical lectures and hands-on exercises, with seminars and “war-stories”, with 4h practice sessions during which we will be building a first-hand experience with how vulnerable real-world Internet-connected systems are — as well as with how “white-hat” IT professional constructs (more) secured computer networks. |
|
Blockchain 1 | Master - 2° Year | Lecture 1: Introduction. Lecture 2: Cryptography. Lecture 3: Nakamoto Consensus. 4: Cryptocurrencies and new monetarist economics. 5: Bitcoin Script. 6: Tokenomics. |
|
Personal projects
View allInfo
5:00 PM
Member since January 13, 2020