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

Curriculum(s) for 2025 - corso|33503 (33503)

Single curriculum

1st year

LessonSemesterCFUSSDLanguage
1015883 | Introduction to Computer Programming1st9INF/01ITA

Educational objectives

General objectives:
Introduction to programming through the Python language.

Specific objectives:
Introduction to programming through the Python language.
Data types, variables, assignments, control structures, functions, classes, modules and Input/Output.
Data structures: arrays, strings, lists, tuples and dictionaries.
Design and development of programs through procedural programming and object-oriented programming.
Recursive and iterative algorithms.
Python libraries for graphics, file handling, text/html processing and internet access.
Program debugging and testing.

Knowledge and understanding:
Understand and define a problem's requirements.
Choose how to represent the input and what data structures to use for intermediate computations and output.
Define the algorithm solving the problem.
Code the algorithm as a Python program.
Modularize the program as small separate functions/methods.
Test that the program satisfies the requirements.

Apply knowledge and understanding:
The student will work at home on a series of programming tasks, through the whole course, to practice and to show what has been learned.
At the end of the course, the exam will be based on a lab test where she should solve and program various programming exercises.

Critical and judgmental skills:
The student, at the end of the course, should be able to autonomously choose how to solve a programming task (analysis, implementation and test).

Communication skills:
It is very important that the student has good text comprehension abilities for the problem analysis and requirement definition phase.

Learning ability:
The ability to
analysis a problem to define its requirements and design both the necessary data structures and the correct algorithm will be applicable to other programming languages and will be very useful for the following programming courses.

10621297 | Mathematical Methods for Computer Science1st6INF/01ITA

Educational objectives

General goals:
The course is aimed at acquiring the basic logical and set-up knowledge to tackle the study of other topics in mathematics and computer science.

Specific goals:

Knowledge and understanding:
At the end of the course student will have full understanding of the proposed logical-set-theoretical tools.

Apply knowledge and understanding:
Students will have acquired the ability to carry out a rigorous, even if elementary, mathematical reasoning, in particular with regard to the fundamental logical principles and the use of induction in all its forms.

Critical and judgmental skills:
Students will therefore be able to critically address the arguments proposed in other theoretical and applied teachings. In this regard, many examples are given from other lessons.

Communication skills:
Active participation in the classroom and the use of the oral exam serve to stimulate students in acquiring the proper language of mathematics and to transmit the knowledge and skills acquired appropriately .

Ability to continue the study:
Students will be able to deepen in the personal study the topics treated using what they have learned as a basis.

AAF2511 | English level B21st6ENG

Educational objectives

GENERAL GOALS:
This course aims to develop B2-level communicative competence in English. Students will be able to understand and produce more complex texts autonomously and appropriately, on both concrete and abstract topics, across a variety of contexts. The course also aims to consolidate linguistic autonomy and promote active and conscious participation in foreign language communication.
SPECIFIC GOALS:
The course will focus on the main advanced grammatical and lexical structures required to develop the communicative functions defined at the B2 level.
These are the main communicative functions the course aims to develop:
- expressing well-structured opinions, giving reasons, and supporting arguments;
- understanding and participating in complex conversations, even in unfamiliar contexts;
- understanding and summarising the content of complex written and spoken texts.

KNOWLEDGE AND UNDERSTANDING:
By the end of the course, students will have acquired the main grammatical structures, vocabulary, and language functions corresponding to the upper-intermediate B2 level of the Common European Framework of Reference for Languages (CEFR).
APPLYING KNOWLEDGE AND UNDERSTANDING:
By the end of the course, students will be able to understand complex spoken and written texts on both concrete and abstract topics, including technical discussions in their areas of interest. They will also be able to write clear, organised texts and communicate effectively on a wide variety of subjects.
CRITICAL AND JUDGEMENTAL ABILITIES:
Students will be able to independently identify possible language mistakes and evaluate the accuracy and effectiveness of their oral and written texts. Through metacognitive processes, they will develop greater awareness of their language skills and of possible areas for improvement.
COMMUNICATION SKILLS:
Students will be able to communicate more fluently and accurately in various contexts, including formal ones. They will be able to interact with different interlocutors, adapting their language and register. They will know how to express complex ideas in a clear and structured way, both orally and in writing, on a wider range of topics.
LEARNING ABILITY:
The course will help students develop independent learning strategies by using various resources. They will learn to organise their study effectively by setting personal language goals and monitoring their own progress. They will also develop greater awareness of the similarities and differences between English and their native language.

10621549 | MATHEMATICAL ANALYSIS1st12MAT/05ITA

Educational objectives

The teaching consists of two modules: read the objectives of the single module.

MATHEMATICAL ANALYSIS II MODULE1st6MAT/05ITA

Educational objectives

General goals:
Expose students to solid methodologies for the design and implementation of databases in Third Normal Form, along with their related applications.
Specific goals:
Introduce students to formal and scalable methodologies for identifying constraints, performing conceptual analysis, and translating into the relational logical model, leading to the design and implementation of normalized databases and the use of standard technologies for querying them and embedding queries in software applications.
Knowledge and understanding:
Students will acquire fundamental methodological knowledge for designing non-trivial databases, particularly in the phases of:
a) requirements gathering;
b) conceptual analysis of data and functionalities;
c) database and functionality design;
d) verification of normalization and correction of anomalies, if necessary.
They will also learn how to implement these designs using DBMS and standard languages for data definition, querying, and manipulation.
Applying knowledge and understanding:
Students will be able to effectively apply the knowledge described above to real-world projects involving non-trivial database applications.
Critical and judgmental abilities:
Students will be able to independently make rational decisions at all stages of the database and application design process and assess whether a relational schema conforms to Third Normal Form.
Communication skills:
Students will be able to interact effectively with clients (regarding requirements gathering) and with other analysts and designers (regarding the analysis and design of non-trivial software systems).
Learning ability:
Students will be able to independently expand their knowledge by consulting technical documentation as needed in the field of database application design"
Specific goals: 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.
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 and Integral Calculus.

10620599 | Algorithms 12nd6INF/01ITA

Educational objectives

General goals:
This course introduces students to basic methods for algorithm design and analysis. They will study well-known algorithms that solve fundamental problems such as sorting or searching, together with the simplest tools to analyze them from an efficiency point of view.
Specific goals
The course aims to make the basic algorithms and fundamental data structures correctly used.
In particular, the main algorithms for solving search and sorting problems will be addressed.
The most important data structures will then be studied: unordered and ordered arrays, simple and double lists, dictionaries, trees.
Finally, the tools for calculating the computational cost of algorithms will be provided.

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, the main sorting algorithms and the most basic implementations of dictionaries.
Applying knowledge and understanding:
At the end of the course, students will be familiar with the main basic data structures, particularly those implementing dictionaries. They will be able to explain the algorithms and analyze their complexity, highlighting how performance depends on the data structure used. They will be able to design new data structures and related algorithms, reworking existing ones; will be able to explain the main sorting algorithms, illustrating the underlying project strategies and the related complexity analyses; they will be able to compare the asymptotic behavior of the execution times of the studied algorithms; they will be able to design recursive solutions to problems and asymptotically analyze the resulting algorithms.
Critical and judgmental abilities:
The student will have the basis for analyzing the quality of an algorithm and of the related data structures, both from the point of view of the effective resolution of the
problem and from that of the computational efficiency with which the problem is solved.
Communication skills:
The student will acquire the ability to present his knowledge in a clear and organized way, which will be verified through the questions presented in the written tests and during the oral exam. The student will be able to express an algorithmic idea rigorously at a high level, in pseudocode.
Learning ability:
The knowledge acquired will allow the student to tackle the study of algorithmic techniques and more advanced data structures.

1015884 | Object-Oriented Programming2nd9INF/01ITA

Educational objectives

General goals:
Learning object-oriented programming concepts through the Java programming language.

Specific goals:
Fundamentals of object oriented programming: classes and objects, encapsulation, inheritance, polymorphism, static and dynamic binding, design patterns. Functional programming. Tools and methodologies for software design through an object-oriented programming language. Java language.

Knowledge and understanding:
Knowledge of OOP constructs, with special reference to Java. Understanding a Java program. Ability to write a small- or medium-size Java programs.

Applying knowledge and understanding:
Ability to apply basic methodologies to face software system design of small and medium size. Ability to use the main development tools to implement such systems in Java.

Critiquing and judgmental abilities:
Ability to identify correct/effective and incorrect/ineffective instructions, constructs or patterns in Java.

Communication skills:
Ability to illustrate projects.

Learning ability:
Ability to learn and apply new programming techniques starting from those learned during the course.

10621298 | Linear Algebra and geometry2nd6MAT/02ITA

Educational objectives

General goals: To learn basic Linear Algebra and Geometry.
Specific goals: Vector spaces, dimension, linear maps, isomorphisms, matrices, elementary operations, reduction to a row echelon matrix.
Affine spaces, affine maps, affine coordinates.Determinant, Laplace, Binet, Cramer.Diagonalization, eigenvalues, eigenspaces.
Positive definite real scalar product. Knowledge and understanding: The student will learn basic Linear Algebra and Geometry.
Applying knowledge and understanding: The student will learn to apply Linear Algebra and Geometry in order to solve problems.
Critical and judgmental abilities: The student will learn when Linear Algebra and Geometry are relevant for the solution of a problem.
Communication skills: The student will learn to communicate using the language of Linear Algebra and Geometry.
Learning ability: The student will be able to understand results in Linear Algebra and Geometry.

10621549 | MATHEMATICAL ANALYSIS2nd12MAT/05ITA

Educational objectives

The teaching consists of two modules: read the objectives of the single module.

MATHEMATICAL ANALYSIS I MODULE 2nd6MAT/05ITA

Educational objectives

General goals: The purpose of the course is to provide the student with basic mathematical analysis tools such as : the theory of series, integral calculus and differential equations.
Specific goals: Students will be able to examine various techniques of integration and apply them to compute definite and indefinite integrals by using integration by substitution and the rule of integration by parts.Students will be able tocompute limits of sequences and discuss the convergence of number series, power seriesand Taylor series of elementary functions.
Knowledge and understanding: At the end of this course the students will be able to calculate integrals and the solutions of some first order differential equationsand the solutions of second order linear differential equations with constant coefficientsLearning activities consists of lectures and exercise sessions. The lecture aim to introduce fundamental concepts, to explain them by showing examples.
Applying knowledge and understanding: The exercise sessions aim to teach how to select and use calculation methods.
Critical and judgmental abilities: To be able to autonomously solve new problems, applying mathematical tools to phenomena or processes to be encountered in University studies or subsequent working activities.
Communication skills: To know how to communicate using properly mathematical language.
Learning ability: To be able to deepen autonomously some arguments introduced during the course.

2nd year

LessonSemesterCFUSSDLanguage
10620601 | Computer Architecture 11st6INF/01ITA

Educational objectives

General goals:
How to design combinational and sequential circuits.
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.
Knowledge and understanding:
Knowing and understanding the handling and processing of information on a computer.
Applying knowledge and understanding:
Show the ability of designing simple combinational and sequential circuits that perform specific tasks.
Critical and judgmental abilities:
Being able to choose the best approach, among those considered, for solving a specific task.
Communication skills:
Being able to evaluate and motivate the choices taken in the design of a circuit.
Learning ability:
Understanding the differences and advantages of the different design techniques.

1023608 | Databases1st9INF/01ITA

Educational objectives

General goals:
Expose students to solid methodologies for the design and implementation of databases in Third Normal Form, along with their related applications.
Specific goals:
Introduce students to formal and scalable methodologies for identifying constraints, performing conceptual analysis, and translating into the relational logical model, leading to the design and implementation of normalized databases and the use of standard technologies for querying them and embedding queries in software applications.
Knowledge and understanding:
Students will acquire fundamental methodological knowledge for designing non-trivial databases, particularly in the phases of:
a) requirements gathering;
b) conceptual analysis of data and functionalities;
c) database and functionality design;
d) verification of normalization and correction of anomalies, if necessary.
They will also learn how to implement these designs using DBMS and standard languages for data definition, querying, and manipulation.
Applying knowledge and understanding:
Students will be able to effectively apply the knowledge described above to real-world projects involving non-trivial database applications.
Critical and judgmental abilities:
Students will be able to independently make rational decisions at all stages of the database and application design process and assess whether a relational schema conforms to Third Normal Form.
Communication skills:
Students will be able to interact effectively with clients (regarding requirements gathering) and with other analysts and designers (regarding the analysis and design of non-trivial software systems).
Learning ability:
Students will be able to independently expand their knowledge by consulting technical documentation as needed in the field of database application design.

10620600 | Algorithms 21st6INF/01ITA

Educational objectives

General goals:
This course introduces students to methods for designing and analyzing algorithms. Non-elementary data structures will also be covered.
Specific goals:
Students will study various algorithmic techniques widely applicable, such as greedy technique, divide and conquer, dynamic programming, and backtracking. These techniques will be illustrated through classic algorithms such as Dijkstra's algorithm and the Bellman-Ford algorithm for finding shortest paths, Kruskal's algorithm or Prim's algorithm for the minimum spanning tree problem.
Knowledge and understanding:
Upon completion of the course, students will be familiar with methodologies for designing and analyzing algorithms, non-trivial data structures, and key algorithms.
Applying knowledge and understanding:
By the end of the course, students will have gained familiarity with major data structures. They will be able to explain algorithms and analyze their complexity, highlighting how performance depends on the data structure used. Faced with a new problem, they will have various algorithmic techniques at their disposal to reference when seeking an efficient algorithm to solve it.
Critical and judgmental abilities:
Students will have the tools to analyze the quality of an algorithm and its associated data structures, both in terms of effectively solving the problem and the computational efficiency with which the problem is solved.
Communication skills:
Students will acquire the ability to clearly and organizedly present their knowledge, which will be assessed through questions in written exams and during oral exams. They will be able to express algorithmic ideas rigorously at a high level, using pseudocode.
Learning ability:
The knowledge acquired will enable students to tackle problems using more advanced algorithmic techniques and data structures than those covered in the introductory algorithms course.

10620642 | Operating Systems 1st9INF/01ITA

Educational objectives

"General goals:
The course focuses on operating systems concepts, structure, and mechanisms. Fundamental characteristics, present since the most traditional systems, will be treated, but also peculiarities of modern systems that arise due to the recurring evolution of technology."
"Specific goals:
The course will cover the characteristics and concepts of modern operating systems, with particular reference to Unix and Linux systems. We will start with a description of the evolution of operating systems over time and continue with fundamental concepts such as processes, stalling and related prevention mechanisms, process concurrency, memory management, processor and I/O, files system, and security."
"Knowledge and understanding:
To understand in depth how operating systems support the execution of user programs and manage the hardware peripherals of a computer. Fundamental methods and techniques for in-memory process representation and efficient handling of multiprogramming - multiple processes loaded/running concurrently - on a resource-constrained system."
"Applying knowledge and understanding:
Design user and system-level programs efficiently and securely."
"Critical and judgmental abilities:
To predict the use of resources required by a program, to discover a possible deadlock situation in a multi-programmed system. to ensure mutual exclusion between processes and secure access to memory areas or sensitive resources."
"Communication skills:
Knowing how to clearly and precisely communicate the characteristics of operating systems and their software/hardware support mechanisms."
"Learning ability:
Know how to exploit the knowledge acquired in the design of systems and user programs in the next module of the course. Use this knowledge in learning properties of more complex systems such as distributed and cloud systems."

10620609 | Computer Architecture 22nd6INF/01ITA

Educational objectives

General goals:
The goal of the course on Computer Architecture is 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:
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:
Students will acquire knowledge about the organization of the RISC microprocessor, 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:
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.
Critical and judgmental abilities:
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:
The course is not concerned with explicit objectives on communication skills, except to instruct on the rigorous presentation of formal topics.
Learning ability:
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.

10620602 | Fundamentals of Internet2nd9INF/01ITA

Educational objectives

General goals:
- Learn the fundamentals of modern computer networks and Internet

Specific goals:
Knowledge and understanding:
- Application, transport, network, and data-link protocols of the TCP/IP model

Applying knowledge and understanding:
- Understand any protocol involved with TCP/IP communications
- Grasp powerful network troubleshooting tools and techniques
- Ability to use network services like DNS and DHCP that help make computer networks run

Autonomy of judgment:
- Detect network problems
- Evaluate the design of new services

Communication skills:
- Ability to describe computer networks in terms of a five-layer model

Learning ability:
- The course provides the fundamentals to learn notions related to wireless systems and Internet of Things

10620608 | Advanced Programming2nd9INF/01ITA

Educational objectives

General Goals
To create complex software systems that are reliable and efficient may require the programmer to directly exploit the operating system support for the manipulation of resources such as processes, memory, the file system and I/O devices, synchronization between concurrent processes and communication between processes running on remote nodes. Error-free programming and correct handling of exceptions at runtime leads to the creation of reliable systems. While profiling a program at runtime, that is, observing the resources it uses (e.g. memory) and the execution time allows one to understand how efficient a program is and to choose the most performing data structures and algorithms for the realization of a task.
The "Advanced Programming" course aims to provide the student with the knowledge necessary for the development of reliable and efficient software.

Specific goals:
In particular, the student will learn:
● To create programs using compiled languages such as C, Rust and C++

● To program using the operating system support through the interface it provides, i.e.
system calls (and library functions)
● To develop programs that are able to create processes (or threads), access system
resources (file system and I/O), communicate with other processes (sockets, pipes),
synchronize with other processes (signals, semaphores, mutexes) to access shared
resources (memory, file system, I/O)
● To create reliable and efficient programs
● To identify, prevent and manage errors at runtime
● To trace the behavior of a program in execution
Knowledge and understanding:
● To understand in depth how operating systems support the execution of user programs
and manage the hardware peripherals of a computer.
● To understand and use fundamental methods and techniques for representing
processes in memory and the efficient management of multiprogramming.
● To understand the use of programming languages such as C, Rust, C++ and the main
Linux system calls.
Applying knowledge and understanding:
Design reliable and efficient user-level and system-level programs
Critical and judgment skills:
Be able to predict the use of resources required by a program, discover deadlock situations in a
multiprogrammed system, ensure mutual exclusion between processes and protected access to
memory areas or shared resources. Determine which programming language is best suited,
among those studied, to achieve given reliability or efficiency objectives.
Communication skills:
Be able to communicate clearly and precisely
● the mechanisms for accessing the operating system API
● how to create reliable and secure programs
● how to identify, prevent and manage errors at runtime, and trace the behavior of a
program in execution
Learning ability:
● To exploit the knowledge acquired in the design of reliable and secure systems.
● To learn the properties of more complex systems such as distributed and cloud systems.

1031978 | 2nd9MAT/06ITA

Educational objectives

General objectives:
The course aims to provide fundamental knowledge and application skills in the main topics of probability and statistics.

Specific objectives:
Acquire the fundamental concepts of probability theory and the main distributions of discrete and continuous random variables, understand the concepts of expected value, independence, conditioning, and the basic principles of statistical inference, learn the concepts of convergence for sequences and series of real and trigonometric functions, with attention to uniform convergence and mean-square convergence, gain knowledge of the essential elements of the theory of functions of a complex variable, including holomorphy, singular points, and residues, understand the application of the Laplace and Fourier transforms.

Knowledge and understanding:
By the end of the course, students will have acquired the basic concepts and results related to probability theory on finite and countable spaces, the concept of discrete random vectors, and the concept of continuous random variables.
They will also have learned the fundamentals of approximation theory and the basics of statistics.

Applying knowledge and understanding:
By the end of the course, students will be able to solve simple problems in discrete probability, problems related to discrete random vectors, and random numbers represented by continuous random variables.
They will also be able to appreciate the meaning and implications of independence and conditioning (within discrete models).
Additionally, they will be able to apply the Laplace transform and use the Fourier transform on appropriate classes of functions.

Critical and judgment skills:
Students will develop the ability to construct probabilistic models in simple application contexts of physical, biological, and technological interest, to use tables and simulation software for the most commonly applied discrete laws, and to understand the use of basic statistical tools in inference, statistical sampling, and simulation.

Communication skills:
The acquired knowledge will allow students to clearly and rigorously present the learned contents, responding effectively to theoretical and practical questions, both in the written and oral examinations.

Learning skills:
The skills developed will support independent study or further study through specialized courses in advanced aspects of probability and statistics.

3rd year

LessonSemesterCFUSSDLanguage
1041727 | AUTOMATA COMPUTABILITY AND COMPLEXITY1st6INF/01ITA

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.

10620617 | Software Engineering1st9INF/01ITA

Educational objectives

General objectives:
The course explains the fundamentals of the methodologies and tools for the management of software processes. Particular attention is given to object-oriented analysis and design methodologies, and to their management and documentation through UML.

Specific objectives:
Introduction to software engineering approaches and software life cycle, in-depth analysis of the specific activities, analysis, design and testing of software systems, techniques for process management, with particular reference to the management of quality and risks and all 'cost analysis.

Knowledge and understanding:
At the end of the course students will have acquired knowledge about the main models of the software life cycle, the metrics for the sizing of the effort, the techniques for describing the different components of a software project. Knowledge about the use of UML language will have been acquired. Finally, they will also have become familiar with the scientific literature in the field.

Application of knowledge and understanding:
At the end of the course students will be able to work as a team in the activities of analysis, design, documentation and management of medium-sized software projects. Students will have learned to produce documentation based on UML, relative to the main types of diagrams: use cases, classes, interaction, status and activities, also through the use of professional software environments oriented to the systematic development of software projects. Finally, they will be able to produce an evaluation of the effort based on Function Points and Use Case Points.

Judgment skills:
Students will develop the analytical skills necessary to evaluate various alternatives during the software development process, with particular reference to the evaluation of architectural choices and project risks.

Communication skills:
Students will learn to document their choices, also through the use of documentation generation tools, in particular by exploiting diagrammatic notations. They will also have acquired the ability to prepare presentations related to scientific topics.

Learning ability:
The knowledge of the formal rigor aspects underlying the software engineering discipline will allow students to quickly gain confidence with techniques, in addition to those considered in the course, based on general principles.

Elective course2nd12ITA

Educational objectives

AT THE STUDENT'S CHOICE

AAF1053 | Internship2nd15ITA

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.

AAF1001 | FINAL EXAM2nd3ITA

Educational objectives

The final exam consists in the drafting, presentation and discussion of a written dissertation, prepared independently by the student, which documents in an organic and detailed way the problem faced in the training internship and all the activities performed to reach the solution.

New group
Artificial Intelligence and Machine Learning

Optional groups

The student must acquire 12 CFU from the following exams
LessonYearSemesterCFUSSDLanguage
97597 | Physics3rd1st6FIS/01ITA

Educational objectives

Knowledge acquired
The main purpose of this course is to teach the scientific method. For each topic under scrutiny, the experimental (or numerical) observations about the physical phenomenon to be understood are presented. The process of reductionism, with its approximations, is then illustrated, leading to a model sufficiently simple to be treated mathematically. Finally, the physical laws that allow the explanation of the observed phenomenon are introduced, while highlighting the regime of validity of such laws and their limitations.

Skills acquired
At the end of this course, the student should have learned the scientific method and should be able to apply it to any scientific problem she/he faces. In practice, she/he should have developed the problem solving skills that are in high demand in any technical-scientific discipline. She/He should have also acquired a wealth of basic physical laws, which allow her/him to understand many of the natural phenomena and technological devices that surround her/him.

1022263 | Human-Computer Interaction3rd1st6INF/01ITA

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.

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.

10621254 | Organization and Management for Business Start-Up3rd1st6SECS-P/10ITA

Educational objectives

General goals:

The course of Start-Up Organization and Management intends to provide students with the knowledge and the "fundamentals" for the analysis and understanding of the main organizational problems that characterize the start-up and management of businesses in the digital age and a wide range of useful tools for their resolution.

In particular, once the basic concepts relating to the company and the business dynamics have been addressed, the course deepens the main issues related to the start-up, such as organizational planning, strategic planning, evaluation of the business idea and its economical- financial feasibility .

These issues are addressed within an educational path that unfolds chronologically following the functional steps for the preparation of a business plan. More precisely, the teaching alternates frontal lectures with laboratory activities, in which the students, divided into groups, will be guided didactically in the realization of a business plan related to an idea of digital enterprise. This path allows students to personally examine the characteristics of the start-up process, and helps them understand the fundamental variables (and levers) of the organization, on which the company management can act to improve performance and improve the achievement of competitive advantage over competitors.

There are no particular prerequisites, in terms of previous knowledge of an economic-business nature, for the attendance of the course and for taking the exam tests.

Specific goals
Objectives: the first part will describe and analyze the characteristics, the basic elements and the actors that characterize the company, as well as the phases of its life cycle. Furthermore, the relationships existing between the organization and the management of the company will be deepened, introducing the concept of economic "balance" as a fundamental law at the basis of the company's ability to survive over time.

Objectives: in the second part the didactic path will begin to provide the necessary knowledge to proceed with the realization of the business plan. We will start by examining the opportunities for generating start-ups in the digital age, highlighting the differences with the start-up of traditional businesses. The fundamentals of the strategy will be examined, with the transition from the business idea to the formalization of the business model, the basic contents of the organizational design, with particular regard to the relationship between organization, environment and strategy, the techniques for analyzing market feasibility and the economic-financial one, the considerations underlying the choice of the legal form, as well as those for identifying the most appropriate forms of financing.

Objectives: in the third part, the role and structure of the business plan will be explored. More precisely, the students, appropriately divided into groups, will be didactically guided through the process of drafting a business plan. In this part, therefore, the business plan will be considered as the final objective of the course which, in addition to representing a valid project work for the purposes of the final evaluation, will be presented as part of a real contest at the end of the course.

These objectives will be pursued through the adoption of an appropriate mix of lectures, testimonials from the business world and group workshop activities.

Knowledge and understanding.
At the end of the course, students will be able to recognize and analytically address the organizational problems that characterize the start-up phase, relying on a broad theoretical background and a toolkit appropriate to their solution. More precisely, an understanding of the links between environmental, strategic and organizational variables will allow them to approach the development of the business idea by seeking the coherence of the strategic-organizational elements with the reference market, in compliance with the company's economic conditions. In addition, thanks to the acquisition of the tools necessary for the design of a digital start-up and the knowledge gained in the process of drafting the business plan, at the end of the course students will be able to develop an entrepreneurial idea and evaluate its feasibility, as well as formalizing it within a business plan to proceed with its concrete implementation.

This knowledge will be acquired by alternating frontal lectures aimed at providing the cognitive tools necessary for understanding the various topics, with group laboratory activities, in which students, divided into groups, will be guided didactically by the teacher in the realization of a business plan. Testimonials from the business world will also be introduced, capable of representing practical and exemplary case studies of what has been dealt with from a theoretical point of view.

Ability to apply knowledge and understanding.
Through individual and group work, students will be enabled not only to understand the origin, nature and type of the various organizational problems, but to develop shared solutions using techniques, models and analysis tools transferred during the frontal lessons.

The presentation by the students of the results of the group work will allow the development of reflection and argumentation skills, together with the ability to exchange, share and present the results achieved.

Finally, the testimonies of the organization experts from leading business organizations and the discussion of the related topics with the students will allow to corroborate - also with practical feedback - the ability to apply the techniques and the results achieved by the students themselves, and to learn from any mistakes made.

Making judgments.
The teaching of Business Organization, through mixed methods of content delivery (frontal lessons, group work, company testimonials), while dedicating adequate space to the main theoretical models consolidated in the reference literature, intends to stimulate students to achieve their own vision of organizational phenomena throughout the teaching path, encouraging independent judgment and the creative solution, albeit oriented and guided by the teacher, of the consequent problems.

In particular, the process of drafting the business plan at the basis of the group work was designed precisely to increase critical skills, reflection and independent processing of judgments, including that aimed at avoiding the prejudices that characterize in this area the phases of the decision-making processes oriented towards problem-solving, also with regard to the ethical and social repercussions that distinguish the organizational choices.

Communication skills.
The performance of group laboratory activities and the presentation of the results achieved represents an important tool, adopted in the teaching of Business Organization, for the development of communication skills. In particular, on the one hand, the discussions during group activities are specifically built to allow students to learn to interact and communicate, simulating knowledge sharing and consensus building activities typical of real work contexts; on the other hand, the presentation of the business plan in the context of the final contest was designed precisely to allow students to experience firsthand a real presentation of their business idea in front of potential investors.

These skills represent a "natural" component of the teaching in question, given that the issue of organizational communication is the subject of specific discussion within the same.

Learning skills.
Given the high transversal and multidisciplinary nature of the topics covered, the contents of which can easily be translated into organizational contexts other than businesses (albeit characterized by an orientation towards respect for the conditions of economic management), the teaching of Business Organization will allow students to acquire a theoretical, conceptual and application basis that can be used for a multiplicity of educational and practical courses following that of the three-year degree.

In addition to the natural continuation towards a master's degree program, not only of a managerial or business type, students will acquire skills that can be further developed, even independently, and can be used in companies, consultancy companies and other organizations, as well as for the establishment of innovative and high-tech start-ups.

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.

1022267 | Web Programming3rd1st6INF/01ITA

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.

10620643 | Cybersecurity3rd2nd6INF/01ITA

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.

-

1041761 | LANGUAGES AND COMPILERS3rd2nd6INF/01ITA

Educational objectives

General goals:
Studenta will learn the inner workings of a compiler from both a theoretical and a practical standpoint.

Specific goals:

Knowledge and comprehension:
In order to build a solid foundation on the inner workings of a compiler, selected topics on Formal Languages and Automata Theory will be presented in this course.

Application of knowledge and comprehension:
Students will learn how to use well-known tools for building compilers, e.g. Lex and YACC.

Capabilities of critiquing and assessing:
A non-mandatory part of the final exam will require the creation of a compiler for a simple high-level programming language.

Capabilities of communication:
The course is not concerned with explicit objectives on communication skills, except to instruct on the rigorous presentation of formal topics.

Capability of learning
The theoretical foundations and the widely used practical tools presented in this course will form a solid base for more advanced studies in this field.

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.

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.

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.

The student must acquire 6 CFU from the following exams
LessonYearSemesterCFUSSDLanguage
1047635 | MACHINE LEARNING3rd2nd6INF/01ITA

Educational objectives

General goals:
Introduce the student to the discipline of machine learning and to the design and implementation of prediction systems with supervised and unsupervised learning and to Deep Learning
Specific goals:
The course is designed to introduce the discipline of machine learning (ML), a class of methods that learn patterns from data and make predictions on new data. It is usually useful to use this type of approach when it is not possible to program the calculator with a set of rules or a well-defined algorithm.
The course is introductory and general on machine learning and also it will introduce a bit Deep Learning. The course is preparatory for advanced courses on Deep Learning.
Knowledge and understanding:
The knowledge and skills learned are divided into two axes: providing theoretical principles regarding basic methods for supervised and unsupervised learning. Know how to apply these concepts in practice to synthetic data or real but small-scale datasets in order to apply these notions in practice.
Applying knowledge and understanding:
Tools such as NumPy (with an emphasis on writing vectorized code), scikit learn, PyTorch (automatic differentiation and small neural networks) will be used to implement basic systems. Applications and application domains can be different, mainly on synthetic data or images.
Critical and judgmental abilities:
Develop a critical spirit on the application and use of an ML system and know how to evaluate and measure the performance of an algorithm on data. Know how to distinguish the advantages and disadvantages of different algorithms and determine the most suitable one based on the problem.
Communication skills:
Show mastery of the topics, communicating the concepts learned in the course clearly and with logical rigor, and with the right terminology, both in terms of the theoretical and practical parts. Communication can also take place with a report on laboratory activities carried out, properly justifying the decisions made.
Learning ability:
The course lays the foundations for understanding advanced scientific articles on machine learning in different application areas (computer vision, NLP) and provides a good foundation of fundamental concepts for advanced courses on Deep Learning.

1022262 | Artificial Intelligence3rd2nd6INF/01ITA

Educational objectives

General goals:
The course aims at introducing students to a wide-spectrum presentation of Artificial Intelligence (AI).

Specific goals:
The course aims at making students proficient in the theoretical comprehension of a wide set of AI techniques and in the practical use of such techniques within the design of intelligent software systems.

Knowledge and understanding:
A wide-spectrum introduction to the foundational principles and the different branches of Artificial Intelligence (AI), knowledge about problem solving by searching, logic inference, planning, automated reasoning, learning.

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 design and the successful implementation of intelligent software systems.

Critical and judgmental skills:
Students will be able to take autonomous and rational decisions on the most effective AI techniques to employ in the design of intelligent software systems.

Communication skills:
Students will be able to interact proficiently with other AI researchers on a wide set of AI topics.

Learning capabilities:
Students will be able to extend their skills in the subjects of this course, by the autonomous reading of the scientific literature on AI.