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

Curriculum(s) for 2025 - Applied Computer Science and Artificial Intelligence (33502)

Single curriculum

1st year

LessonSemesterCFUSSDLanguage
10595099 | CALCULUS1st12MAT/05ENG

Educational objectives

General Objectives:

to obtain a general knowledge of the basic techniques of Differential Calculus and of the standard applications to problems of maxima-minima of functions of a real variable and to the study of their graph; to provide the student with basic mathematical analysis tools such as : the theory of series, integral calculus and ordinary differential equations.

The course is organized in two units: Calculus Unit 1 and Calculus Unit 2. Check these Units for the Specific Objectives.

UNIT 21st6MAT/05ENG

Educational objectives

"General goals: obtain a general knowledge of the basic techniques of Differential Calculus and of the standard applications to problems of maxima-minima of functions of a real variable and to the study of their graph.

Specific goals:
Knowledge and understanding: at the end of the course, students will master the basic notions of Differential Calculus, in particular the notions of function, limit and derivative.
Applying knowledge and understanding: students will be able to solve typical problems from Differential Calculus, such as the explicit calculation of derivatives, of maxima and minima of a function, and to plot an approximate graph of functions of a real variable.
Critical and judgmental abilities: students will be able to use a graph as a tool to analyse concrete phenomena which admit a mathematical description.

Communication skills: students will be able to fully understand a scientific text of moderate complexity and relate on the essential ideas contained in it.
Learning ability: the notions and techniques learned will give students access to more advanced notions, either in a further course or in the form of self-study, concerning further aspects of Differential Calculus."

10595546 | Computer Architecture1st12INF/01ENG

Educational objectives

General goals:
How to design combinational and sequential circuits and to make students understand the principles used to design modern computers. In particular, the course deals with the internal structure of the microprocessor and the ideas that have allowed the extraordinary evolution of computing power over the last 30 years. such as pipelining, caching, branch prediction, and multi-processing.

Specific goals:
binary encoding of different data types, boolean algebra, analysis and synthesis of combinational circuits, flip-flop, analysis and synthesis of sequential circuits, registers, , interconnection between register and functional units. Moreover, the course covers the basic principles of microprocessor organization and the concepts of pipelining, caching, branch prediction, virtualization and multi-processing. Furthermore, the course covers assembly programming.

Knowledge and understanding:
Knowing and understanding the handling and processing of information on a computer. Moreover, students will acquire knowledge about the organization of the microprocessor MIPS, as implementation of the general ideas that are part of the objectives of the course. Furthermore, the student will acquire knowledge on how the assembly programs are structured, including data structures, standard programming paradigms and recursion.

Applying knowledge and understanding:
Show the ability of designing simple combinational and sequential circuits that perform specific tasks. Moreover, the knowledge is applied to the MIPS architecture, enabling students to understand the implications of programming choices on the performance of programs on specific hardware. This result is obtained through programming and performance evaluation exercises.

Critiquing and judgmental skills:
Being able to choose the best approach, among those considered, for solving a specific task. Moreover, the student will be able to understand the problems related to the performance of the software on specific hardware and to independently evaluate their characteristics.

Communication skills:
Being able to evaluate and motivate the choices taken in the design of a circuit. To instruct on the rigorous presentation of formal topics.

Learning skills:
Understanding the differences and advantages of the different design techniques. Moreover, the course lays the foundations for the comprehension of the modules constituting the course of Operating Systems and of all the courses of programming, including the programming of parallel systems.

Unit 21st6INF/01ENG

Educational objectives

General goals:
How to design combinational and sequential circuits and to make students understand the principles used to design modern computers. In particular, the course deals with the internal structure of the microprocessor and the ideas that have allowed the extraordinary evolution of computing power over the last 30 years. such as pipelining, caching, branch prediction, and multi-processing.
Specific goals:
binary encoding of different data types, boolean algebra, analysis and synthesis of combinational circuits, flip-flop, analysis and synthesis of sequential circuits, registers, , interconnection between register and functional units. Moreover, the course covers the basic principles of microprocessor organization and the concepts of pipelining, caching, branch prediction, virtualization and multi-processing. Furthermore, the course covers assembly programming.
Knowledge and understanding:
Knowing and understanding the handling and processing of information on a computer. Moreover, students will acquire knowledge about the organization of the microprocessor MIPS, as implementation of the general ideas that are part of the objectives of the course. Furthermore, the student will acquire knowledge on how the assembly programs are structured, including data structures, standard programming paradigms and recursion.
Applying knowledge and understanding:
Show the ability of designing simple combinational and sequential circuits that perform specific tasks. Moreover, the knowledge is applied to the MIPS architecture, enabling students to understand the implications of programming choices on the performance of programs on specific hardware. This result is obtained through programming and performance evaluation exercises.
Critiquing and judgmental skills:
Being able to choose the best approach, among those considered, for solving a specific task. Moreover, the student will be able to understand the problems related to the performance of the software on specific hardware and to independently evaluate their characteristics.
Communication skills:
Being able to evaluate and motivate the choices taken in the design of a circuit. To instruct on the rigorous presentation of formal topics.
Learning skills:
Understanding the differences and advantages of the different design techniques. Moreover, the course lays the foundations for the comprehension of the modules constituting the course of Operating Systems and of all the courses of programming, including the programming of parallel systems.

10595524 | Linear Algebra1st6MAT/02ENG

Educational objectives

General goals:
To provide basic knowledge on topics of group theory and linear algebra which are commonly used in computer science.

Specific goals:
Basic algebra concepts
Introduction to algebraic structures
Development of the language of linear algebra: vector spaces and their homomorphisms; vector spaces, numbers, and matrix algebra; endomorphisms, determinants and diagonalization; applications.

Knowledge and understanding:
A successful student will be able to make computations in small groups of easy structure and understand the meaning and use of matrices in the study of linear phenomena.

Application of knowledge and understanding:
Use of diagonalization of linear operators to get geometrical interpretation of a linear problem and gather relevant information. Use of the group concept in the study of finite combinatorial problems.

Critiquing and judgmental skills:
Students will be able to choose the appropriate algebraic setting for the description of a problem.

Communication skills:
Students will learn the linear algebra and group language, along with basics of complexity theory.

Learning ability:
Understanding the language of linear algebra and groups will allow students to learn topics that employ them.

10595102 | PROGRAMMING1st12INF/01ENG

Educational objectives

General objectives:
This course will introduce students to very basic algorithm design and analysis. They will learn various established algorithms for solving fundamental problems, such as sorting or searching, together with the simplest tools to analyze them.

Knowledge and understanding
At the end of the course, students will be familiar with the basic methodologies for the design and analysis of iterative and recursive algorithms, elementary data structures, major sorting algorithms, and the most basic implementations of the dictionaries.
Apply knowledge and understanding:
At the end of the course, students will have become familiar with the main basic data structures, in particular those implementing dictionaries. They will be able to explain the algorithms and analyze their time complexity, highlighting how their performances depend on the used data structure. They will be able to design new data structures and related algorithms based on the existing ones; they will be able to explain the main sorting algorithms, illustrating the underlying design strategies and their time complexity analysis; they will be able to compare the asymptotic behavior of the execution times of the studied algorithms, to design recursive solutions to problems and to analyze their asymptotic time complexity.

Critical and judgmental skills
Students will be able to analyze the quality of an algorithm and related data structures, both from the effective resolution of the problem and from the time complexity point of view.

Communication skills
Students will acquire the ability to expose their knowledge in a clear and organized way, which will be verified both through the written tests and during the oral examination. Students will be able to express an algorithmic idea rigorously at a high level, in pseudocode.

Learning ability
The acquired knowledge will allow students to face the study of other algorithmic design methodologies and more advanced data structures within a master's degree course.

UNIT 11st6INF/01ENG

Educational objectives

General objectives:
This course will introduce students to very basic algorithm design and analysis. They will learn various established algorithms for solving fundamental problems, such as sorting or searching, together with the simplest tools to analyze them.

Knowledge and understanding
At the end of the course, students will be familiar with the basic methodologies for the design and analysis of iterative and recursive algorithms, elementary data structures, major sorting algorithms, and the most basic implementations of the dictionaries.
Apply knowledge and understanding:
At the end of the course, students will have become familiar with the main basic data structures, in particular those implementing dictionaries. They will be able to explain the algorithms and analyze their time complexity, highlighting how their performances depend on the used data structure. They will be able to design new data structures and related algorithms based on the existing ones; they will be able to explain the main sorting algorithms, illustrating the underlying design strategies and their time complexity analysis; they will be able to compare the asymptotic behavior of the execution times of the studied algorithms, to design recursive solutions to problems and to analyze their asymptotic time complexity.

Critical and judgmental skills
Students will be able to analyze the quality of an algorithm and related data structures, both from the effective resolution of the problem and from the time complexity point of view.

Communication skills
Students will acquire the ability to expose their knowledge in a clear and organized way, which will be verified both through the written tests and during the oral examination. Students will be able to express an algorithmic idea rigorously at a high level, in pseudocode.

Learning ability
The acquired knowledge will allow students to face the study of other algorithmic design methodologies and more advanced data structures within a master's degree course.

UNIT 21st6INF/01ENG

Educational objectives

General objectives:
This course will introduce students to very basic algorithm design and analysis. They will learn various established algorithms for solving fundamental problems, such as sorting or searching, together with the simplest tools to analyze them.

Knowledge and understanding
At the end of the course, students will be familiar with the basic methodologies for the design and analysis of iterative and recursive algorithms, elementary data structures, major sorting algorithms, and the most basic implementations of the dictionaries.
Apply knowledge and understanding:
At the end of the course, students will have become familiar with the main basic data structures, in particular those implementing dictionaries. They will be able to explain the algorithms and analyze their time complexity, highlighting how their performances depend on the used data structure. They will be able to design new data structures and related algorithms based on the existing ones; they will be able to explain the main sorting algorithms, illustrating the underlying design strategies and their time complexity analysis; they will be able to compare the asymptotic behavior of the execution times of the studied algorithms, to design recursive solutions to problems and to analyze their asymptotic time complexity.

Critical and judgmental skills
Students will be able to analyze the quality of an algorithm and related data structures, both from the effective resolution of the problem and from the time complexity point of view.

Communication skills
Students will acquire the ability to expose their knowledge in a clear and organized way, which will be verified both through the written tests and during the oral examination. Students will be able to express an algorithmic idea rigorously at a high level, in pseudocode.

Learning ability
The acquired knowledge will allow students to face the study of other algorithmic design methodologies and more advanced data structures within a master's degree course.

1049269 | ALGORITHMS2nd6INF/01ENG

Educational objectives

General goals
Introduction to basic algorithm design and analysis, iterative and recursive algorithms, and the computation of their computational efficiency.

Specific goals:
Knowledge and understanding:
At the end of the course students will know the basic methodologies for the design and analysis of iterative and recursive algorithms, elementary data structures, some ways to explore such structures, the main sorting algorithms and the most basic implementations of the dictionaries.

Applying knowledge and understanding:
At the end of the course students will have become familiar with the main basic data structures, in particular those implementing dictionaries. They will be able to explain the algorithms and analyze their time complexity, highlighting how their performances depend on the used data structure. They will be able to design new data structures and related algorithms, on the basis of the existing ones; they will be able to explain the main sorting algorithms, illustrating the underlying design strategies and their time complexity analysis; they will be able to compare the asymptotic behavior of the execution times of the studied algorithms, to design recursive solutions to problems and to analyze their asymptotic time complexity.

Critiquing and judgmental skills:
Students will be able to analyze the quality of an algorithm and related data structures, both from the effective resolution of the problem and from the time complexity point of views.

Communication skills:
Students will acquire the ability to expose their knowledge in a clear and organized way, which will be verified both through the written tests and during the
oral examination. Students will be able to express an algorithmic idea rigorously at high level, in pseudocode.

Learning ability:
The acquired knowledge will allow students to face the study of other algorithmic methodologies and of more advanced data structures within a master's degree course.

10595099 | CALCULUS2nd12MAT/05ENG

Educational objectives

General Objectives:

to obtain a general knowledge of the basic techniques of Differential Calculus and of the standard applications to problems of maxima-minima of functions of a real variable and to the study of their graph; to provide the student with basic mathematical analysis tools such as : the theory of series, integral calculus and ordinary differential equations.

The course is organized in two units: Calculus Unit 1 and Calculus Unit 2. Check these Units for the Specific Objectives.

UNIT 12nd6MAT/05ENG

Educational objectives

General goals: Acquire 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 nnow 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.

10595546 | Computer Architecture2nd12INF/01ENG

Educational objectives

General goals:
How to design combinational and sequential circuits and to make students understand the principles used to design modern computers. In particular, the course deals with the internal structure of the microprocessor and the ideas that have allowed the extraordinary evolution of computing power over the last 30 years. such as pipelining, caching, branch prediction, and multi-processing.

Specific goals:
binary encoding of different data types, boolean algebra, analysis and synthesis of combinational circuits, flip-flop, analysis and synthesis of sequential circuits, registers, , interconnection between register and functional units. Moreover, the course covers the basic principles of microprocessor organization and the concepts of pipelining, caching, branch prediction, virtualization and multi-processing. Furthermore, the course covers assembly programming.

Knowledge and understanding:
Knowing and understanding the handling and processing of information on a computer. Moreover, students will acquire knowledge about the organization of the microprocessor MIPS, as implementation of the general ideas that are part of the objectives of the course. Furthermore, the student will acquire knowledge on how the assembly programs are structured, including data structures, standard programming paradigms and recursion.

Applying knowledge and understanding:
Show the ability of designing simple combinational and sequential circuits that perform specific tasks. Moreover, the knowledge is applied to the MIPS architecture, enabling students to understand the implications of programming choices on the performance of programs on specific hardware. This result is obtained through programming and performance evaluation exercises.

Critiquing and judgmental skills:
Being able to choose the best approach, among those considered, for solving a specific task. Moreover, the student will be able to understand the problems related to the performance of the software on specific hardware and to independently evaluate their characteristics.

Communication skills:
Being able to evaluate and motivate the choices taken in the design of a circuit. To instruct on the rigorous presentation of formal topics.

Learning skills:
Understanding the differences and advantages of the different design techniques. Moreover, the course lays the foundations for the comprehension of the modules constituting the course of Operating Systems and of all the courses of programming, including the programming of parallel systems.

Unit 12nd6INF/01ENG

Educational objectives

General goals:
Design methodologies for combinational and sequential circuits, and an understanding of the principles used to design modern computers. In particular, the course covers the internal structure of the microprocessor and the ideas that have enabled the extraordinary evolution of computing power over the past 30 years, such as pipelining, caching, branch prediction, and multiprocessing.
Specific goals:
Binary encoding of various data types, Boolean algebra, analysis and synthesis of combinational circuits, flip-flops, analysis and synthesis of sequential circuits, registers, and interconnection between registers and other modules. The course also covers the basic principles of microprocessor organization, including concepts such as pipelining, caching, branch prediction, virtualization, and multiprocessing. Additionally, the course addresses assembly programming.
Knowledge and understanding:
To understand how a computer manages and processes information. In addition, the student will gain knowledge of the organization of the MIPS microprocessor, as an implementation of the general concepts covered in the course objectives. The student will also acquire an understanding of how assembly programs are structured, including data structures, standard programming paradigms, and recursion.
Application of knowledge and understanding:
Demonstrate the ability to design simple combinational and sequential circuits capable of performing specific tasks. Furthermore, students will apply their knowledge to the MIPS architecture, understanding how programming choices affect program performance on specific hardware. This outcome is achieved through programming exercises and performance evaluation.
Critiquing and judgmental skills:
Be able to choose the most appropriate approach, among those studied, to solve a given task. In addition, the student will be able to understand performance-related issues of software on specific hardware and independently assess its characteristics.
Communication skills:
Be able to evaluate and justify design choices in circuit development. Develop the ability to present technical topics in a rigorous and structured manner.
Learning ability:
Understand the differences and advantages of various design techniques. In addition, the course provides the foundation for understanding modules in Operating Systems and all programming courses, including parallel systems programming.

10595523 | Physics2nd6FIS/01ENG

Educational objectives

GENERAL OBJECTIVES:
1) To describe the fundamental laws of physics and their applications to real-world situations.
2) To develop problem-solving skills by describing physical phenomena with mathematical formulae on one hand, and physics intuition on the other hand.

SPECIFIC OBJECTIVES:
Knowledge and understanding

3) To develop a basic understanding of Newtonian mechanics, physics of fluids, thermodynamics, electricity and magnetism.
4) To know the fundamental concepts of force, torque, work, potential energy, kinetic energy, mechanical energy, power, impulse, linear and angular momentum.
5) To know some of the conservation laws in physics and their importance.
6) To know the concepts of temperature, heat and entropy applied to simple thermodynamic systems.
7) To know the concepts of electric field and potential, magnetic field and electrical currents.
8) To understand the text of a physics problem.

Application capabilities
The student will be able.
9) To solve a wide range of physics problems by formalising their solution from the mathematical point of view.
10) To solve a physics problem in a coherent way, both from a formal and a quantitative point of view.
11) To evaluate the dominant effects in a physics problem.
12) To apply Newton’s laws to describe the motion of particles, systems of particles and the rotation of rigid bodies.
13) To solve dynamical problems using the concepts of work, kinetic energy, potential and mechanical energy.
14) To use the conservation of energy, linear momentum and angular momentum in a variety of situations.
15) To solve simple problems involving fluids at rest and in motion.
16) To solve simple problems involving thermal energy using the first law of thermodynamics.
17) To show a basic understanding of the concept of entropy and the second law of thermodynamics.
18) To describe the electric fields and associated potentials for stationary charges.
19) To describe the magnetic fields generated by steady currents and phenomena involving electromagnetic induction.

Critical and judgmental skills
20) To be able to establish whether a relation between physical quantities, or a physical law, is correct, also from the dimensional point of view.
21) To develop quantitative and analytical reasoning skills required to study, model and understand physics problems.

Communication skills
22) To be able to talk about physics using an appropriate terminology.
23) To know how to describe a complex problem, by isolating its most relevant aspects.Learning skills
24) To be able to consult a physics textbook.

10600241 | PROGRAMMING 22nd6INF/01ENG

Educational objectives

General goals:
Learning fundamental notions in object oriented programming through the Java language.

Specific goals:
Notions of object oriented programming: classes and objects, embedding, inheritance, polymorphism, static and dynamic binding, design patterns. Functional programming. Tools and methodologies of software development. The Java language.

Knowledge and understanding:
Knowledge of the constructs of object oriented programming, with special focus on Java. Understanding a Java program. Competence in developing small and medium size Java programs.

Applying knowledge and understanding:
Capability of applying basic development methodologies for small and medium size software systems. Experience with tools for developing such systems in Java.

Critical and judgmental skills:
Critical skills in distinguishing wrong or inefficient instructions, programming constructs and patterns from the appropriate and efficient ones.

Communication skills:
Presentation of the developed project.

Learning ability:
Capability of learning and applying new programming techniques starting from the ones viewed in the course.

2nd year

LessonSemesterCFUSSDLanguage
10595529 | Calculus 21st6MAT/05ENG

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.

10595525 | Probability1st6MAT/06ENG

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.

10595617 | Data Management and Analysis1st12INF/01ENG

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.

Unit 21st6INF/01ENG

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.

10595616 | Systems and Networking1st12INF/01ENG

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.

Unit 11st6INF/01ENG

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.

Unit 21st6INF/01ENG

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.

10595618 | Artificial Intelligence and Machine Learning 2nd12INF/01ENG

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.

Unit 12nd6INF/01ENG

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.

Unit 22nd6INF/01ENG

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.

10595610 | AI Lab: Computer Vision and NLP2nd6INF/01ENG

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.

10595617 | Data Management and Analysis2nd12INF/01ENG

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.

Unit 12nd6INF/01ENG

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.

1055043 | Statistics2nd6SECS-S/01ENG

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.

3rd year

LessonSemesterCFUSSDLanguage
10595530 | Foundations of Computer Science1st6INF/01ENG

Educational objectives

General goals:
The course introduces the students to some of the most important results in theoretical computer science: from the fundamental results in computability theory of the thirties, through the ones in automata theory of the fifties to the challenging open problem P versus NP, raised in the seventies.

Specific goals:
Students will understand that there are different models of computation and the reason for their different computational power.

The students will become familiar with abstract concepts such as language classes, universal machines, reducibility and they will know that some problems are impossible to solve by computers and that others are difficult to solve, even so difficult to solve that they could be considered unsolvable. They will see today's use of some of these results.

Knowledge and understanding:
By the end of the course the students will get familiar with the basic methods and results of the Theory of Computability and Complexity and they will be able to apply them to evaluate the complexity of problems from various fields. In particular, they will be able to:
prove the equivalence between different characterizations of regular languages
prove the equivalence between different characterizations of context-free languages
explain the concept of nondeterminism
explain the existence of problems without algorithmic solutions or those which are intractable

Applying knowledge and understanding:
By the end of the course the students will be able to:
build finite state automata by a formal or an informal specification of a language
build stack automata by a formal or an informal specification of a language
use reducibility between problems to prove either decidability or undecidability
use polynomial reductions to prove the NP-hardness of problems.

Critical and judgmental skills:
Understand the right level of abstraction to solve problems, choose the more convenient computational model in an applicative context.

Communication skills:
describe problems that are undecidable, not provably intractable or intractable
explain the meaning and the relevance of the question “P=NP?"

Learning ability:
The student will be able to learn other computational models, both really new or variations of the ones seen during the course. She/he will be able to understand new NP-completeness proofs or more generally completeness proofs for any complexity class.

Elective course2nd12ENG

Educational objectives

Courses chosen by the student as per the study plan

AAF2604 | Internship2nd15ENG

Educational objectives

The internship is carried out under the guidance of a manager and can be external (performed at companies or external bodies) or internal (carried out within the degree course). In both cases, the internship lasts about three months and requires that the student be offered a problem in the real world, to be solved through the elaboration of a project developed with a professional approach.

AAF2608 | Final exam2nd3ENG

Educational objectives

The programme completes with an apprenticeship, to be carried out either within companies in the IT sector (typically on topics such as software design and development, data analysis, artificial intelligence, systems and networks) or at the university, investigating advanced research issues in applied computer science and artificial intelligence within the academic environment. In both cases, the internship lasts about three months and requires that the student be offered a problem in the real world, to be solved through the elaboration of a project developed with a professional approach.

THREE-DIMENSIONAL MODELING
THREE-DIMENSIONAL MODELING

Optional groups

The student must acquire 18 CFU from the following exams
LessonYearSemesterCFUSSDLanguage
10595532 | Cybersecurity3rd1st6INF/01ENG

Educational objectives

General objectives:
The course aims at training professionals able to successfully face the challenges posed by the security problems of the information society.

Specific objectives:
The course includes the study of various models of access control, analysis of the main difficulties and resolutions of cryptographic problems and the main security protocols used in the network

Knowledge and understanding:
Upon passing the exam, the student will have knowledge and understanding of the bases of computer security and of the main technologies for the analysis and solution of security problems.

Apply knowledge and understanding:
The course enables students to apply their knowledge and understanding skills to solve IT security problems, with sufficient autonomy to deal with complex problems; and for the effective consultation of advanced scientific and technological documentation.

Autonomy of judgment:
The course aims to acquire autonomous interpretation skills to propose solutions to security problems congruent with the available technologies, and to continuously update the technological evolution, to formulate independent critical judgments contributing to the progress of system security.

Communication skills:
Students acquire the ability to present and to argue their ideas about the security problems faced and the solutions proposed, both with colleagues and with users

Next learning ability:
The course provides for the development of in-depth capabilities in the field of computer security both of methodological and technological aspects, to adapt to the progress of techniques and solutions to the most common security problems, and to continue autonomously to solve new problems. safety issues.

10595531 | Deep Learning3rd1st6INF/01ENG

Educational objectives

General goals:
Familiarity with advanced machine learning techniques, both supervised and unsupervised; modeling skills of complex problems using deep learning techniques, and their application to diverse applicative settings.

Specific goals:
Topics include: deep neural networks, their training and the interpretation of results; convolutional networks and prominent architectures; theory of deep learning and convergence; programming frameworks for implementing advanced machine learning techniques; autoencoders; adversarial attacks.

Knowledge and understanding:
How neural networks work and their mathematical interpretation as universal approximators. Understanding the limits and potentials of advanced machine learning models.

Applying knowledge and understanding:
Design, implementation, deployment and analysis of deep learning architectures addressing complex problems in several applicative areas.

Critical and judgmental abilities:
To be able to evaluate the performance of different architectures, and to assess their generalization capabilities.

Communication skills:
To be able to communicate clearly how to formulate an advanced machine learning problem as well as its implementation, its applicability in realistic settings, and specific architectural and regularization choices.

Ability to learn:
Understanding alternative and more complex techniques such as generative models based on optimal transportation, scattering transforms and the energetic profile of neural networks. To be able to implement existing techniques efficiently, robustly and reliably.

10620671 | Multicore Programming3rd1st6INF/01ENG

Educational objectives

General goals:
The course is aimed at training students on fundamental algorithmic and programming techniques suited for modern multicore and embedded plaftorms.

Specific goals:

Knowledge and understanding:
At the end of the course, students will have a deep understanding of the main programming issues posed by parallel systems, as well as of programming abstractions and techniques useful to write scalable code.

Apply knowledge and understanding:
Students will be able to design, program and implement embedded systems (single core/multi core) and will have an understanding of the OS used in such systems.

Critical and judgmental skills:
Students will be able to face the challenges arising in the design of embedded and multicore systems and in the implementation of efficient and scalable programs for such systems taking into account the characteristics of different computational plaftorms.

Communication skills:
The students will be able to communicate effectively, summarizing the main ideas in the design of software for embedded and multicore systems clearly and presenting accurate technical information.

Ability of learning:
The goal for the class is to introduce the basic principles behind the design of software for embedded and multicore systems, making it possible for the students to extend their knowledge independently according to technological changes and evolution.

10620672 | Programming Languages3rd1st6INF/01ENG

Educational objectives

General objectives:
The course investigates the foundations of programming languages. Special attention is given to static and dynamic semantics (type theory, operational and axiomatic semantics) and to formal tools for software specification and verification.

Specific objectives:
Inductive algebras are studied as foundations to abstract syntax, data structures and simple (equational) program logics. Elements of co-induction in connection with lazy structures the semantics of concurrency. Comparing lazy vs. eager languages, static vs. dynamic binding within different programming paradigms: imperative, functional and object-oriented. Type theory, ML- and Java-style polymorphism.

Knowledge and understanding:
The student will acquire foundational knowledge on programming languages and their paradigms, and will be able to picture in a coherent conceptual map some of the main research areas of theoretical computer science.

Application of knowledge and understanding:
At the end of the course students will be familiar with different programming paradigms and program logics. Functional programming will be introduced and a basic knowledge of SML and its type theory will be acquired.

Judgment skills:
Students will acquire notions necessary to develop quality software and to understand the modern developments of programming languages.

Communication skills:
Students will learn to use mathematics and logics to describe, develop and analyze software, and to integrate the formal approach with an intuitive presentation of ideas.

Learning ability:
The use of mathematics in the theory and practice of programming helps developing logical and analytical skills and a deeper understanding of programming languages.

10595534 | Web and Software Architecture3rd1st6INF/01ENG

Educational objectives

General goals:
The aim of the course is the study of java language support to server side programming, for the realization of web based applications. The course will also provide a critical comparative analysis of several approaches to realize the same functionalities, for a series of problems common in the development of web applications.

Specific goals:
Server Side programming through Java Servlet and JSP.

Knowledge and understanding:
Through this course, students will comprehend how the java language supports the realization of web applications. In particular, students will focus on the motivation at the basis of all the implementation choices with reference to the client server –architecture and network protocols in use.

Applying knowledge and understanding:
Through this course, students will develop the capability to determine among potential solutions which is the most suitable in terms of performance, security, portability and efficiency.

Critical and judgmental abilities:
The course will provide students with sufficient tools and methodologies to perform a comparative analysis of different potential solution methodologies.

Communication skills:
Students will be able to motivate the solutions adopted to design a specific web application, and to provide a comparative analysis of the chosen solutions with respect to other potential approaches.

Learning ability:
Students will develop the capability to autonomously study and search for new solutions and to evaluate new methodologies, technologies and models for the development of Web applications.

10595535 | Human Computer Interaction3rd2nd6INF/01ENG

Educational objectives

General objectives:

At the end of the course the students know the theories, models and rules that guide the project and the development and validation of usable interfaces and interactive systems.
Students who pass the exam are able to design interactive systems following the criteria of human-computer interaction, analyzing the user's role, the scenarios and the main tasks, and taking into account the implementation constraints through project cycles and development very short.

Specific objectives:

Knowledge and understanding:
At the end of the course the students know the theories, the models and the rules that guide the project of interfaces and usable interactive systems.They also know the principles of agile design centered on the user.

Apply knowledge and understanding:
Students apply the knowledge gained in designing an interface as a group work for the exam.

Critical and judgmental skills:
Students, also through practical exercises, acquire skills in the evaluation and validation of human computer interfaces and develop judgment on the usability of an interface and therefore on the effects of the use of the interface in terms of effectiveness, efficiency and satisfaction. .

Communication skills:
The students support two presentations of their group work during the two revisions scheduled with the teacher. The first review is carried out in the classroom and the presentation is therefore aimed at all colleagues in order to exercise communication skills.

Learning ability:
The learning capacity is stimulated through 1) guided and autonomous supervised planning activities; 2) exposure to realistic design problems by stimulating the independent search for non-standard solutions; 3) the presentation of real cases and stimulating their critical discussion.

10595533 | Optimization3rd2nd6INF/01ENG

Educational objectives

General goals:
Introduction to mathematical modelization of optimization problems, Linear and Integer programming and their applications in real contexts.

Specific goals:
To learn:
1. Main problem modelling techniques using mathematical and logical language
2. Main theory properties and their practical applications for optimization problems
3. Linear programming and simplex algorithm and its applications.
4. Competences for software for modelling and optimization

Knowledge and understanding:
develop
1. the ability of conciseness, of logical reasoning and problem solving trhough quantitative models;
2. the ability to describe and solve e risolvere (also at high level) computationally hard problems;
3. the ability to use english written bibliography and software;
4. the ability to identify precisely optimization problems and when they are linear integer or non-linear;
5. the ability to design a implementable version of mathematical optimization problem model and finding solution
for the model using appropriate algorithms. Interpreting the solutions.

Applying knowledge and understanding:
1. Real applications of optimization problems (especially on networks)
2. Skills on using software for modelling and optimization

Critical and judgmental skills:
Enabling autonomous thinking in the student by deepening the ability of mathematical reasoning of the student through the development of logical language and problem solving abilities.

Communication skills:
Group work aimed at solving optimization problems drawn from everyday cases, develop communication abilities in explaining and focusing optimization problems on concrete working examples

Learning ability:
Skills and theoretical tools acquired during the course are basic for more advanced courses on topics concerning computational complexity, network algorithms, graph theory.

10620673 | Functional Programming3rd2nd6INF/01ENG

Educational objectives

General objectives:
Acquire functional programming paradigm and advanced aspects of imperative programming in C. Acquire techniques of reasoning about programs, to drive both correctness proofs or program testing.
Comparison among different programming language paradigms (imperative, functional, and object--oriented) to speed-up learning of new programming languages.

Specific objectives:

Knowledge and understanding:
Advanced aspects of C language (mainly, explicit pointers and memory (de)allocation, efficiency of C programming). Basic and advanced knowledge of functional programming in Haskell (polymorphic types,
laziness, higher-order functions, monads).

Apply knowledge and understanding:
Apply different programming methodologies (peculiar to each programming paradigm) to problem solving.

Critical Judgmental skills:
The comparative study of several programming languages paradigm allows students to evaluate, for example, which is the most suitable language to use to develop a given software application.
Reasoning about programs techniques can drive both program development and program testing.

Communication skills:
Students are stimulated, especially in their final presentation to expose concisely but precisely ideas behind programs as well as program analysis.

Learning ability:
The comparative study of several programming languages paradigm gives students the ability to focus on fondamental aspects of programming languages (parameter passing rules, type systems, language semantics) and this greatly improve their ability to learn new programming languages.
Also the ability to learn technical aspects (such as libraries, use of developer tools) will benefit from this studies.

10620674 | Intelligent System Design Methods3rd2nd6INF/01ENG

Educational objectives

General goals:
The course aims at presenting basic methods and tools for modelling, analysis and design of intelligent systems.
Specific goals:
The course aims at making students proficient in the comprehension and use of a wide set of modelling, design, verificaton and validation techniques for intelligent systems.
Knowledge and understanding:
A wide-spectrum introduction to the foundational principles of modelling, analisys and design of intelligent systems modelled as continuous time or discrete time dynamical systems.
Applying knowledge and understanding:
The successful student will be able to exploit the portfolio of techniques and the different approaches shown in the course for the modelling, design, verificaton and validation of intelligent systems.
Critical and judgmental skills:
Students will be able to take autonomous and rational decisions on the most effective techniques to employ for the modelling, design, verification and validation of intelligent systems.
Communication skills:
Students will be able to interact proficiently with domain experts on a wide set of topics concerning modelling, design, verification and validation of intelligent systems.
Learning ability:
Students will be able to extend their skills in the subjects of this course, by the autonomous reading of relevant scientific literature.

The student must acquire 6 CFU from the following exams
LessonYearSemesterCFUSSDLanguage
10595536 | Business and Computer Science3rd1st6SECS-P/07ENG

Educational objectives

General goals
The Business and Computer Science course analyses different types of information systems and how they can contribute to the success of a company's objectives. Also, it presents approaches and models to be used to assess the quality of ICT processes, software and services. Furthermore, it provides the basic knowledge to plan, manage and control IT projects.

Specific goals
• Knowledge and understanding
- Functional model and information structure of business processes
- integration and data control requirements of business information systems
- systems and technologies for developing and maintaining a successful e-business
- main areas of application of information systems in various market sectors
- IT organisation and IT quality assessment models
- basic background knowledge, techniques/methodologies and soft skills for ICT project management
- systems and technologies to develop&maintain a successful e-business
- main application areas of info systems in various industries
- ICT organisation and mainstream techniques (e.g. quality management)
- basic definitions (context), techniques/methodologies and soft skills for project management in ICT

• Application of knowledge and understanding
- Analyse different categories of requirements extracted from different categories of users (stakeholders) of information systems
- Select the appropriate model to assess the quality of ICT processes, software products and ICT services
- Develop a feasibility study by selecting the appropriate application and technology architecture
- Prepare, for a simple ICT project, a development plan respecting the constraints of time, cost, quality, and defining the appropriate organisation
- Monitor an ongoing ICT project, applying project management techniques
- Understand and evaluate lessons learnt in previous projects

• Critiquing and judgmental skills:
The combination of face-to-face theoretical lectures and practical exercises aimed at discussing and solving specific problems enables students to acquire the ability to assess the potential and limitations of approaches and models for the development of businesses and the achievement of their strategic objectives.

• Communication skills:
At the end of the course, students are able to illustrate and explain the main approaches to the management of the enterprise, its processes and ICT services to a variety of interlocutors who are heterogeneous in terms of background and professional role.

• Learning skills:
The student acquires the ability to independently conduct individual studies on specific topics related to information systems, process and service management. During the course, the student is stimulated to investigate topics of particular interest by consulting additional bibliographic material, such as academic articles, specialist books and websites. The acquisition of these skills is tested and assessed by analysing and solving new problems on the basis of the topics covered and the reference material distributed during the course.

10595537 | Law and Computer Science3rd2nd6IUS/20ENG

Educational objectives

General Objectives:
The aim of the course is to deepen the main issues of legal regulation in information technologies, in companies and in the public administration, with reference to the topics of artificial intelligence, European regulation on the data processing and processing of personal data and electronic commerce and intellectual property relating to information technology. Legal instruments, protocols and standards of European cooperation in the use of artificial intelligence will also be presented. The course is structured in in-depth modules also with examination of practical cases.

Knowledge and understanding
At the end of the course the student is able to identify and develop the main legal knowledge in the field of data processing and artificial intelligence and therefore to operate effectively in public administrations. Furthermore, he is able to effectively participate in working groups on the use of artificial intelligence having clear the indispensable notions and legal responsibilities. The course allows the student to combine IT technological skills and economic and legal organizational skills regarding the use of IT/AI or IT/AI tools in the corporate and public sphere.

Ability to apply knowledge and understanding
For the realization of the training objectives, the teaching activities are divided into thematic in-depth modules, for the definition and intervention in specific contexts and to understand the needs of the operators.