Educational objectives General goals:
Knowledge of the elementary techniques of Integral and differential calculus.
Specific goals:
Provide basic mathematical analysis tools such as integrals, numerical and power series and differential equations.
Knowledge and understanding:
Riemann integration; improper integrals. Numerical series. Power series. ODE (first degree: linear, separation of variables method) second degree with constant coefficients (homogeneous and with known term).
Applying knowledge and understanding:
To be able to carry out exercises on numerical and power series.
To understand the notion of definite and indefinite, improper integrals. also in relation to numerical series.To know the ordinary differential equations that can be carried out explicitly as those of the first order linear and with a separation of variables method, or of the second order with homogeneous constant coefficients and with a known elementary term.
Critical and judgmental abilities:
Know how to identify the best approach, among the various ones studied, to solve an integral, series or differential equations. Furthermore, the student will be able to understand the problems relating to proper and improper integrals and divergent series.
Communication skills:
To be able to discern between the various mathematical tools useful for understanding integrals, series and differential equations and also to explain the rigorous methods used.
Learning ability: To be able to state and apply the theorems and techniques used during the course.
|
Educational objectives General goals: to acquire knowledge and ability to apply basic topics of probability and statistics.
Specific goals: Axioms and elementary properties of probabilities. Random variables. Continuous and discrete distributions. Expected values. Introduction to estimation theory and hypothesis testing.
Knowledge and understanding:
At the end of the course the student will have acquired the basic notions and results related to probability theory on finite and countable spaces, to the concept of random discrete vectors and to the concept of continuous random variable.
Applying knowledge and understanding:
At the end of the course the student will be able to solve simple problems in discrete probability, problems concerning discrete random vectors and random numbers represented by continuous random variables. The student will also be able to understand the meaning and implications of independence and conditioning (in the context of discrete models), to understand the meaning of some fundamental limit theorems, such as the law of large numbers.
Critiquing and judgmental skills:
Students will have the bases to analyse and to build simple probabilistic models for physics, biology and technology, simulate discrete probability distributions, as well as the Gaussian distribution and understand the use of some elementary tools in statistics, like inference, sampling and simulation.
Communication skills:
Ability to expose the contents of the course in the oral part of the test and in any theoretical questions present in the written test.
Learning ability:
The acquired knowledge will allow a study, individual or given in a course related to more specialized aspects of probability theory.
|
Educational objectives General goals:
Being able to design/evaluate properties, physical organization and concurrency management of a relational database
Specific goals:
Knowledge of properties for a relational schema and a decomposition. Ability to use relational algebra expression for querying information in a relational database. Awareness about operation costs for data management.
Knwoledge and understanding:
Theoretical foundation of database design and formal languages for database querying (relational algebra). Data structures for the storage and management of data.
Applying knowledge and understanding:
Designing relational schema with "good properties". Querying a database by means of relational algebra. Evaluate operation costs of foundational operations over a database management system under different storage methods.
Analysis and evaluation skills:
Being able to ealuate the properties of a relational database and its decomposition. Being able to select the best data structure for the database management system.
Communication skills:
Being able to present/share the qualitative and quantitative characteristics of a relational database.
|
Educational objectives General goals:
Being able to design/evaluate properties, physical organization and concurrency management of a relational database
Specific goals:
Knowledge of properties for a relational schema and a decomposition. Ability to use relational algebra expression for querying information in a relational database. Awareness about operation costs for data management.
Knwoledge and understanding:
Theoretical foundation of database design and formal languages for database querying (relational algebra). Data structures for the storage and management of data.
Applying knowledge and understanding:
Designing relational schema with "good properties". Querying a database by means of relational algebra. Evaluate operation costs of foundational operations over a database management system under different storage methods.
Analysis and evaluation skills:
Being able to ealuate the properties of a relational database and its decomposition. Being able to select the best data structure for the database management system.
Communication skills:
Being able to present/share the qualitative and quantitative characteristics of a relational database.
|
Educational objectives The Operating System (OS) is the key component of any modern computing device. Moreover, it very well represents a fundamental concept at the heart of any Computer Science curriculum, namely abstraction. More specifically, by virtualizing the physical resources of a computer system, OS allows programmers to develop software applications without worrying about the nitty-gritty of the hardware. Decoupling the software from the hardware guarantees more flexibility for the system developer as well as greater usability for the end user. It is, therefore, essential for any Computer Science student to have the ability to comprehend how to effectively and efficiently design and exploit the main functionalities of a highly complex software system, such as a modern operating system.
To this end, in this course, we will deeply discuss the key responsibilities of so-called general-purpose OSs (i.e., those typically installed on our PCs and laptops). Amongst those responsibilities are: CPU scheduling, process/thread synchronization, memory management, and file systems, just to name a few. In addition, we will explore how OSs should adapt to resource-limited mobile devices (i.e., tablets and smartphones).
All the concepts introduced are totally covered by the lecture materials provided during the course and will be treated independently from a specific operating system implementation. However, many examples will be taken from popular OSs available on the market, like UNIX/Linux, Windows, macOS, Android, iOS, etc.
|
Educational objectives
General Objectives
The course is structured into two closely integrated modules. The first module provides a thorough foundation in the principles, architecture, and core mechanisms of operating systems, emphasizing both the established features of traditional systems and the innovations introduced by technological evolution. Students will also gain hands-on experience with programming interfaces between user space and the kernel, particularly in the UNIX/Linux environment, focusing on efficient system resource management.
The second module focuses on network architectures and communication in distributed and large-scale systems, from data centers to the Internet. Following a top-down approach, this part explores the core functionalities and mechanisms of the TCP/IP protocol stack, aiming to enable the design of secure, efficient communications tailored to the diverse performance needs of modern networked applications.
Specific Objectives
The course offers a structured exploration of key concepts in modern operating systems, with a particular focus on the UNIX/Linux environment. Topics include: the historical evolution of operating systems; basic hardware architecture (CPU, memory, and I/O devices); process and thread management with CPU scheduling; deadlock conditions and prevention techniques; process concurrency and synchronization; memory management; file systems; and system-level security mechanisms.
The second module focuses on the design and implementation of protocol stacks for communication in distributed systems, both in local and wide-area contexts. Adopting the top-down methodology presented by Kurose and Ross, the course begins with the analysis of networked applications and their supporting protocols, then moves downward through the transport, network, data-link, and physical layers. Core protocols such as HTTP, DNS, TCP, UDP, IP, and Ethernet will be studied in depth, along with their associated mechanisms for addressing, routing, error detection, and flow control. Theoretical knowledge will be reinforced through hands-on experience with simulation tools and traffic analysis, providing insight into real-world network behavior.
Knowledge and understanding
The first module enables students to gain a deep understanding of how operating systems support user program execution and manage hardware peripherals. Fundamental methods and techniques for process representation in memory and efficient handling of multiprogramming—multiple concurrent processes operating in resource-constrained environments—are explored in detail.
Special emphasis is placed on the internal workings of the Linux operating system, the functionality of the BASH shell, and the use of key system calls, equipping students with practical skills for low-level system interaction.
In the second module, students develop a solid understanding of network architectures, ranging from local systems to geographically distributed infrastructures such as content delivery networks and the Internet. The focus is on core concepts underlying computer networks, with an emphasis on the layered structure of protocols and their corresponding services.
Critical issues and design solutions at each layer of the protocol stack—physical, data-link (including the MAC sublayer), network, transport, and application—are examined in detail.
Through analytical study, students also gain familiarity with key performance metrics and quality of service (QoS) requirements in networked systems. Exercises and simulations of network behavior provide essential support for internalizing core concepts, especially in view of the increasing demands posed by modern applications in artificial intelligence and high-performance distributed computing.
Applying Knowledge and Understanding:
Through the first module, students will develop the ability to design user- and system-level programs in an efficient and secure manner. They will learn how to create BASH scripts to address practical tasks, and write C programs that leverage Linux system calls to optimize resource usage.
In the second module, students will gain advanced skills in the analysis and application of network protocols. Specifically, they will be able to:
thoroughly understand the goals, characteristics, and functioning of next-generation communication protocols and systems;
critically analyze protocol design decisions within the TCP/IP stack and select the most appropriate configurations based on application requirements;
assess the impact of protocol choices on the performance of distributed systems and the Internet, particularly in light of the growing demands imposed by large-scale adoption of artificial intelligence systems.
Critical Thinking and Judgment
The course fosters critical thinking and technical evaluation skills in complex environments. By the end of the first module, students will be able to:
anticipate the resource demands of a program;
detect deadlock conditions in multiprogrammed systems and propose prevention strategies;
ensure mutual exclusion among processes and protect access to sensitive memory areas or system resources.
They will also be able to select the most appropriate technical solution to achieve a desired outcome, deciding whether to use shell commands, BASH scripts, or C/Java programs based on Linux system calls.
Through the second module, students will develop the ability to critically analyze network architectures, identify causes of performance degradation, connectivity issues, and fault tolerance limitations. They will be capable of diagnosing these problems and planning appropriate solutions in line with infrastructural constraints and application-level requirements.
Communication Skills
By the end of the course, students will be able to clearly, accurately, and effectively communicate the key characteristics of operating systems and their software/hardware interaction mechanisms. They will be proficient in writing and documenting BASH scripts and C programs that use Linux system calls, presenting them in a way that is accessible to both technical and non-technical audiences.
Additionally, through the competencies developed in the networking module, students will be equipped to interact with end users, network designers, and system developers. They will be able to articulate quality of service (QoS) requirements, explain the operational principles of network architectures, and discuss potential issues and solutions within complex distributed environments.
Learning Skills
Operating systems and communication networks are emblematic examples of complex hardware/software systems. The knowledge acquired in this course provides a strong and generalizable foundation that is especially valuable in addressing highly complex technological domains.
These include distributed systems, cloud architectures, big data processing and analytics frameworks, advanced enterprise infrastructures, 5G/6G networks, edge computing environments, and AI architectures, including federated learning systems. The course thus equips students with the ability to engage in continuous learning and develop a critical understanding of the complex systems that underpin modern computing.
|
Educational objectives The Operating System (OS) is the key component of any modern computing device. Moreover, it very well represents a fundamental concept at the heart of any Computer Science curriculum, namely abstraction. More specifically, by virtualizing the physical resources of a computer system, OS allows programmers to develop software applications without worrying about the nitty-gritty of the hardware. Decoupling the software from the hardware guarantees more flexibility for the system developer as well as greater usability for the end user. It is, therefore, essential for any Computer Science student to have the ability to comprehend how to effectively and efficiently design and exploit the main functionalities of a highly complex software system, such as a modern operating system.
To this end, in this course, we will deeply discuss the key responsibilities of so-called general-purpose OSs (i.e., those typically installed on our PCs and laptops). Amongst those responsibilities are: CPU scheduling, process/thread synchronization, memory management, and file systems, just to name a few. In addition, we will explore how OSs should adapt to resource-limited mobile devices (i.e., tablets and smartphones).
All the concepts introduced are totally covered by the lecture materials provided during the course and will be treated independently from a specific operating system implementation. However, many examples will be taken from popular OSs available on the market, like UNIX/Linux, Windows, macOS, Android, iOS, etc.
|
Educational objectives General goals:
Introductory course to machine learning (ML) and how to build predictive systems with supervised and unsupervised ML.
Specific goals:
The course is meant to introduce the discipline of machine learning, a class of methods that learn patterns from data and perform predictions on new data. This unit complements the Unit I of the same course. Note this is an introductory course to Machine Learning (ML) and is not an entire course on “Deep Learning” (DL) although some basic DL concepts are introduced and covered. The course is meant to prepare the students for the advanced Deep Learning course in the third year.
Course goals:
1) Introduction to ML, when it is useful, paradigms and applications.
2) Supervised Learning. Parametric Models: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Non-parametric models: the nearest neighbour (NN) classifier, decision trees/random forest.
4) Design and implement ML system: Data visualization and analysis, cross-validation, hyper-parameters.
Knowledge and understanding
The acquired knowledge and skills are measured along two axes: providing the students with theoretical principles related to machine learning algorithms. Obtaining skills on how to apply such concepts in practice to a synthetic or real dataset of small size. In terms of structure and philosophy, I would balance the amount of theoretical content (knowing what you are doing) with practical sessions (knowing how to do it).
Applying knowledge and understanding
We will be using tools such as Numpy (with an emphasis on vectorized code), scikit learn, PyTorch, (automatic differentiation e small neural nets) to implement base ML systems. The domains of applications could be related to synthetic data or images.
Critical and judgmental skills:
Develop critical thinking on the application and usage of ML tools; develop awareness of ML systems and their performance and learn how to evaluate their performance on real data. Learn how to distinguish between the pros and cons of different algorithms and choose the most appropriate.
Communication skills:
Students should show fluency and competence on the topics taught in class, expressing the concept clearly and concisely with rigorousness and the right terminology. The communication skills could be also assessed through a report on the practical activity done, motivating well the decision taken.
Learning ability:
The course sets the basis to understand more advanced scientific papers on ML systems and their applications to computer visions and NLP; it should also provide the foundations for advanced courses on Deep Learning.
|
Educational objectives General goals:
Introductory course to machine learning (ML) and how to build predictive systems with supervised and unsupervised ML.
Specific goals:
The course is meant to introduce the discipline of machine learning, a class of methods that learn patterns from data and perform predictions on new data. This unit complements the Unit I of the same course. Note this is an introductory course to Machine Learning (ML) and is not an entire course on “Deep Learning” (DL) although some basic DL concepts are introduced and covered. The course is meant to prepare the students for the advanced Deep Learning course in the third year.
Course goals:
1) Introduction to ML, when it is useful, paradigms and applications.
2) Supervised Learning. Parametric Models: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Non-parametric models: the nearest neighbour (NN) classifier, decision trees/random forest.
4) Design and implement ML system: Data visualization and analysis, cross-validation, hyper-parameters.
Knowledge and understanding
The acquired knowledge and skills are measured along two axes: providing the students with theoretical principles related to machine learning algorithms. Obtaining skills on how to apply such concepts in practice to a synthetic or real dataset of small size. In terms of structure and philosophy, I would balance the amount of theoretical content (knowing what you are doing) with practical sessions (knowing how to do it).
Applying knowledge and understanding
We will be using tools such as Numpy (with an emphasis on vectorized code), scikit learn, PyTorch, (automatic differentiation e small neural nets) to implement base ML systems. The domains of applications could be related to synthetic data or images.
Critical and judgmental skills:
Develop critical thinking on the application and usage of ML tools; develop awareness of ML systems and their performance and learn how to evaluate their performance on real data. Learn how to distinguish between the pros and cons of different algorithms and choose the most appropriate.
Communication skills:
Students should show fluency and competence on the topics taught in class, expressing the concept clearly and concisely with rigorousness and the right terminology. The communication skills could be also assessed through a report on the practical activity done, motivating well the decision taken.
Learning ability:
The course sets the basis to understand more advanced scientific papers on ML systems and their applications to computer visions and NLP; it should also provide the foundations for advanced courses on Deep Learning.
|
Educational objectives Artificial Intelligence and Machine Learning Unit I
General goals:
The course aims to introduce students to a wide-spectrum presentation of artificial intelligence (AI), with a focus on automated reasoning.
Specific goals:
The course pursues the objective of making students proficient in the comprehension, use, adaptation and development of solutions to a wide set of AI problems in the context of intelligent software system design, ranging from search to constraint satisfaction, from formal languages to deductive systems.
Knowledge and understanding:
Students will learn about core approaches and heuristics for search and constraint satisfaction problems, knowledge representation and reasoning in propositional logic and first-order logic.
Applying knowledge and understanding:
Learners will be able to appropriately represent AI problems from the perspective of an intelligent agent, exploit the portfolio of techniques and the different approaches shown in the course for the solution of new problems, and explain the rationale behind the autonomous decision-making process of an agent.
Critical and judgmental skills:
Students will be able to assess advantages and challenges in applying and adapting known techniques to design intelligent software systems, examine the environment setting, define a utility function to measure the performance of autonomous agents, and devise new solutions tailored to the novel challenges in AI.
Communication skills:
Learners will acquire the ability to expose their knowledge in a clear and organised manner to propose AI-based solutions, formalise the challenged problems, and effectively discuss their ideas with experts in the field.
Learning capabilities:
The acquired competencies will allow students to independently deepen and broaden their range of knowledge and capabilities, equipped with the necessary interpretation instruments to read published works in the scientific literature on AI autonomously.
|
Educational objectives General goals: The aim of the course is to provide to the students the knowledge the practical tools necessary to take advantage of modern Machine and Deep Learning applications. In particular, the course will focus on the study and implementation of Computer Vision and Natural Language Processing algorithms.
Specific goals: The course deals with image processing, starting from classical methods and arriving at modern techniques that exploit Machine / Deep Learning, as well as the use of Natural Language Processing together with Computer Vision to perform specific tasks.
Knowledge and understanding: The student will acquire knowledge about the modern tools used to analyze images and text in a fully automatic way using the Machine and Deep Learning. Furthermore, the student will acquire knowledge on the modern frameworks used to fulfill these tasks.
Applying knowledge and understanding: The student will be able to exploit the knowledge acquired during the course, as well as the frameworks used, to define their own Machine and Deep Learning models for solving various tasks concerning the analysis of images and text.
Critical and judgmental skills: The student will be able to understand the operations necessary to fulfill a task related to Computer Vision or Natural Language Processing and, consequently, will be able to use or define a model for its resolution.
Communication skills: The student will be able to describe in detail the Machine / Deep Learning models used.
Learning ability: The course lays the practical foundations for the use and definition of Machine and Deep Learning models that can be used in any course relating to the latter.
|
Educational objectives General goals:
Being able to design/evaluate properties, physical organization and concurrency management of a relational database
Specific goals:
Knowledge of properties for a relational schema and a decomposition. Ability to use relational algebra expression for querying information in a relational database. Awareness about operation costs for data management.
Knwoledge and understanding:
Theoretical foundation of database design and formal languages for database querying (relational algebra). Data structures for the storage and management of data.
Applying knowledge and understanding:
Designing relational schema with "good properties". Querying a database by means of relational algebra. Evaluate operation costs of foundational operations over a database management system under different storage methods.
Analysis and evaluation skills:
Being able to ealuate the properties of a relational database and its decomposition. Being able to select the best data structure for the database management system.
Communication skills:
Being able to present/share the qualitative and quantitative characteristics of a relational database.
|
Educational objectives General goals:
Introductory course to machine learning (ML) and how to build predictive systems with supervised and unsupervised ML.
Specific goals:
The course is meant to introduce the discipline of machine learning, a class of methods that learn patterns from data and perform predictions on new data. This unit complements the Unit I of the same course. Note this is an introductory course to Machine Learning (ML) and is not an entire course on “Deep Learning” (DL) although some basic DL concepts are introduced and covered. The course is meant to prepare the students for the advanced Deep Learning course in the third year.
Course goals:
1) Introduction to ML, when it is useful, paradigms and applications.
2) Supervised Learning. Parametric Models: linear regression, logistic regression, regularization; multilayer perceptron, overparameterized models; the backpropagation algorithm; gradient descent; computational graph for automatic differentiation; loss function for classification. Support Vector Machines: Optimal hyperplane, margin, kernels. Non-parametric models: the nearest neighbour (NN) classifier, decision trees/random forest.
4) Design and implement ML system: Data visualization and analysis, cross-validation, hyper-parameters.
Knowledge and understanding
The acquired knowledge and skills are measured along two axes: providing the students with theoretical principles related to machine learning algorithms. Obtaining skills on how to apply such concepts in practice to a synthetic or real dataset of small size. In terms of structure and philosophy, I would balance the amount of theoretical content (knowing what you are doing) with practical sessions (knowing how to do it).
Applying knowledge and understanding
We will be using tools such as Numpy (with an emphasis on vectorized code), scikit learn, PyTorch, (automatic differentiation e small neural nets) to implement base ML systems. The domains of applications could be related to synthetic data or images.
Critical and judgmental skills:
Develop critical thinking on the application and usage of ML tools; develop awareness of ML systems and their performance and learn how to evaluate their performance on real data. Learn how to distinguish between the pros and cons of different algorithms and choose the most appropriate.
Communication skills:
Students should show fluency and competence on the topics taught in class, expressing the concept clearly and concisely with rigorousness and the right terminology. The communication skills could be also assessed through a report on the practical activity done, motivating well the decision taken.
Learning ability:
The course sets the basis to understand more advanced scientific papers on ML systems and their applications to computer visions and NLP; it should also provide the foundations for advanced courses on Deep Learning.
|
Educational objectives The main objective of the course is to show the most popular techniques of non parametric inference, mainly from a Bayesian perspective.
Covered topics include Dirichlet processes and its ramifications with special emphasis to applications of above methods in data science applications.
General objectives:
The aim of the course is to provide the basis of the theory of sequences and series of functions and of the theory of functions of complex variable, with applications to Laplace transform and easy applications to the Fourier transformation.
Specific objectives:
To know the basis of the theory of approximation, with particular attention to the notions of pointwise and uniform convergence for sequences of functions (of one or more real variables) and of pointwise, absolute, uniform and total convergence for series of functions, in particular for power series and trigonometric series. Standard deviation and convergence in quadratic mean, Parseval equality for trigonometric series. To know the basis of the theory of functions of complex variable, with particular attention to the notions of holomorphy, of singular point, of residue, of Laplace transform and inversion formula.
Knowledge and understanding:
Being able to analyse the behaviour of sequences of functions (of one or more real variables or of one complex variable) and of series of functions of real or complex variable from the point of view of the various notions of convergences. Being able to reconstruct a signal starting from its Laplace transform, to solve Cauchy problems for linear differential equations with constant coefficients by Laplace transform and to calculate simple Fourier transforms.
Apply knowledge and understanding:
Being able to analyse the behaviour of sequences of functions (of one or more real variables or of one complex variable) and of series of functions of real or complex variable from the point of view of the various notions of convergences. Being able to reconstruct a signal starting from its Laplace transform, to solve Cauchy problems for linear differential equations with constant coefficients by Laplace transform and to calculate simple Fourier transforms.
|