10595099 | CALCULUS [MAT/05] [ENG] | 1st | 1st | 12 |
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 2 [MAT/05] [ENG] | 1st | 1st | 6 |
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 Architecture [INF/01] [ENG] | 1st | 1st | 12 |
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 2 [INF/01] [ENG] | 1st | 1st | 6 |
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 Algebra [MAT/02] [ENG] | 1st | 1st | 6 |
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 | PROGRAMMING [INF/01] [ENG] | 1st | 1st | 12 |
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 1 [INF/01] [ENG] | 1st | 1st | 6 |
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 2 [INF/01] [ENG] | 1st | 1st | 6 |
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 | ALGORITHMS [INF/01] [ENG] | 1st | 2nd | 6 |
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 | CALCULUS [MAT/05] [ENG] | 1st | 2nd | 12 |
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 1 [MAT/05] [ENG] | 1st | 2nd | 6 |
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 Architecture [INF/01] [ENG] | 1st | 2nd | 12 |
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 1 [INF/01] [ENG] | 1st | 2nd | 6 |
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 | Physics [FIS/01] [ENG] | 1st | 2nd | 6 |
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 2 [INF/01] [ENG] | 1st | 2nd | 6 |
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.
|
10595529 | Calculus 2 [MAT/05] [ENG] | 2nd | 1st | 6 |
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 | Probability [MAT/06] [ENG] | 2nd | 1st | 6 |
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 Analysis [INF/01] [ENG] | 2nd | 1st | 12 |
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 2 [INF/01] [ENG] | 2nd | 1st | 6 |
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 Networking [INF/01] [ENG] | 2nd | 1st | 12 |
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 1 [INF/01] [ENG] | 2nd | 1st | 6 |
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 2 [INF/01] [ENG] | 2nd | 1st | 6 |
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 [INF/01] [ENG] | 2nd | 2nd | 12 |
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 1 [INF/01] [ENG] | 2nd | 2nd | 6 |
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 2 [INF/01] [ENG] | 2nd | 2nd | 6 |
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 NLP [INF/01] [ENG] | 2nd | 2nd | 6 |
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 Analysis [INF/01] [ENG] | 2nd | 2nd | 12 |
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 1 [INF/01] [ENG] | 2nd | 2nd | 6 |
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 | Statistics [SECS-S/01] [ENG] | 2nd | 2nd | 6 |
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.
|
10595530 | Foundations of Computer Science [INF/01] [ENG] | 3rd | 1st | 6 |
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 course [N/D] [ENG] | 3rd | 2nd | 12 |
Educational objectives Courses chosen by the student as per the study plan
|
AAF2604 | Internship [N/D] [ENG] | 3rd | 2nd | 15 |
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 exam [N/D] [ENG] | 3rd | 2nd | 3 |
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.
|
Optional group: THREE-DIMENSIONAL MODELING | | | |
Optional group: THREE-DIMENSIONAL MODELING | | | |