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

Curriculum(s) for 2024 - Engineering in Computer Science (30430)

Single curriculum
Lesson [SSD] [Language] YearSemesterCFU
1044417 | ALGORITHM DESIGN [ING-INF/05] [ENG]1st1st6

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.

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. 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
1022891 | Software Engineering [ING-INF/05] [ENG]1st1st6

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.Risultati di apprendimento attesi (Inglese): 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.

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.

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.

10599898 | Artificial Intelligence and Machine Learning [ING-INF/05] [ENG]1st2nd9

Educational objectives

General objectives:
Knowledge of main application scenarios in high-dimensional data analysis.
Knowledge and understanding of main algorithms and approaches to analyze high dimensional data. Knowledge of main tools to implement them.
Understanding of theoretical foundations underlying main techniques of analysis Ability to implement the aforementioned algorithms, approaches and techniques and to apply them to specific problems and scenarios.
Knowledge of main evaluation techniques and their application to practical scenarios.

Specific objectives:
Ability to:
- identify the most suitable techniques to address a data analysis problem where data dimensionality is a concern;
- implement the proposed solution, identifying the most appropriate design and implementation tools, among available ones;
- Design and implement experiments to evaluate proposed solutions in realistic settings;

Knowledge and understanding:
- knowledge of main application scenarios;
- knowledge of main techniques of analysis;
- understanding of methodological and theoretical foundations of main analysis techniques;
- knowledge and understanding of main evalutation techniques and corresponding performance indices

Apply knowledge and understanding:
- being able to translate application needs into specific data analysis problems;
- being able to identify aspects of the problem for which data dimensionality might play a critical role;
- being able to identify the most suitable techniques and tools to address the aforementioned problems;
- being able to estimate in advance, at least qualitatively, the degree of scalability of proposed solutions;

Critical and judgment skills:
Being able to evaluate, also experimentally, the effectiveness and efficiency of proposed solutions

Communication skills:
Being able to effectively describe the requirements of a problem and provide to third parties the relative specifications, design choices and the reasons underlying these choices.

Learning ability:
The course will facilitate the development of skills for the independent study of topics related to the course. It will also allow students to identify and critically examine material contained in advanced manuals and/or scientific literature, allowing them to face new application scenarios and/or apply alternative techniques to known ones.

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

Educational objectives

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

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.