Professor Lenzini pioneered and regularly taught, between 1994 and 2013, three full-year courses for students enrolled in the Computer Systems Engineering program at the University of Pisa, Faculty of Engineering, at the master's degree (Laurea Magistrale) level. The courses were entitled Computer Networks, Advanced Networking Architectures, and Performance Evaluation of Networks and Systems.
The first course addressed the fundamental concepts of computer networking, with particular emphasis on the packet-switching paradigm and on the IP and TCP protocols. The second course focused on advanced networking technologies, wireless systems, and cutting-edge network architectures. The third course dealt primarily with queueing systems and performance evaluation methodologies.
Professor Lenzini has also regularly delivered courses and lectures for PhD students in Pisa and, until 2011, in Lucca, focusing on advanced computer networking architectures and systems.
Starting from the academic year 2024/2025, Professor Lenzini introduced and has been teaching, for the first time ever at the School of Engineering of the University of Pisa, a course entitled Quantum Computing and Quantum Internet for master's degree students in Computer Engineering (Laurea Magistrale in Ingegneria Informatica).
Below is an excerpt from the 2026/2027 edition of the course "Quantum Computing and Quantum Internet". Professor Lenzini has been teaching this course since the 2024/2025 academic year to students in the Master's degree programme in Computer Engineering at the University of Pisa.
The syllabus and further course details, along with other useful information for students, are available at quantum.dii.unipi.it.
Quantum computing is an emerging computational paradigm that exploits the principles of quantum mechanics to process information in ways that are fundamentally different from those of classical computers. By harnessing phenomena such as superposition, interference, and entanglement, quantum algorithms can provide significant advantages for specific computational tasks, including integer factorization, quantum simulation, optimization, and search.
The rapid progress of quantum hardware has been accompanied by the development of increasingly sophisticated software ecosystems. Today, software development kits such as Qiskit enable programmers to design, simulate, test, and execute quantum programs on both classical simulators and quantum processors. As a result, quantum programming is emerging as a new discipline at the intersection of computer science, software engineering, mathematics, and quantum information science.
At the same time, a second technological frontier is taking shape: the quantum Internet. While the classical Internet enables the exchange of digital information, quantum networks are designed to distribute quantum states and entanglement among geographically separated nodes. Such capabilities open the way to applications that have no classical counterpart, including quantum-secure communication, distributed quantum computing, blind quantum computing, and quantum sensing networks.
The long-term vision is the creation of large-scale quantum networks interconnecting quantum processors, memories, and sensors through a new generation of communication infrastructures. Achieving this vision requires the development of novel architectures, protocols, and technologies, including quantum repeaters, entanglement distribution mechanisms, quantum teleportation, and quantum network control protocols.
As quantum technologies continue to mature, computer engineers and software developers will increasingly need to understand not only how quantum computers operate, but also how quantum applications can be designed, implemented, and deployed across interconnected quantum systems.
Designed for Computer Engineering students, this intermediate-level course develops the knowledge and practical skills required to program quantum computers, implement quantum communication protocols, and understand the architectures underlying future quantum networks.
This course provides an intermediate-level study of quantum computing and quantum networking from a software engineering perspective. It introduces the fundamental concepts of quantum information processing, the principles underlying quantum communication systems, and the methodologies required to design and implement quantum software and protocols.
The course combines theoretical foundations with practical programming experience. Topics include quantum states and operations, quantum algorithms, quantum communication protocols, quantum noise models, quantum error correction, and the architectural principles of the quantum Internet. Particular emphasis is placed on understanding how quantum information can be processed, transmitted, protected, and exploited in both standalone quantum computers and interconnected quantum systems.
A significant component of the course is devoted to software development. Through lectures, guided exercises, and the hands-on Quantum Software Laboratory, students learn how to implement, test, debug, and analyze quantum algorithms and quantum networking protocols using modern software frameworks.
The Quantum Software Laboratory makes use of Qiskit, IBM's open-source Python SDK for quantum computing, and QuantumSavory.jl, a Julia framework for the simulation and study of quantum systems and quantum networks. Students develop programs that can be executed on simulators and, whenever resources are available, on real quantum processors.
Upon successful completion of the course, students will be able to:
This course adopts a software-oriented perspective on quantum computing and quantum networking. Its primary objective is to provide students with the conceptual and practical tools required to design, implement, and analyze quantum algorithms and quantum communication protocols.
What this course does not cover. The course does not address the physical implementation of quantum hardware. In particular, it does not cover qubit technologies, the engineering of quantum processors, or the hardware realization of quantum gates. Topics such as superconducting qubits, trapped ions, neutral atoms, photonic platforms, and quantum device fabrication are outside the scope of the course.
Instead, quantum computers and quantum networks are treated as programmable systems whose behavior can be modeled, analyzed, and exploited through software. The emphasis is therefore placed on quantum information processing, quantum programming, quantum algorithms, quantum communication protocols, quantum error correction, and quantum network architectures.
No prior knowledge assumed. No prior knowledge of quantum mechanics is required. The quantum-mechanical concepts necessary to understand quantum information processing are introduced and developed throughout the course.
No prior experience with quantum computing, quantum programming, or the Julia programming language is assumed.
Students enrolling in this course are expected to possess:
The laboratory component of the course provides hands-on experience with contemporary quantum software frameworks and development tools. Its primary objective is to bridge the gap between theoretical concepts and practical implementation through the design, execution, and analysis of quantum programs and quantum networking protocols.
Students work with two complementary software environments. Qiskit, IBM's open-source Python SDK, is used to develop, simulate, and execute quantum algorithms on both simulators and, whenever resources are available, real quantum processors. QuantumSavory.jl, a Julia-based framework for quantum system and network simulation, is used to model quantum communication protocols, entanglement distribution mechanisms, and quantum Internet architecture.
Qiskit — Python · IBM Quantum · QuantumSavory.jl — Julia · Quantum networks
The Quantum Software Laboratory emphasizes software engineering practices, including program design, debugging, validation, performance analysis, and reproducibility. Particular attention is devoted to understanding how theoretical quantum-information concepts are translated into executable software.
AI-assisted development. Given the rapid evolution of the field, students are also encouraged to use modern AI-assisted development tools, including large language models and coding agents, in a critical and responsible manner. These tools are treated as productivity aids rather than substitutes for technical understanding. Students remain responsible for validating, interpreting, and fully understanding the software they develop.
Assessment is based on an oral examination in two parts — a quantum circuit to solve at the blackboard, then a theoretical question — and on a project developed with Qiskit and/or QuantumSavory.jl. Rules, sample questions and past projects are on the Exam & Projects page.
Exam details, project rules, sample questions and past projects →
Twenty teaching units, from foundations to the quantum Internet.
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
Quantum Software Laboratory
The books are listed in a progression of difficulty: basic, intermediate, and advanced.