| 10628189 | Introduction to Computer Programming [INFO-01/A] [ITA] | 1st | 1st | 9 |
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 analyse 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.
|
| AAF2513 | English level B1 [N/D] [ENG] | 1st | 1st | 3 |
Educational objectives General Educational Goals
The course aims to develop students' English language communicative competence at the B1 level of the Common European Framework of Reference for Languages (CEFR). By the end of the course, students will be able to understand and independently produce both spoken and written messages in everyday, personal, educational, and cultural contexts. The course also seeks to foster learner autonomy by promoting a positive attitude toward second language acquisition.
Specific Educational Goals
The course covers the main grammatical structures and lexical areas required to develop B1-level communicative competence. Instruction begins with the consolidation of the fundamental prerequisite knowledge necessary for effective progression toward the target level. The main communicative functions addressed during the course include:
talking about oneself and everyday life;
describing people, objects, places, and events;
expressing preferences, opinions, agreement, and disagreement;
asking for and giving advice, permission, and instructions;
narrating past events and describing personal experiences;
making hypotheses and proposing solutions;
making requests, offers, and invitations.
Knowledge and Understanding
Upon successful completion of the course, students will have acquired the grammatical knowledge, vocabulary, and core language functions corresponding to the B1 (Intermediate) level of the Common European Framework of Reference for Languages (CEFR).
Applying Knowledge and Understanding
Upon successful completion of the course, students will be able to understand the main points of clear spoken and written English on familiar topics related to everyday life, such as family, education, work, and leisure. They will also be able to describe experiences, events, and aspirations in a clear and accurate manner, expressing opinions and providing simple explanations in English.
Making Judgements
Students will be able to independently identify and evaluate linguistic inaccuracies, assessing the grammatical correctness and communicative effectiveness of their spoken and written production. Through metacognitive reflection and language awareness activities, they will develop a greater understanding of their own language proficiency and identify areas requiring further improvement.
Communication Skills
Students will be able to communicate clearly and understand English in everyday situations, interacting with others with a reasonable degree of fluency. They will also be able to comprehend and produce texts on topics of everyday interest, including informal communications, descriptions, and narratives.
Learning Skills
The course supports the development of autonomous learning strategies through the effective use of a variety of learning resources and tools. Students will learn to organize and manage their own learning process by identifying their individual learning needs and selecting appropriate strategies to enhance their language competence. They will also develop the ability to reflect on language by comparing English structures with those of their first language, thereby strengthening their overall linguistic awareness.
|
| 10629623 | Mathematical Methods for Computer Science [INFO-01/A] [ITA] | 1st | 1st | 6 |
Educational objectives Educational goals
The course is aimed at acquiring basic logical and set theory knowledge to address other topics in mathematics and computer science.
Knowledge and understanding
By the end of the course, students will have a full understanding of the mathematical tools covered:
set theory, inductive reasoning, and elementary mathematical logic.
Applying knowledge and understanding
Students will acquire the ability to conduct rigorous, yet elementary, mathematical reasoning, particularly regarding fundamental logical principles and the use of the inductive approach in all its forms.
Making judgements
Students will be able to critically address topics covered in other courses, both theoretical and applied. Numerous examples from other courses are provided.
Communication skills
Active participation in class and the practice of formalization serve to stimulate students' acquisition of mathematical language and to appropriately convey the knowledge and skills acquired.
Learning skills
The student will be able to deepen their personal study of the topics covered, using what they have learned as a foundation.
|
| 10631195 | MATHEMATICAL ANALYSIS [MATH-03/A] [ITA] | 1st | 1st | 12 |
Educational objectives Educational goals
The course aims to provide a basic knowledge of Calculus and Mathematical Analysis techniques, covering fundamental concepts such as functions, limits, derivatives, integrals, numerical and power series, Taylor expansions, and ordinary differential equations. Particular attention is devoted both to theoretical tools and to their main applications, such as the study of function graphs, maxima and minima problems, and the solution of elementary differential equations.
By the end of the course, the student will be able to compute limits of functions and sequences, apply differentiation rules to the local and global study of functions, use integration methods (integration by parts and substitution) to calculate definite and indefinite integrals, discuss the convergence of numerical series, power series, and Taylor expansions of elementary functions, as well as solve first-order ordinary differential equations (separable and linear) and second-order linear differential equations with constant coefficients, both homogeneous and non-homogeneous.
Knowledge and understanding
The student will acquire the basic notions and fundamental results of Calculus and Mathematical Analysis, learning essential techniques for computing derivatives, integrals, and limits, for studying the graphs of real functions of one variable, for analyzing the convergence of sequences and series, and for solving simple ordinary differential equations.
Applying knowledge and understanding
Lectures and exercises will enable the student to tackle and solve practical problems, progressively consolidating the acquired skills.
Making judgements
The student will develop the ability to interpret and analyze concrete situations that can be described mathematically, to use graphs as analytical tools, and to autonomously apply the acquired methods to new problems encountered during studies or in professional contexts.
Communication skills
The student will be able to express themselves correctly using mathematical language, understand scientific texts of moderate complexity, and summarize their main concepts.
Learning skills
The knowledge acquired will provide the foundation for further studies, both individually and within more advanced courses, fostering autonomy in exploring additional aspects of Mathematical Analysis.
|
| MATHEMATICAL ANALYSIS I MODULE [MATH-03/A] [ITA] | 1st | 1st | 6 |
Educational objectives Educational goals
The course aims to provide a basic knowledge of Calculus and Mathematical Analysis techniques, covering fundamental concepts such as functions, limits, derivatives, integrals, numerical and power series, Taylor expansions, and ordinary differential equations. Particular attention is devoted both to theoretical tools and to their main applications, such as the study of function graphs, maxima and minima problems, and the solution of elementary differential equations.
By the end of the course, the student will be able to compute limits of functions and sequences, apply differentiation rules to the local and global study of functions, use integration methods (integration by parts and substitution) to calculate definite and indefinite integrals, discuss the convergence of numerical series, power series, and Taylor expansions of elementary functions, as well as solve first-order ordinary differential equations (separable and linear) and second-order linear differential equations with constant coefficients, both homogeneous and non-homogeneous.
Knowledge and understanding
The student will acquire the basic notions and fundamental results of Calculus and Mathematical Analysis, learning essential techniques for computing derivatives, integrals, and limits, for studying the graphs of real functions of one variable, for analyzing the convergence of sequences and series, and for solving simple ordinary differential equations.
Applying knowledge and understanding
Lectures and exercises will enable the student to tackle and solve practical problems, progressively consolidating the acquired skills.
Making judgements
The student will develop the ability to interpret and analyze concrete situations that can be described mathematically, to use graphs as analytical tools, and to autonomously apply the acquired methods to new problems encountered during studies or in professional contexts.
Communication skills
The student will be able to express themselves correctly using mathematical language, understand scientific texts of moderate complexity, and summarize their main concepts.
Learning skills
The knowledge acquired will provide the foundation for further studies, both individually and within more advanced courses, fostering autonomy in exploring additional aspects of Mathematical Analysis.
|
| MATHEMATICAL ANALYSIS II MODULE [MATH-03/A] [ITA] | 1st | 1st | 6 |
Educational objectives Educational goals
The course aims to provide a basic knowledge of Calculus and Mathematical Analysis techniques, covering fundamental concepts such as functions, limits, derivatives, integrals, numerical and power series, Taylor expansions, and ordinary differential equations. Particular attention is devoted both to theoretical tools and to their main applications, such as the study of function graphs, maxima and minima problems, and the solution of elementary differential equations.
By the end of the course, the student will be able to compute limits of functions and sequences, apply differentiation rules to the local and global study of functions, use integration methods (integration by parts and substitution) to calculate definite and indefinite integrals, discuss the convergence of numerical series, power series, and Taylor expansions of elementary functions, as well as solve first-order ordinary differential equations (separable and linear) and second-order linear differential equations with constant coefficients, both homogeneous and non-homogeneous.
Knowledge and understanding
The student will acquire the basic notions and fundamental results of Calculus and Mathematical Analysis, learning essential techniques for computing derivatives, integrals, and limits, for studying the graphs of real functions of one variable, for analyzing the convergence of sequences and series, and for solving simple ordinary differential equations.
Applying knowledge and understanding
Lectures and exercises will enable the student to tackle and solve practical problems, progressively consolidating the acquired skills.
Making judgements
The student will develop the ability to interpret and analyze concrete situations that can be described mathematically, to use graphs as analytical tools, and to autonomously apply the acquired methods to new problems encountered during studies or in professional contexts.
Communication skills
The student will be able to express themselves correctly using mathematical language, understand scientific texts of moderate complexity, and summarize their main concepts.
Learning skills
The knowledge acquired will provide the foundation for further studies, both individually and within more advanced courses, fostering autonomy in exploring additional aspects of Mathematical Analysis.
|
| 10629267 | Object-Oriented Programming [INFO-01/A] [ITA] | 1st | 2nd | 9 |
Educational objectives Educational goals:
Learning object-oriented programming concepts through the Java programming language.
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.
Apply 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.
Making judgements:
Ability to identify correct/effective and incorrect/ineffective instructions, constructs or patterns in Java.
Communication skills:
Ability to illustrate projects.
Learning skills:
Ability to learn and apply new programming techniques, starting from those learned during the course.
|
| 10629603 | Linear Algebra and geometry [MATH-02/A] [ITA] | 1st | 2nd | 6 |
Educational objectives Educational goals:
Acquire basic knowledge of systems of linear equations, vector spaces, linear mappings, affine spaces, and Euclidean spaces.
Knowledge and understanding:
By the end of the course, students will have acquired the basic concepts and results related to systems of linear equations, matrix calculus, the theory of vector spaces and linear mappings between them, affine spaces, Euclidean vector spaces, and affine Euclidean spaces.
Applying knowledge and understanding:
By the end of the course, students will be able to solve systems of linear equations, recognize mathematical problems modeled by linear mappings between vector spaces, and apply this knowledge to their solution. They will be able to work with matrices and determine the solvability of a linear system and the invertibility of a linear map by means of rank considerations and by computing the determinant of the associated matrices. They will be able to compute the eigenvalues of a linear endomorphism and determine its eigenspace decomposition. They will also be able to solve problems involving Euclidean inner products and affine and affine Euclidean spaces.
Making judgments:
Students will develop the ability to analyze the relationships between the topics covered and other areas of algebra (group theory, semigroup theory, discrete mathematics) and multivariable calculus.
Communication skills:
Ability to present the course content in the oral exam and in any theoretical questions included in the written exam.
Learning skills:
The knowledge acquired will enable students to study, independently or within a Master's degree program, more advanced topics in the theory of linear operators beyond finite-dimensional cases, the theory of families of vector spaces (vector bundles), eigenspace decompositions related to commutative algebras of endomorphisms, and Riemannian geometry.
|
| 10631195 | MATHEMATICAL ANALYSIS [MATH-03/A] [ITA] | 1st | 2nd | 12 |
Educational objectives Educational goals
The course aims to provide a basic knowledge of Calculus and Mathematical Analysis techniques, covering fundamental concepts such as functions, limits, derivatives, integrals, numerical and power series, Taylor expansions, and ordinary differential equations. Particular attention is devoted both to theoretical tools and to their main applications, such as the study of function graphs, maxima and minima problems, and the solution of elementary differential equations.
By the end of the course, the student will be able to compute limits of functions and sequences, apply differentiation rules to the local and global study of functions, use integration methods (integration by parts and substitution) to calculate definite and indefinite integrals, discuss the convergence of numerical series, power series, and Taylor expansions of elementary functions, as well as solve first-order ordinary differential equations (separable and linear) and second-order linear differential equations with constant coefficients, both homogeneous and non-homogeneous.
Knowledge and understanding
The student will acquire the basic notions and fundamental results of Calculus and Mathematical Analysis, learning essential techniques for computing derivatives, integrals, and limits, for studying the graphs of real functions of one variable, for analyzing the convergence of sequences and series, and for solving simple ordinary differential equations.
Applying knowledge and understanding
Lectures and exercises will enable the student to tackle and solve practical problems, progressively consolidating the acquired skills.
Making judgements
The student will develop the ability to interpret and analyze concrete situations that can be described mathematically, to use graphs as analytical tools, and to autonomously apply the acquired methods to new problems encountered during studies or in professional contexts.
Communication skills
The student will be able to express themselves correctly using mathematical language, understand scientific texts of moderate complexity, and summarize their main concepts.
Learning skills
The knowledge acquired will provide the foundation for further studies, both individually and within more advanced courses, fostering autonomy in exploring additional aspects of Mathematical Analysis.
|
| MATHEMATICAL ANALYSIS I MODULE [MATH-03/A] [ITA] | 1st | 2nd | 6 |
Educational objectives Educational goals
The course aims to provide a basic knowledge of Calculus and Mathematical Analysis techniques, covering fundamental concepts such as functions, limits, derivatives, integrals, numerical and power series, Taylor expansions, and ordinary differential equations. Particular attention is devoted both to theoretical tools and to their main applications, such as the study of function graphs, maxima and minima problems, and the solution of elementary differential equations.
By the end of the course, the student will be able to compute limits of functions and sequences, apply differentiation rules to the local and global study of functions, use integration methods (integration by parts and substitution) to calculate definite and indefinite integrals, discuss the convergence of numerical series, power series, and Taylor expansions of elementary functions, as well as solve first-order ordinary differential equations (separable and linear) and second-order linear differential equations with constant coefficients, both homogeneous and non-homogeneous.
Knowledge and understanding
The student will acquire the basic notions and fundamental results of Calculus and Mathematical Analysis, learning essential techniques for computing derivatives, integrals, and limits, for studying the graphs of real functions of one variable, for analyzing the convergence of sequences and series, and for solving simple ordinary differential equations.
Applying knowledge and understanding
Lectures and exercises will enable the student to tackle and solve practical problems, progressively consolidating the acquired skills.
Making judgements
The student will develop the ability to interpret and analyze concrete situations that can be described mathematically, to use graphs as analytical tools, and to autonomously apply the acquired methods to new problems encountered during studies or in professional contexts.
Communication skills
The student will be able to express themselves correctly using mathematical language, understand scientific texts of moderate complexity, and summarize their main concepts.
Learning skills
The knowledge acquired will provide the foundation for further studies, both individually and within more advanced courses, fostering autonomy in exploring additional aspects of Mathematical Analysis.
|
| MATHEMATICAL ANALYSIS II MODULE [MATH-03/A] [ITA] | 1st | 2nd | 6 |
Educational objectives Educational goals
The course aims to provide a basic knowledge of Calculus and Mathematical Analysis techniques, covering fundamental concepts such as functions, limits, derivatives, integrals, numerical and power series, Taylor expansions, and ordinary differential equations. Particular attention is devoted both to theoretical tools and to their main applications, such as the study of function graphs, maxima and minima problems, and the solution of elementary differential equations.
By the end of the course, the student will be able to compute limits of functions and sequences, apply differentiation rules to the local and global study of functions, use integration methods (integration by parts and substitution) to calculate definite and indefinite integrals, discuss the convergence of numerical series, power series, and Taylor expansions of elementary functions, as well as solve first-order ordinary differential equations (separable and linear) and second-order linear differential equations with constant coefficients, both homogeneous and non-homogeneous.
Knowledge and understanding
The student will acquire the basic notions and fundamental results of Calculus and Mathematical Analysis, learning essential techniques for computing derivatives, integrals, and limits, for studying the graphs of real functions of one variable, for analyzing the convergence of sequences and series, and for solving simple ordinary differential equations.
Applying knowledge and understanding
Lectures and exercises will enable the student to tackle and solve practical problems, progressively consolidating the acquired skills.
Making judgements
The student will develop the ability to interpret and analyze concrete situations that can be described mathematically, to use graphs as analytical tools, and to autonomously apply the acquired methods to new problems encountered during studies or in professional contexts.
Communication skills
The student will be able to express themselves correctly using mathematical language, understand scientific texts of moderate complexity, and summarize their main concepts.
Learning skills
The knowledge acquired will provide the foundation for further studies, both individually and within more advanced courses, fostering autonomy in exploring additional aspects of Mathematical Analysis.
|
| 10629143 | Algorithms 1 [INFO-01/A] [ITA] | 1st | 2nd | 6 |
Educational objectives Educational goals:
This course introduces students to basic methods for algorithm design and analysis. They will study various well-known algorithms that solve basic problems such as sorting or searching, together with the simplest tools to analyze them from an efficiency point of view.
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, in particular 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.
Making judgments:
Students 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.
The exercises done in class by the teacher and those suggested for homework will refine these skills.
Communication skills:
Students will acquire the ability to present their knowledge in a clear and organized way, an ability that will be verified both 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.
The oral exam, which is an integral part of the final exam, aims to improve these skills.
Learning skills:
The knowledge acquired will allow the student to tackle the study of algorithmic techniques and more advanced data structures.
|
| Optional group: New group | | | |
| 10629075 | Computer Architecture 1 [INFO-01/A] [ITA] | 2nd | 1st | 6 |
Educational objectives Educational Goals
The course provides fundamental knowledge on information representation, combinational and sequential digital circuit design, and basic models of computation at the logic level. In particular, the course introduces number systems, numerical representations, Boolean algebra, synthesis and analysis of logic networks, and the principles of sequential system design and basic functional units.
Knowledge and Understanding
Students will acquire basic and advanced knowledge of information representation systems, binary arithmetic, and main numerical coding schemes. They will understand the fundamentals of Boolean algebra, logic functions, and design techniques for combinational and sequential circuits.
Applying Knowledge and Understanding
Students will be able to design, analyze, and simplify combinational and sequential logic circuits. They will apply Boolean function minimization techniques, design logic networks using Karnaugh maps, implement arithmetic circuits, and analyze finite state machines.
Making Judgements
Students will develop the ability to evaluate alternative design solutions for digital circuits, selecting among equivalent implementations based on efficiency, complexity, hardware cost, and performance criteria.
Communication Skills
Students will be able to clearly and rigorously describe problems and solutions in digital design, using appropriate technical terminology and formal representations such as truth tables, Boolean expressions, state diagrams, and circuit schematics.
Learning Skills
Students will develop autonomy in studying digital systems and logic design techniques, gaining the ability to independently deepen advanced topics such as digital architecture and complex sequential systems.
|
| 10628865 | Operating Systems [INFO-01/A] [ITA] | 2nd | 1st | 9 |
Educational objectives Educational goals
The course aims to introduce operating systems as an essential component of every computing system and as a paradigmatic example of the concept of abstraction, a theme that runs throughout the entire Computer Science curriculum. The primary objective is to provide students with a comprehensive understanding of how the process of virtualization of physical resources makes it possible to manage hardware complexity, offering a simplified environment for application software development and ensuring a high level of usability for the end user.
By the end of the course, students will have the methodological foundations to understand and analyze the challenges involved in designing complex software. Specifically, they will acquire competencies in:
- The primary functions of general-purpose operating systems (CPU, memory, and I/O management).
- Abstraction models for mobile devices (tablets/smartphones).
- Analysis of concepts independently of any specific operating system, with examples drawn from real systems (UNIX/Linux, Windows, Mac, Android, iOS).
Knowledge and understanding
Understanding the theoretical principles and architectures of modern operating systems. Knowledge of the mechanisms for CPU and memory virtualization, process management, memory hierarchies, concurrency issues, and access to I/O devices. Gaining an overview of the distinctive features of mobile operating systems.
Applying knowledge and understanding
Being able to apply abstraction concepts to analyze how software interacts with a system's physical resources. Being able to model and solve resource management problems (e.g., scheduling and address translation) in real-world usage scenarios, independently of the specific operating system.
Making judgements
The ability to critically evaluate the trade-offs between different resource management policies (e.g., efficiency vs. fairness in scheduling, or speed vs. fragmentation in memory management) in different technological contexts.
Communication skills
Being able to clearly and rigorously explain the fundamental concepts of operating systems, describing the different levels of abstraction that mediate the relationship between hardware and software.
Learning skills
Acquiring a solid conceptual foundation that enables independent study of emerging technologies or more complex systems (such as distributed systems and cloud computing).
--
|
| 10627280 | Algorithms 2 [INFO-01/A] [ITA] | 2nd | 1st | 6 |
Educational objectives General objectives
This course introduces students to methods for designing and analyzing algorithms. They will study various algorithmic techniques widely applicable, such as greedy technique, divide et impera, 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. Non-elementary data structures will also be covered
Specific objectives
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
Apply 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 judgment skill
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
|
| 10628494 | DATABASES [INFO-01/A] [ITA] | 2nd | 1st | 9 |
Educational objectives
Educational goals:
Expose students to solid methodologies for the design and implementation of databases in Third Normal Form, along with their related applications.
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.
Making judgments:
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 skills:
Students will be able to independently expand their knowledge by consulting technical documentation as needed in the field of database application design.
|
| 10628307 | Computer Architecture 2 [INFO-01/A] [ITA] | 2nd | 2nd | 6 |
| 10628255 | [MATH-03/B] [ITA] | 2nd | 2nd | 9 |
| 10629056 | Fundamentals of Internet [INFO-01/A] [ITA] | 2nd | 2nd | 9 |
Educational objectives Educational goals
The course aims to provide students with fundamental knowledge of the operation of the Internet and computer networks, with particular emphasis on the TCP/IP protocol stack. The course introduces the main protocols and mechanisms that enable host-to-host communication, packet forwarding, reliability and congestion control, name resolution, and medium access in local and wireless networks. Modern transport protocols, including QUIC, will also be presented, highlighting their role in the evolution of the Internet architecture. The course also includes practical activities aimed at configuring, observing, and analyzing the behavior of networks and protocols.
Knowledge and understanding
By the end of the course, students will have acquired solid knowledge of the principles underlying computer networks and the Internet architecture. They will be able to understand the role of the different layers of the TCP/IP stack, from application-layer protocols to transport, network, and medium access mechanisms. Students will understand the operation of fundamental protocols such as IP, TCP, UDP, and DNS, as well as the main routing mechanisms and issues related to reliability, congestion control, fragmentation, addressing, and channel sharing. In addition, they will acquire basic knowledge of wireless networks and the CSMA/CA protocol, and will understand the motivations and main characteristics of modern transport protocols such as QUIC.
Applying knowledge and understanding
Students will be able to analyze the operation of a TCP/IP network, identifying the role of the different protocols involved in end-to-end communication. They will be able to interpret communication scenarios, compute fundamental quantities such as delay, throughput, channel utilization, and transmission window sizes, and evaluate the behavior of transport and network protocols under congestion, losses, or bandwidth constraints. They will also be able to configure simple network scenarios, observe packet exchanges, and interpret the results obtained through analysis tools and practical laboratory activities.
Making judgements
The course aims to develop students’ ability to critically evaluate the behavior of network protocols in different application contexts. Students will be able to discuss the advantages and limitations of the main architectural solutions adopted in the Internet, considering aspects such as scalability, reliability, efficiency, delay, security, mobility, and interoperability. They will also be able to compare traditional and modern protocols, such as TCP and QUIC, understanding the design motivations behind their evolution and evaluating the impact of different protocol choices on overall network performance.
Communication skills
Students will acquire the ability to clearly and rigorously describe the operation of the main Internet protocols and the mechanisms that regulate communication between devices. They will be able to use appropriate technical language to explain concepts such as encapsulation, addressing, routing, flow control, congestion control, name resolution, and medium access. The course also promotes the ability to present and discuss results derived from exercises, protocol analysis, and practical activities.
Learning skills
By the end of the course, students will have developed the skills needed to independently explore advanced topics in computer networks and the evolution of the Internet. They will be able to read technical documentation, understand protocol specifications, interpret experimental results, and update their knowledge with respect to the development of new protocols, architectures, and network technologies.
|
| 10629527 | Advanced Programming [INFO-01/A] [ITA] | 2nd | 2nd | 9 |
Educational objectives Educational goals:
The course focuses on the concepts, structure, and mechanisms of operating systems and some advanced programming languages. It will cover fundamental features present in even the most traditional systems, as well as peculiarities of modern systems that arise as a result of recurring technological evolution. The two most widely used system programming languages will be introduced: C and Rust. Finally, the programming interface between software developers and the kernel for accessing Linux operating system resources will be covered, using C and Rust.
Knowledge and understanding:
A thorough understanding of how operating systems support the execution of user programs and the management of a computer's hardware peripherals. Fundamental methods and techniques for representing processes in memory and efficiently managing multiprogramming (multiple processes running simultaneously on a system with limited resources). Knowledge of the internals of the Linux operating system. Knowledge of the Bash shell. Fundamentals of the C and Rust languages. Knowledge of the main Linux system calls.
Applying knowledge and understanding:
Design user- and system-level programs efficiently and securely. Ability to create Bash scripts that solve practical problems. Ability to write C and Rust programs that leverage Linux system calls to optimize resource usage.
Making judgments:
Ability to predict the resource usage of a program, detect potential deadlocks in a multiprogram system, ensure mutual exclusion between processes, and ensure protected access to sensitive memory areas or resources. Ability to evaluate the most appropriate solution to achieve a given result, using individual shell commands, a Bash script, or a C or Rust program based on Linux system calls.
Communication skills:
Ability to clearly and precisely communicate the characteristics of operating systems and their software/hardware support mechanisms. Ability to communicate and document Bash scripts and C and Rust programs based on Linux system calls.
Learning skills:
Ability to apply acquired knowledge to the design of systems and user programs. Be able to apply this knowledge to learning the properties of more complex systems, such as distributed and cloud systems. Be able to apply concepts learned in advanced courses for business systems engineers, or in any advanced courses that require interaction with Linux, such as systems programming, cloud computing, distributed systems, and cybersecurity.
|
| 10627559 | AUTOMATA COMPUTABILITY AND COMPLEXITY [INFO-01/A] [ITA] | 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.
Criticaland 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.
|
| 10628857 | Software Engineering [INFO-01/A] [ITA] | 3rd | 1st | 9 |
Educational objectives Learning Objectives
General Objectives:
The course illustrates the fundamentals of software process management methodologies and tools. Special attention is paid to object-oriented analysis and design methodologies, and to their management and documentation using UML.
Specific Objectives:
Introduction to software engineering approaches and the software life cycle, with an in-depth look at the activities of specifying, analyzing, designing, and testing software systems, and process management techniques, placing particular emphasis on architectural design, quality and risk management, and cost analysis.
Knowledge and Understanding:
By the end of the course, students will have acquired knowledge of the main software life cycle models, effort sizing metrics, techniques for describing the various components of a software project, and the impact of both functional and non-functional requirements on the definition of the architecture. Students will have also acquired knowledge of the use of various UML language components.
Applying knowledge and understanding:
By the end of the course, students will be able to work in teams on the analysis, design, documentation, and management of medium-sized software projects. They will have learned to produce UML-based documentation using the main types of diagrams: use case, class, interaction, state, and activity diagrams, including through the use of professional software environments geared toward the systematic development of software projects. Finally, they will be able to produce an effort evaluation based on Function Points and Use Case Points.
Judgment:
Students will develop the analytical skills needed to evaluate various alternatives during the software development process, with particular emphasis on assessing architectural choices and project risks.
Communication:
Students will learn to document their choices, including through the use of documentation generation tools, particularly using diagrammatic notations.
Further Learning Skills:
Understanding the formal rigor underlying the discipline of software engineering will allow students to quickly gain familiarity with techniques based on general principles, beyond those covered in the course.
|
| [N/D] [ITA] | 3rd | 1st | 6 |
Educational objectives As provided for by the University Teaching Regulations, students are guaranteed the freedom to choose from all courses offered by the University, provided that they are consistent with their educational program. All courses related to the basic and core disciplines are generally consistent with the educational program of the Bachelor’s Degree in Computer Science.
|
| [N/D] [ITA] | 3rd | 2nd | 6 |
Educational objectives As provided for by the University Teaching Regulations, students are guaranteed the freedom to choose from all courses offered by the University, provided that they are consistent with their educational program. All courses related to the basic and core disciplines are generally consistent with the educational program of the Bachelor’s Degree in Computer Science.
|
| AAF1053 | Internship [N/D] [ITA] | 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.
|
| AAF1001 | FINAL EXAM [N/D] [ITA] | 3rd | 2nd | 3 |
Educational objectives The final exam consists of the presentation and discussion of the work carried out during the internship before a committee. The student presents the results of the experience gained, illustrating the project completed and the activities performed.
The committee evaluates the quality of the work carried out, the ability to summarize and present it, as well as the awareness developed in relation to the educational path. Based on the presentation and discussion, a score is assigned that contributes to the final degree grade.
The final exam represents the concluding stage of the bachelor’s degree program and confirms the achievement of the qualification. It takes place during the graduation session and in the specific graduation board meeting scheduled by the study program.
|
| Optional group: | | | |
| Optional group: New group | | | |