This feature allows you to view your educational path, if you enrolled in previous years

Curriculum(s) for 2025 - Engineering in Computer Science and Artificial Intelligence (33515)

Single curriculum
Lesson [SSD] [Language] YearSemesterCFU
10599896 | Dependable distributed systems [ING-INF/05] [ENG]1st1st9

Educational objectives

GENERAL OBJECTIVES
The main objective of the course is to provide the basic knowledge for the design and development of a distributed system that is able to satisfy the main dependability requirements (e.g., reliability, service availability, data integrity, information confidentiality etc.).

SPECIFIC OBJECTIVES

- Knowledge and understanding
Distributed systems are the basis of any modern IT application. Therefore it must be designed and developed taking into account the main non-functional requirements needed to guarantee a certain pre-defined degree of Quality-of-Service despite the presence of faults, malfunctions and intrusions into the system.
The course has the main objective of providing students with a clear characterization of concurrency in a distributed system considering the characteristics of such a system such as faults, variable latency in communications and the absence of a global clock.
Subsequently, the main system models and the basic abstractions for communication and synchronization will be analyzed, the basic primitives for the construction of a middleware will be introduced, the basic concepts of a peer-to-peer system will be provided with some examples of real systems like distributed ledgers and blockchains. Finally, basic techniques for the analysis of dependability (analytical models and simulation models) will be introduced to allow students to evaluate the designed system and its ability to satisfy the levels of dependability and quality of service imposed by the system specifications.

- Apply knowledge and understanding
The student will be able to design systems and algorithms compliant with different system models ranging from synchronous, asynchronous and partially synchronous ones, understanding impossibility and performance limitations.
He/She will also have the ability to abstract real systems and platforms into abstract models that are easier to deal with.
Finally, the student will be able to carry out a dependability analysis of the system and to carry out a comparative analysis between different solutions.

- Critical and judgment skills
The student will be able to evaluate and compare different solutions for the design and development of distributed systems and applications. He/She will also be able to evaluate the appropriate trade-offs in consideration of the various aspects that characterize the specific environment in which the application will go into operation.

- Communication skills
The student will acquire the specific domain terminology.

- Learning ability
The student will learn basic techniques and methodologies for the design and development of distributed systems and applications.

10600393 | Cybersecurity [ING-INF/05] [ENG]1st1st9

Educational objectives

General Objectives

1. Provide a comprehensive vision of cybersecurity, understood as a technical and cultural discipline, essential in contemporary digital society.
2. Train aware professionals, capable of critically evaluating the security of systems, applications and IT infrastructures, even in real and complex contexts.
3. Cultivate a security-oriented design mindset, raising awareness of the need to integrate protection, privacy, authenticity and resilience from the early stages of technology development.
4. Promote autonomy in study and research, providing conceptual and methodological tools to explore advanced or emerging topics in the field of cybersecurity.

Specific objectives

1. Understand the fundamentals of cybersecurity, with particular attention to:
• Symmetric and asymmetric encryption
• Message integrity and authentication
• Digital signatures and their standards ( PAdES , CAdES , XAdES , JAdES )

2. Study real security protocols and systems, including:
• HTTPS, IPsec, TLS/SSL, SSH
• Authentication via password, biometrics, Kerberos, X.509 certificates
• E-mail security
• Methodologies and techniques for network security

3. Analyze threats and attack models, developing:
• Ability to identify vulnerabilities
• Understanding of attack and defense techniques
• Identify common attack patterns to web applications

4. Learn more about the use of secure random number generators, which are essential to cryptography and protocols.

5. Apply theory to practice, through:
• Homework and exercises
• Projects and theses (for interested students)

6. Develop critical thinking about the security of modern digital technologies.

- Knowledge and understanding
At the end of the course, the student will have acquired a solid knowledge of the fundamental principles of computer security, with particular reference to theoretical models and practical tools to guarantee confidentiality, integrity, authentication and availability of information. In particular, you will be able to:
• understand the functioning and limitations of the main cryptographic algorithms, both symmetric and asymmetric;
• recognize and evaluate security threats in communication systems and network protocols;
• analyze the authentication mechanisms, identity management and digital signatures, also in light of the relevant international standards;
• understand security architectures at different levels of the protocol stack , including HTTPS, TLS, IPsec , SSH, and Kerberos.

Understanding will be supported by both real-world examples and application activities and critical discussions, in order to foster a systemic and up-to-date vision of the topic.

- Applying knowledge and understanding:
The student will be able to effectively apply the concepts and tools acquired to analyze, design and evaluate security solutions in the IT field. In particular, you will be able to:
• identify vulnerabilities in communication protocols and computer systems;
• select and implement cryptographic techniques appropriate to specific application contexts;
• configure and evaluate authentication protocols, identity management systems and public key infrastructures (PKI);
• analyze real attack and defense scenarios, formulating security mitigation and improvement strategies;
• understand and use standards and tools for digital signature and data protection in transit and at storage.

Application skills will be developed through hands-on exercises, case study analysis, and guided discussions on known vulnerabilities and incidents.

- Making judgements:
At the end of the course, the student will have developed the ability to critically analyze cybersecurity problems, independently evaluating possible solutions in light of technical, regulatory and ethical constraints. In particular, you will be able to:
• reflect on the implications of adopting (or failing to adopt) security measures in digital systems;
• compare security approaches and technologies, evaluating their effectiveness, scalability and sustainability;
• make reasoned judgments on secure system designs and architectures, taking into account real and multidisciplinary contexts;
• recognize the limitations of existing technologies and the need for continuous updating in a rapidly evolving sector.

The course stimulates critical thinking through case study analysis, discussions of real incidents, and reflections on ethics and responsibility in designing safe systems.

- Communication skills:
The student will acquire the ability to communicate clearly, precisely and appropriately contents, problems and solutions related to cyber security, both to specialist and non-specialist interlocutors. In particular, you will be able to:
• describe and motivate the adoption of security technologies and protocols with accurate technical language;
• explain cybersecurity risks, countermeasures and implications in an understandable way, even to non-technical stakeholders (e.g. in corporate, legal or institutional settings);
• actively participate in critical discussions on cases of attack and defense, including in collaborative or interdisciplinary contexts;
• write short technical reports and clear documentation on configurations, analyses and laboratory results.

The course fosters these skills through oral exercises, group discussions, writing papers and interaction with popular and scientific materials.

- Learning skills:
At the end of the course, the student will have developed solid autonomous and continuous learning skills, essential for updating in a field, such as cybersecurity, in constant technological and regulatory evolution. In particular, you will be able to:
• find and critically understand technical documentation, scientific articles and international standards on cybersecurity;
• independently explore advanced or emerging topics (e.g. new vulnerabilities, post-quantum protocols, privacy regulations);
• apply flexible study strategies to address the heterogeneity of sources (manuals, specifications, white papers, codes of conduct);
• approach research or development projects in safety with method and a critical spirit, even in an academic or professional context.

The course encourages independent learning through open-ended assignments, suggested readings, access to online resources, and a problem-solving approach.

1022858 | MACHINE LEARNING [ING-INF/05] [ENG]1st1st6

Educational objectives

Obiettivi generali.

Obiettivo del corso è la presentazione di un ampio spettro di metodi e algoritmi per il Machine Learning, l'analisi delle loro proprietà, i criteri di convergenza e l’applicabilità. Il corso presenterà anche esempi di applicazioni di successo in diversi scenari applicativi. Il principale risultato atteso è l'acquisizione della capacità di risolvere problemi di apprendimento attraverso una corretta formulazione, una scelta appropriata dell'approccio risolutivo e l’analisi sperimentale.

Obiettivi specifici.

Conoscenza e capacità di comprensione:
Fornire una panoramica completa dei principali metodi e algoritmi di apprendimento automatico per problemi di classificazione, regressione e apprendimento non supervisionato. Tutti i problemi sono definiti formalmente e ne vengono fornite le basi teoriche, così come i dettagli tecnici e implementativi, per comprendere le soluzioni proposte.

Capacità di applicare conoscenza e comprensione:
Risolvere problemi specifici di apprendimento automatico a partire da dati di addestramento, attraverso l’applicazione corretta dei metodi e degli algoritmi studiati. Lo sviluppo di piccoli progetti da svolgere a casa consente agli studenti di applicare le conoscenze acquisite.

Autonomia di giudizio:
Capacità di valutare le prestazioni di un sistema di apprendimento automatico utilizzando metriche e metodologie di valutazione adeguate.

Abilità comunicative:
Capacità di redigere una relazione tecnica descrivendo la soluzione adottata, dimostrando così competenze nella comunicazione dei risultati ottenuti dall’applicazione delle conoscenze acquisite alla risoluzione di un problema specifico. Esporsi a esempi di comunicazione tramite la discussione dei risultati ottenuti in casi pratici. Lavorando in gruppo ai progetti da svolgere a casa, gli studenti apprenderanno come comunicare efficacemente a livello tecnico.

Capacità di apprendimento:
Acquisendo il vocabolario di base e i fondamenti del Machine Learning, gli studenti svilupperanno le competenze necessarie per accedere autonomamente alla letteratura specialistica e apprendere nuovi approcci e tecniche, utili per la realizzazione dei progetti individuali. Più in generale, il corso fornisce le basi necessarie ad affrontare con successo argomenti più avanzati di Machine Learning, come il Deep Learning e il Natural Language Processing (NLP), tipicamente proposti in corsi accademici avanzati.

10600392 | Artificial Intelligence [ING-INF/05] [ENG]1st1st6

Educational objectives

General objectives.
The course aims to introduce the fundamentals of Artificial Intelligence, with a particular emphasis on automated reasoning and sequential decision making.
Students will become familiar with the main formalisms and approaches for knowledge representation and reasoning, in both static and dynamic contexts.
They will also learn the basics of decision making approaches for deterministic, non-deterministic, adversarial, and stochastic domains.

Specific objectives.

Knowledge and understanding:
Students will be introduced to the basics of Knowledge Representation for static and dynamic systems through formal approaches: propositional and first-order logic, situation calculus, MDPs. The fundamental logical tasks (evaluation, satisfiability, validity, logical implication) will be studied and basic solution techniques (DPLL, tableau method) will be learnt.
The goal is to understand the importance of the formal model and of domain-independent approaches as fundamental tools to automatically solve problems.
Students will learn how to model a Planning domain through the PDDL language and how to solve planning problems in deterministic, non-deterministic, adversarial, and stochastic scenarios. Essential forward state-space search techniques will be introduced: uninformed search, heuristic search, best-first search, A* search, AND-OR search.
For stochastic scenarios, Policy Evaluation and Policy Iteration will be learnt.

Applying knowledge and understanding:
Students will learn how to abstract and model real-world scenarios as static or dynamic domains in a rigorous way, as well as to identify and formalize real-world problems. They will also be able to apply the techniques acquired during the course to solve the modelled problems.
By understanding how to formally model and solve problems, students will become able to design and implement simple reasoning systems for a variety of real-world scenarios and related problems.

Making judgements:
Students will be able to evaluate the appropriateness and quality of a representation formalism with respect to various classes of problems and to select the most suitable solution technique.

Communication:
The course will provide students with the basic notions and vocabulary to effectively interact with their pairs and experts in the area. Oral communication skills are stimulated through the interaction during class, while writing skills are developed through the analysis of exercises and answers to the open questions included in the final test.

Lifelong learning skills:
The course will provide students with the essential tools needed to access the specialised literature. In this way, they can autonomously strengthen and broaden their competencies. In addition to such learning capabilities, students will also acquire advanced modelling and general problem solving skills.

AAF2141 | Laboratory of advanced programming [N/D] [ENG]1st1st3

Educational objectives

General outcomes.
The course offers an introduction to various software development technologies, including distributed ones, which can potentially be used in other courses of the training programme. Furthermore, modern agile software development methodologies and techniques are applied through the development of a group project.

Specific outcomes.
Knowledge and understanding:
Programming Web Services in Java and Python. Programming distributed systems with blocking and non-blocking calls. SCRUM and agile methods. Virtualization and dockerization.

Applying knowledge and understanding:
Be able to design an application made up of different components and microservices.

Making judgements:
Be able to evaluate the quality of an application also in terms of different architectural and distribution choices.

Communication skills:
The project activities and the presentation of the project in pitch mode and with a working demo allow the student to be able to communicate/share the requirements of a medium complexity software application, as well as the design choices and the design and development methodologies of this application .

Learning skills:
In addition to the classic learning skills provided by the study of the teaching material, the methods of carrying out the course, in particular the project activities, stimulate the student to independently study some topics presented in the course, to work in groups, and to concrete application of the notions and techniques learned during the course.

10620852 | USER-DRIVEN SOFTWARE ENGINEERING [ING-INF/05] [ENG]1st2nd6

Educational objectives

The course examines the process of software development and presents the methodologies, the quality standards, the metrics, and the techniques commonly used for
estimating, planning, and testing of professional software applications. In order to properly interpret the measures used in the context of software quality assurance, the course presents the basic notions of the theory of measurement and of the analysis of variance.

At the end of the course a student will be able to:
- select a model for the development of a software application;
- estimate the software cost ;
- plan the development and test activities;
- select the metrics for the software quality assurance;
- evaluate the statistical significance of experiments based on numerical sampling.

1022797 | Data Management [ING-INF/05] [ENG]1st2nd6

Educational objectives

General objectives:

The goal of the course is the investigation on the basic concepts of Data Management systems, emphasizing both the relational model and various NoSQL models. Several major
issues related to the theory and the design of relational data management systems are covered, including concurrency control, recovery, file and index organizations, query processing, OLAP and OLTP. A good knowledge of the fundamentals of Programming Structures, Programming Languages, and Databases (SQL, relational data model,
Entity-Relationship data model, conceptual and logical database design) is required.

Knowledge and understanding:
The student will have a good knowledge on how a Data Management System, even a NoSL one, works, how it is structured, and how it is designed. Also, the student will acquire knowledge of the architecture of a database management system and of its main modules (transaction manager, recovery manager, query evaluator). The student will also acquire a good understanding of how to design the physical organization of relations (files and indices), and how the query optimizer of a Data Management system works.

Applying knowledge and understanding:
The students will be able to design her/his own Data Management system, including the concurrence control module, the recovery module, the access file method, and the query optimizer.

Making judgements:
The student will be able to evaluate various kinds of Data Management systems, including NoSQL ones, and will be able to choose the right technique for concurrency, recovery, and query processing in specific application contexts.

Communication skills:
The students will acquire a good knowledge on how to illustrate the algorithms and the techniques at the basis of a modern Data Manager.

Learning skills:
The student will be able to understand any new architecture and approach to Data Management that will become popular in the future.

1044417 | ALGORITHM DESIGN [ING-INF/05] [ENG]1st2nd6

Educational objectives

The objective of the course is introduce the fundamental concepts of
algorithms design for polynomial time and hard computational problems. The
course will present the basic concepts of algorithm design for

network flow and matching problems. General techniques such as greedy and
dynamic programming will be applied to problems like shortest paths, spanning
tree, knapsack, scheduling. Approximation algorithms will be presented for hard
computational problems like TSP, vertex cover, set cover, sat, scheduling.
Special emphasis will be given to methods based on Linear Programming and
randomized algorithms. Finally, the course will introduce the major
computational problems in game theory.

Elective course [N/D] [ENG]1st2nd6

Educational objectives

Among other training activities are provided 12 credits are chosen by the student.

AAF2536 | Advanced Topics in Computer Science and Artificial Intelligence [N/D] [ENG]2nd1st3

Educational objectives

The course offers students the opportunity to deepen their knowledge through a series of seminars on research topics in the field of Computer Science and Artificial Intelligence.
The course includes the study of advanced topics, also explored through scientific articles related to the latest developments in the field, as well as in-class contributions from researchers and scholars in the subject.

Elective course [N/D] [ENG]2nd1st6

Educational objectives

Among other training activities are provided 12 credits are chosen by the student.

AAF1028 | Final exam [N/D] [ENG]2nd2nd30

Educational objectives

The student will present and discuss the results of a technical activity, producing a written thesis supervised by a professor and showing the ability to master the methodologies of Computer Science Engineering and/or their application.