| 101226 | Differential Calculus [MAT/05] [ITA] | 1st | 1st | 6 |
Educational objectives GENERAL OBJECTIVES:
to obtain a general knowledge of the basic techniques of Differential Calculus and of the standard applications to problems of maxima-minima of functions of a real variable and to the study of their graph.
SPECIFIC OBJECTIVES:
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 judgment skills:
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 skills:
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.
dge 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.
|
| 1015883 | Introduction to Computer Programming [INF/01] [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
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.
|
| 1020420 | Mathematical Methods in Computer Science [MAT/01] [ITA] | 1st | 1st | 6 |
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.
|
| 1015880 | Digital Systems [INF/01] [ITA] | 1st | 1st | 6 |
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.
Critiquing and judgmental skills:
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 skills:
Understanding the differences and advantages of the different design techniques
|
| 1015881 | Computer Architecture [INF/01] [ITA] | 1st | 2nd | 6 |
Educational objectives General objectives:
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 objectives:
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 microprocessor MIPS, as implementation of the general ideas that are part of the objectives of the course. Furthermore, the student will acquire knowledge on how the assembly programs are structured, including data structures, standard programming paradigms and recursion.
Application of 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.
Autonomy of judgment:
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.
Ability of learning:
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.
|
| 97796 | Integral Calculus [MAT/05] [ITA] | 1st | 2nd | 6 |
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 calculusand 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.
|
| 1015885 | Introduction to algorithms [INF/01] [ITA] | 1st | 2nd | 6 |
Educational objectives General goals
Introduction to basic algorithm design and analysis, iterative and recursive algorithms, and the computation of their computational efficiency.
Specific goals:
Knowledge and understanding:
At the end of the course students will know the basic methodologies for the design and analysis of iterative and recursive algorithms, elementary data structures, some ways to explore such structures, the main sorting algorithms and the most basic implementations of the dictionaries.
Applying knowledge and understanding:
At the end of the course students will have become familiar with the main basic data structures, in particular those implementing dictionaries. They will be able to explain the algorithms and analyze their time complexity, highlighting how their performances depend on the used data structure. They will be able to design new data structures and related algorithms, on the basis of the existing ones; they will be able to explain the main sorting algorithms, illustrating the underlying design strategies and their time complexity analysis; they will be able to compare the asymptotic behavior of the execution times of the studied algorithms, to design recursive solutions to problems and to analyze their asymptotic time complexity.
Critiquing and judgmental skills:
Students will be able to analyze the quality of an algorithm and related data structures, both from the effective resolution of the problem and from the time complexity point of views.
Communication skills:
Students will acquire the ability to expose their knowledge in a clear and organized way, which will be verified both through the written tests and during the
oral examination. Students will be able to express an algorithmic idea rigorously at high level, in pseudocode.
Learning ability:
The acquired knowledge will allow students to face the study of other algorithmic methodologies and of more advanced data structures within a master's degree course.
|
| 1015884 | Object-Oriented Programming [INF/01] [ITA] | 1st | 2nd | 9 |
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.
|
| AAF1101 | [N/D] [ENG] | 1st | 2nd | 3 |
Educational objectives The teaching of the English language aims at enabling students to correctly read scientific literature in English as well as technical documentation, and to be able to support conversations in English on technical aspects.
|
| 1015886 | Algebra [MAT/02] [ITA] | 2nd | 1st | 9 |
Educational objectives General goals:
To provide basic knowledge on topics of group theory and linear algebra which are commonly used in computer science.
Specific goals:
Basic algebra concepts
Introduction to algebraic structures
Development of the language of linear algebra: vector spaces and their homomorphisms; vector spaces, numbers, and matrix algebra; endomorphisms, determinants and diagonalization; applications.
Knowledge and understanding:
A successful student will be able to make computations in small groups of easy structure and understand the meaning and use of matrices in the study of linear phenomena.
Application of knowledge and understanding:
Use of diagonalization of linear operators to get geometrical interpretation of a linear problem and gather relevant information. Use of the group concept in the study of finite combinatorial problems.
Critiquing and judgmental skills:
Students will be able to choose the appropriate algebraic setting for the description of a problem.
Communication skills:
Students will learn the linear algebra and group language, along with basics of complexity theory.
Learning ability:
Understanding the language of linear algebra and groups will allow students to learn topics that employ them.
|
| 1015887 | Databases [INF/01] [ITA] | 2nd | 1st | 12 |
Educational objectives General goals:
To be able to design/evaluate the properties, storage structure and protocols of a database management system.
To introduce students to scalable methodologies for the design and development of database software applications.
Specific goals:
Knowledge of the properties of a database schema and of a decomposition. Ability to retrieve information in a database. Ability to evaluate the cost of data access operations. Knowledge of protocols for concurrency control.
To introduce students to formalised and scalable methodologies for the conceptual analysis and design of database applications, and to standard technologies for the development of relational databases.
Knowledge and understanding:
Fundamentals of relational database design and querying. Main data structures for storage of data on secondary memory. Main techniques for concurrency control.
Students will acquire fundamental methodological skills in the design of medium-large database applications (in particular for what concerns: a) requirements elicitation; b) conceptual analysis; c) design of the relational database and main use-cases), and their development (using relational DBMSs and the SQL language).
Applying knowledge and understanding:
To design relational schemes with “good properties”. To formulate queries in relational algebra. To evaluate costs of basic operations on a file with a given physical organization.
Students will be able to proficiently apply the acquired skills in the actual design of medium-large database applications.
Critical and judgmental skills:
To be able to assess the properties of a relational schema and of a decomposition. To be able to choose an appropriate storage structure for the information in a schema.
Students will be able to take autonomous and rational decisions during the various phases of the design process of an actual database application.
Communication skills:
To be able to communicate/share che qualitative/quantitative characteristics of the relational structure of a database.
Students will be able to interact proficiently with final customers (for what concerns requirements elicitation) and with other designers (for what concerns the design process of medium-large software systems).
Learning skills:
To be able to use the learned concepts in the following module of the course and in a possible advanced course on Databases.
Students will be able to extend their skills in the subjects of this course, by the autonomous reading of technical documentation concerning the design of database applications.
|
| Module II [INF/01] [ITA] | 2nd | 1st | 6 |
Educational objectives General objectives:
Expose students to solid methodologies for designing and building database applications.
Specific objectives:
Expose students to formal and scalable methodologies for conceptual analysis and design of database applications and to standard technologies for their implementation.
Knowledge and understanding:
Students will acquire fundamental methodological knowledge for the design of applications for non-trivial databases (in particular for the phases of: a) collection of requirements; b) conceptual analysis of data and functionalities, c) design of the database and functionalities) and for their implementation (use of DBMS and standard languages for defining, querying, and manipulating data).
Apply knowledge and understanding:
Students will be able to effectively apply the knowledge indicated in the previous point in real projects of applications for non-trivial databases.
Critical and judgment skills:
Students can independently make rational decisions at all stages of the database application design process.
Communication skills:
Students will be able to interact profitably with clients (as regards the collection of requirements) and with other analyzes and designers (as regards the analysis and design of non-trivial software systems).
Learning ability:
Students will be able to independently expand their knowledge by consulting, as necessary, technical manuals in database application design.
|
| Module I [INF/01] [ITA] | 2nd | 1st | 6 |
Educational objectives General goals:
To be able to design/evaluate the properties, storage structure and protocols of a database management system.
To introduce students to scalable methodologies for the design and development of database software applications.
Specific goals:
Knowledge of the properties of a database schema and of a decomposition. Ability to retrieve information in a database. Ability to evaluate the cost of data access operations. Knowledge of protocols for concurrency control.
To introduce students to formalised and scalable methodologies for the conceptual analysis and design of database applications, and to standard technologies for the development of relational databases.
Knowledge and understanding:
Fundamentals of relational database design and querying. Main data structures for storage of data on secondary memory. Main techniques for concurrency control.
Students will acquire fundamental methodological skills in the design of medium-large database applications (in particular for what concerns: a) requirements elicitation; b) conceptual analysis; c) design of the relational database and main use-cases), and their development (using relational DBMSs and the SQL language).
Applying knowledge and understanding:
To design relational schemes with “good properties”. To formulate queries in relational algebra. To evaluate costs of basic operations on a file with a given physical organization.
Students will be able to proficiently apply the acquired skills in the actual design of medium-large database applications.
Critical and judgmental skills:
To be able to assess the properties of a relational schema and of a decomposition. To be able to choose an appropriate storage structure for the information in a schema.
Students will be able to take autonomous and rational decisions during the various phases of the design process of an actual database application.
Communication skills:
To be able to communicate/share che qualitative/quantitative characteristics of the relational structure of a database.
Students will be able to interact proficiently with final customers (for what concerns requirements elicitation) and with other designers (for what concerns the design process of medium-large software systems).
Learning skills:
To be able to use the learned concepts in the following module of the course and in a possible advanced course on Databases.
Students will be able to extend their skills in the subjects of this course, by the autonomous reading of technical documentation concerning the design of database applications.
|
| 1020421 | Probability [MAT/06] [ITA] | 2nd | 1st | 9 |
Educational objectives General goals: to acquire knowledge and ability to apply basic topics of probability and statistics.
Specific goals: Axioms and elementary properties of probabilities. Random variables. Continuous and discrete distributions. Expected values. Introduction to estimation theory and hypothesis testing.
Knowledge and understanding:
At the end of the course the student will have acquired the basic notions and results related to probability theory on finite and countable spaces, to the concept of random discrete vectors and to the concept of continuous random variable.
Applying knowledge and understanding:
At the end of the course the student will be able to solve simple problems in discrete probability, problems concerning discrete random vectors and random numbers represented by continuous random variables. The student will also be able to understand the meaning and implications of independence and conditioning (in the context of discrete models), to understand the meaning of some fundamental limit theorems, such as the law of large numbers.
Critiquing and judgmental skills:
Students will have the bases to analyse and to build simple probabilistic models for physics, biology and technology, simulate discrete probability distributions, as well as the Gaussian distribution and understand the use of some elementary tools in statistics, like inference, sampling and simulation.
Communication skills:
Ability to expose the contents of the course in the oral part of the test and in any theoretical questions present in the written test.
Learning ability:
The acquired knowledge will allow a study, individual or given in a course related to more specialized aspects of probability theory.
|
| 1020422 | Operating Systems [INF/01] [ITA] | 2nd | 1st | 12 |
Educational objectives General goals:
To unfold the concepts, structure, and mechanisms of modern operating systems.Fundamental characteristics that apply consistently throughout systems, related to newer features raising from the recurrent development of technology and user necessities.
To learn system programming, in order to be able to access computer resources managed by a Linux operating system.
Specific goals:
The class will cover the characteristics and concepts of modern operating systems, with a particular reference to Unix and Linux. We will start off with a description of the evolution of the operating systems in time. Then, we will continue with fundamental concepts like processes, deadlock detection, mitigation, and prevention, concurrency and mutual exclusion, memory, processor, and I/O management, file systems, and security.
To know the basic concepts (processes, regular expressions, file system) and the most important commands of the Linux operating system. To be able to write Bash scripts. To be able to write C programs involving Linux system calls.
Knowledge and understanding:
Deep understanding of how an operating system supports the execution of user programs and handles hardware peripherals of a computer. Techniques and fundamental methodologies to represent processes in main and secondary memory and to handle multiprogramming— multiple processes executed simultaneously in a systems with limited resources.
To know how the Linux operating system works. To know how the Bash shell works. Fundamentals of C programming. To know the main Linux system calls.
Applying knowledge and understanding:
Being able to design user and system level programs in an efficient and secure way.
To write Bash scripts in order to solve practical problems. To write C programs able to exploit Linux system calls in order to optimize resources usage.
Critical and judgmental skills:
Being able to evaluate and foresee how programs will require and use system resources, uncover possible deadlock and livelock conditions in a multiprogramming system, guarantee the mutual exclusion among processes and protected access of sensitive memory and resources.
To be able to evaluate the most appropriate way to obtain a given result, by either using single shell commands, or a Bash script, or a C program based on Linux system calls.
Communication skills:
Know how to communicate clearly and in a precise way the characteristics and support mechanisms provided by the operating systems.
To be able to communicate/document Bash scripts and C programs using Linux system calls.
Learning capability:
Being able to exploit the knowledge acquired in order to design system modules, user and system level programs in the second module of the course. Leveraging this knowledge to better understand more complex systems like distributed and cloud ones.
To be able to use the concepts learnt in advanced courses of operating system management, or in a possible advanced course requiring interaction with Linux, e.g.: system programming, cloud computing, distributed systems, cybersecurity
|
| Module I [INF/01] [ITA] | 2nd | 1st | 6 |
Educational objectives General goals:
To unfold the concepts, structure, and mechanisms of modern operating systems.Fundamental characteristics that apply consistently throughout systems, related to newer features raising from the recurrent development of technology and user necessities.
To learn system programming, in order to be able to access computer resources managed by a Linux operating system.
Specific goals:
The class will cover the characteristics and concepts of modern operating systems, with a particular reference to Unix and Linux. We will start off with a description of the evolution of the operating systems in time. Then, we will continue with fundamental concepts like processes, deadlock detection, mitigation, and prevention, concurrency and mutual exclusion, memory, processor, and I/O management, file systems, and security.
To know the basic concepts (processes, regular expressions, file system) and the most important commands of the Linux operating system. To be able to write Bash scripts. To be able to write C programs involving Linux system calls.
Knowledge and understanding:
Deep understanding of how an operating system supports the execution of user programs and handles hardware peripherals of a computer. Techniques and fundamental methodologies to represent processes in main and secondary memory and to handle multiprogramming— multiple processes executed simultaneously in a systems with limited resources.
To know how the Linux operating system works. To know how the Bash shell works. Fundamentals of C programming. To know the main Linux system calls.
Applying knowledge and understanding:
Being able to design user and system level programs in an efficient and secure way.
To write Bash scripts in order to solve practical problems. To write C programs able to exploit Linux system calls in order to optimize resources usage.
Critical and judgmental skills:
Being able to evaluate and foresee how programs will require and use system resources, uncover possible deadlock and livelock conditions in a multiprogramming system, guarantee the mutual exclusion among processes and protected access of sensitive memory and resources.
To be able to evaluate the most appropriate way to obtain a given result, by either using single shell commands, or a Bash script, or a C program based on Linux system calls.
Communication skills:
Know how to communicate clearly and in a precise way the characteristics and support mechanisms provided by the operating systems.
To be able to communicate/document Bash scripts and C programs using Linux system calls.
Learning capability:
Being able to exploit the knowledge acquired in order to design system modules, user and system level programs in the second module of the course. Leveraging this knowledge to better understand more complex systems like distributed and cloud ones.
To be able to use the concepts learnt in advanced courses of operating system management, or in a possible advanced course requiring interaction with Linux, e.g.: system programming, cloud computing, distributed systems, cybersecurity
|
| Module II [INF/01] [ITA] | 2nd | 1st | 6 |
Educational objectives General goals:
To unfold the concepts, structure, and mechanisms of modern operating systems.Fundamental characteristics that apply consistently throughout systems, related to newer features raising from the recurrent development of technology and user necessities.
To learn system programming, in order to be able to access computer resources managed by a Linux operating system.
Specific goals:
The class will cover the characteristics and concepts of modern operating systems, with a particular reference to Unix and Linux. We will start off with a description of the evolution of the operating systems in time. Then, we will continue with fundamental concepts like processes, deadlock detection, mitigation, and prevention, concurrency and mutual exclusion, memory, processor, and I/O management, file systems, and security.
To know the basic concepts (processes, regular expressions, file system) and the most important commands of the Linux operating system. To be able to write Bash scripts. To be able to write C programs involving Linux system calls.
Knowledge and understanding:
Deep understanding of how an operating system supports the execution of user programs and handles hardware peripherals of a computer. Techniques and fundamental methodologies to represent processes in main and secondary memory and to handle multiprogramming— multiple processes executed simultaneously in a systems with limited resources.
To know how the Linux operating system works. To know how the Bash shell works. Fundamentals of C programming. To know the main Linux system calls.
Applying knowledge and understanding:
Being able to design user and system level programs in an efficient and secure way.
To write Bash scripts in order to solve practical problems. To write C programs able to exploit Linux system calls in order to optimize resources usage.
Critical and judgmental skills:
Being able to evaluate and foresee how programs will require and use system resources, uncover possible deadlock and livelock conditions in a multiprogramming system, guarantee the mutual exclusion among processes and protected access of sensitive memory and resources.
To be able to evaluate the most appropriate way to obtain a given result, by either using single shell commands, or a Bash script, or a C program based on Linux system calls.
Communication skills:
Know how to communicate clearly and in a precise way the characteristics and support mechanisms provided by the operating systems.
To be able to communicate/document Bash scripts and C programs using Linux system calls.
Learning capability:
Being able to exploit the knowledge acquired in order to design system modules, user and system level programs in the second module of the course. Leveraging this knowledge to better understand more complex systems like distributed and cloud ones.
To be able to use the concepts learnt in advanced courses of operating system management, or in a possible advanced course requiring interaction with Linux, e.g.: system programming, cloud computing, distributed systems, cybersecurity
|
| 1015887 | Databases [INF/01] [ITA] | 2nd | 2nd | 12 |
Educational objectives General goals:
To be able to design/evaluate the properties, storage structure and protocols of a database management system.
To introduce students to scalable methodologies for the design and development of database software applications.
Specific goals:
Knowledge of the properties of a database schema and of a decomposition. Ability to retrieve information in a database. Ability to evaluate the cost of data access operations. Knowledge of protocols for concurrency control.
To introduce students to formalised and scalable methodologies for the conceptual analysis and design of database applications, and to standard technologies for the development of relational databases.
Knowledge and understanding:
Fundamentals of relational database design and querying. Main data structures for storage of data on secondary memory. Main techniques for concurrency control.
Students will acquire fundamental methodological skills in the design of medium-large database applications (in particular for what concerns: a) requirements elicitation; b) conceptual analysis; c) design of the relational database and main use-cases), and their development (using relational DBMSs and the SQL language).
Applying knowledge and understanding:
To design relational schemes with “good properties”. To formulate queries in relational algebra. To evaluate costs of basic operations on a file with a given physical organization.
Students will be able to proficiently apply the acquired skills in the actual design of medium-large database applications.
Critical and judgmental skills:
To be able to assess the properties of a relational schema and of a decomposition. To be able to choose an appropriate storage structure for the information in a schema.
Students will be able to take autonomous and rational decisions during the various phases of the design process of an actual database application.
Communication skills:
To be able to communicate/share che qualitative/quantitative characteristics of the relational structure of a database.
Students will be able to interact proficiently with final customers (for what concerns requirements elicitation) and with other designers (for what concerns the design process of medium-large software systems).
Learning skills:
To be able to use the learned concepts in the following module of the course and in a possible advanced course on Databases.
Students will be able to extend their skills in the subjects of this course, by the autonomous reading of technical documentation concerning the design of database applications.
|
| Module II [INF/01] [ITA] | 2nd | 2nd | 6 |
Educational objectives General objectives:
Expose students to solid methodologies for designing and building database applications.
Specific objectives:
Expose students to formal and scalable methodologies for conceptual analysis and design of database applications and to standard technologies for their implementation.
Knowledge and understanding:
Students will acquire fundamental methodological knowledge for the design of applications for non-trivial databases (in particular for the phases of: a) collection of requirements; b) conceptual analysis of data and functionalities, c) design of the database and functionalities) and for their implementation (use of DBMS and standard languages for defining, querying, and manipulating data).
Apply knowledge and understanding:
Students will be able to effectively apply the knowledge indicated in the previous point in real projects of applications for non-trivial databases.
Critical and judgment skills:
Students can independently make rational decisions at all stages of the database application design process.
Communication skills:
Students will be able to interact profitably with clients (as regards the collection of requirements) and with other analyzes and designers (as regards the analysis and design of non-trivial software systems).
Learning ability:
Students will be able to independently expand their knowledge by consulting, as necessary, technical manuals in database application design.
|
| Module I [INF/01] [ITA] | 2nd | 2nd | 6 |
Educational objectives General goals:
To be able to design/evaluate the properties, storage structure and protocols of a database management system.
To introduce students to scalable methodologies for the design and development of database software applications.
Specific goals:
Knowledge of the properties of a database schema and of a decomposition. Ability to retrieve information in a database. Ability to evaluate the cost of data access operations. Knowledge of protocols for concurrency control.
To introduce students to formalised and scalable methodologies for the conceptual analysis and design of database applications, and to standard technologies for the development of relational databases.
Knowledge and understanding:
Fundamentals of relational database design and querying. Main data structures for storage of data on secondary memory. Main techniques for concurrency control.
Students will acquire fundamental methodological skills in the design of medium-large database applications (in particular for what concerns: a) requirements elicitation; b) conceptual analysis; c) design of the relational database and main use-cases), and their development (using relational DBMSs and the SQL language).
Applying knowledge and understanding:
To design relational schemes with “good properties”. To formulate queries in relational algebra. To evaluate costs of basic operations on a file with a given physical organization.
Students will be able to proficiently apply the acquired skills in the actual design of medium-large database applications.
Critical and judgmental skills:
To be able to assess the properties of a relational schema and of a decomposition. To be able to choose an appropriate storage structure for the information in a schema.
Students will be able to take autonomous and rational decisions during the various phases of the design process of an actual database application.
Communication skills:
To be able to communicate/share che qualitative/quantitative characteristics of the relational structure of a database.
Students will be able to interact proficiently with final customers (for what concerns requirements elicitation) and with other designers (for what concerns the design process of medium-large software systems).
Learning skills:
To be able to use the learned concepts in the following module of the course and in a possible advanced course on Databases.
Students will be able to extend their skills in the subjects of this course, by the autonomous reading of technical documentation concerning the design of database applications.
|
| 1015888 | Algorithm Design [INF/01] [ITA] | 2nd | 2nd | 9 |
Educational objectives General objectives:
Acquire basic knowledge on fundamental algorithm design techniques and techniques to analyze the correctness and the complexity of an algorithm.
Specific objectives:
Knowledge and understanding:
At the end of the course, the student knows:
- fundamental algorithm design techniques,
- techniques to analyze the correctness and the efficiency of an algorithm.
Apply knowledge and understanding:
At the end of the course, the student is able to:
- analyze the complexity of a problem using rigorous mathematical tools,
- analyze existing algorithms and data structures,
- design and analyze new algorithms and data structures for simple real-life-problems.
Critical and judgmental skills:
The student, at the end of the course, should be able to autonomously choose which algorithmic technique is best suited for a given problem and to evaluate among several algorithmic solutions for a certain problem which one should prefer.
Communication skills:
The student will acquire the ability to express an algoritmic idea throught the use of a pseudocode.
Learning ability:
The student will acquire the ability to analyze a problem, and to design the necessary data structures and the correct and efficient algorithms for the problem.
|
| 1015889 | Computer Networks [INF/01] [ITA] | 2nd | 2nd | 9 |
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
|
| 1020422 | Operating Systems [INF/01] [ITA] | 2nd | 2nd | 12 |
Educational objectives General goals:
To unfold the concepts, structure, and mechanisms of modern operating systems.Fundamental characteristics that apply consistently throughout systems, related to newer features raising from the recurrent development of technology and user necessities.
To learn system programming, in order to be able to access computer resources managed by a Linux operating system.
Specific goals:
The class will cover the characteristics and concepts of modern operating systems, with a particular reference to Unix and Linux. We will start off with a description of the evolution of the operating systems in time. Then, we will continue with fundamental concepts like processes, deadlock detection, mitigation, and prevention, concurrency and mutual exclusion, memory, processor, and I/O management, file systems, and security.
To know the basic concepts (processes, regular expressions, file system) and the most important commands of the Linux operating system. To be able to write Bash scripts. To be able to write C programs involving Linux system calls.
Knowledge and understanding:
Deep understanding of how an operating system supports the execution of user programs and handles hardware peripherals of a computer. Techniques and fundamental methodologies to represent processes in main and secondary memory and to handle multiprogramming— multiple processes executed simultaneously in a systems with limited resources.
To know how the Linux operating system works. To know how the Bash shell works. Fundamentals of C programming. To know the main Linux system calls.
Applying knowledge and understanding:
Being able to design user and system level programs in an efficient and secure way.
To write Bash scripts in order to solve practical problems. To write C programs able to exploit Linux system calls in order to optimize resources usage.
Critical and judgmental skills:
Being able to evaluate and foresee how programs will require and use system resources, uncover possible deadlock and livelock conditions in a multiprogramming system, guarantee the mutual exclusion among processes and protected access of sensitive memory and resources.
To be able to evaluate the most appropriate way to obtain a given result, by either using single shell commands, or a Bash script, or a C program based on Linux system calls.
Communication skills:
Know how to communicate clearly and in a precise way the characteristics and support mechanisms provided by the operating systems.
To be able to communicate/document Bash scripts and C programs using Linux system calls.
Learning capability:
Being able to exploit the knowledge acquired in order to design system modules, user and system level programs in the second module of the course. Leveraging this knowledge to better understand more complex systems like distributed and cloud ones.
To be able to use the concepts learnt in advanced courses of operating system management, or in a possible advanced course requiring interaction with Linux, e.g.: system programming, cloud computing, distributed systems, cybersecurity
|
| Module I [INF/01] [ITA] | 2nd | 2nd | 6 |
Educational objectives General goals:
To unfold the concepts, structure, and mechanisms of modern operating systems.Fundamental characteristics that apply consistently throughout systems, related to newer features raising from the recurrent development of technology and user necessities.
To learn system programming, in order to be able to access computer resources managed by a Linux operating system.
Specific goals:
The class will cover the characteristics and concepts of modern operating systems, with a particular reference to Unix and Linux. We will start off with a description of the evolution of the operating systems in time. Then, we will continue with fundamental concepts like processes, deadlock detection, mitigation, and prevention, concurrency and mutual exclusion, memory, processor, and I/O management, file systems, and security.
To know the basic concepts (processes, regular expressions, file system) and the most important commands of the Linux operating system. To be able to write Bash scripts. To be able to write C programs involving Linux system calls.
Knowledge and understanding:
Deep understanding of how an operating system supports the execution of user programs and handles hardware peripherals of a computer. Techniques and fundamental methodologies to represent processes in main and secondary memory and to handle multiprogramming— multiple processes executed simultaneously in a systems with limited resources.
To know how the Linux operating system works. To know how the Bash shell works. Fundamentals of C programming. To know the main Linux system calls.
Applying knowledge and understanding:
Being able to design user and system level programs in an efficient and secure way.
To write Bash scripts in order to solve practical problems. To write C programs able to exploit Linux system calls in order to optimize resources usage.
Critical and judgmental skills:
Being able to evaluate and foresee how programs will require and use system resources, uncover possible deadlock and livelock conditions in a multiprogramming system, guarantee the mutual exclusion among processes and protected access of sensitive memory and resources.
To be able to evaluate the most appropriate way to obtain a given result, by either using single shell commands, or a Bash script, or a C program based on Linux system calls.
Communication skills:
Know how to communicate clearly and in a precise way the characteristics and support mechanisms provided by the operating systems.
To be able to communicate/document Bash scripts and C programs using Linux system calls.
Learning capability:
Being able to exploit the knowledge acquired in order to design system modules, user and system level programs in the second module of the course. Leveraging this knowledge to better understand more complex systems like distributed and cloud ones.
To be able to use the concepts learnt in advanced courses of operating system management, or in a possible advanced course requiring interaction with Linux, e.g.: system programming, cloud computing, distributed systems, cybersecurity
|
| Module II [INF/01] [ITA] | 2nd | 2nd | 6 |
Educational objectives General goals:
To unfold the concepts, structure, and mechanisms of modern operating systems.Fundamental characteristics that apply consistently throughout systems, related to newer features raising from the recurrent development of technology and user necessities.
To learn system programming, in order to be able to access computer resources managed by a Linux operating system.
Specific goals:
The class will cover the characteristics and concepts of modern operating systems, with a particular reference to Unix and Linux. We will start off with a description of the evolution of the operating systems in time. Then, we will continue with fundamental concepts like processes, deadlock detection, mitigation, and prevention, concurrency and mutual exclusion, memory, processor, and I/O management, file systems, and security.
To know the basic concepts (processes, regular expressions, file system) and the most important commands of the Linux operating system. To be able to write Bash scripts. To be able to write C programs involving Linux system calls.
Knowledge and understanding:
Deep understanding of how an operating system supports the execution of user programs and handles hardware peripherals of a computer. Techniques and fundamental methodologies to represent processes in main and secondary memory and to handle multiprogramming— multiple processes executed simultaneously in a systems with limited resources.
To know how the Linux operating system works. To know how the Bash shell works. Fundamentals of C programming. To know the main Linux system calls.
Applying knowledge and understanding:
Being able to design user and system level programs in an efficient and secure way.
To write Bash scripts in order to solve practical problems. To write C programs able to exploit Linux system calls in order to optimize resources usage.
Critical and judgmental skills:
Being able to evaluate and foresee how programs will require and use system resources, uncover possible deadlock and livelock conditions in a multiprogramming system, guarantee the mutual exclusion among processes and protected access of sensitive memory and resources.
To be able to evaluate the most appropriate way to obtain a given result, by either using single shell commands, or a Bash script, or a C program based on Linux system calls.
Communication skills:
Know how to communicate clearly and in a precise way the characteristics and support mechanisms provided by the operating systems.
To be able to communicate/document Bash scripts and C programs using Linux system calls.
Learning capability:
Being able to exploit the knowledge acquired in order to design system modules, user and system level programs in the second module of the course. Leveraging this knowledge to better understand more complex systems like distributed and cloud ones.
To be able to use the concepts learnt in advanced courses of operating system management, or in a possible advanced course requiring interaction with Linux, e.g.: system programming, cloud computing, distributed systems, cybersecurity
|
| 1022301 | Software Engineering [INF/01] [ITA] | 3rd | 1st | 6 |
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.
|
| 1041727 | AUTOMATA COMPUTABILITY AND COMPLEXITY [INF/01] [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.
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.
|
| [N/D] [ITA] | 3rd | 1st | 6 |
| [N/D] [ITA] | 3rd | 2nd | 6 |
| AAF1053 | [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.
|
| AAF1004 | Final exam [N/D] [ITA] | 3rd | 2nd | 6 |
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.
|
| Optional group: | | | |
| Optional group: | | | |