81609 - Languages, Compilers and Computational Models
Learning outcomes
At the end of the course the student knows:
-
foundational aspects of logics, automata, regular expressions and grammars
-
techniques for the design and implementation, via compilers, of programming languages
-
languages, models and techniques for the description and property verification of concurrent and distributed software systems.
Course contents
Automata and formal languages:
-
finite state automata
-
regular expressions and their relationship with finite state automata
-
context free grammars
-
pushdown automata and their relationship with context free grammars
-
Turing machines
-
recursive and recursively enumerable languages and their relationship with Turing machines
Basic logic:
-
propositional logic
-
predicate logic
Compilers:
-
lexical analyzers
-
syntactic analyzers
-
static program checking
-
code generation
Computational models:
-
transition systems for the modeling of system behavior
-
temporal logics for property specification and verification
-
concurrent finite state processes with synchronization and interleaving
-
Petri nets
Rea
81610 - Machine Learning
Learning outcomes
Providing the student with the concepts necessary: - to understand and apply machine learning approaches; - implement classification, regression and clustering algorithms to solve problems in different applicative fields; use neural networks and other deep learning techniques.
Course contents
Artificial Intelligence and Machine Learning
Supervided and Unsupervised Learning
Classification and Regression
Classifiers: Bayes, k-Nearest Neighbor, Support Vector Machines, Multiclassifiers
Clustering (K-means, EM) and Dimensionality Reduction (PCA, DA)
Neural Networks (NN)
Introduction to Deep Learning
Convolutional Neural Networks (CNN)
Recurrent Neural Networks (RNN)
Reinforcement Learning (RL)
58260 - Distributed Systems
Learning outcomes
At the end of the course, students got acquainted with the
fundamental issues of distributed systems, the computational models
capturing their essence, and the technologies currently
helping facing them in the most systematic and effective way.
In particular, students become familiar with the fittest solutions,
technologies, architectures, and methodologies to design
distributed systems, and is capable of
devising out the most critical aspects of distributed systems
coming from physical distribution
determining the most proper methodological approaches
selecting the fittest technologies for implementing the
solutions detected
Course contents
Case Studies
CAP Theorem
Distributed Consensus
General Issues of Distributed Systems
Roots of Distributed Systems: Space, Time & Computation
Goals & Issues of Distributed Systems
Sorts of Distributed Systems
Core Issues of Distributed Systems
Software Architectures
Middleware
Computing with Time
Computing with Space
Features of Distribution
Paradigms for Distributed Systems
Agent-Oriented Computing / Agents & Multi-Agent Systems
Coordination-based Systems / Coordination of Distributed Systems
Technologies for Distributed Systems
Agents & Multi-Agent Systems with Jade
Tuple-based Coordination with TuCSoN
Standard Services for Distributed Systems: Web Services
Computing without Space: Cloud Computing
09679 - Data Base Sistems
Learning outcomes
The student
-
has a in depth knowledge about managing, organizing and planning an Information System. these organizational and managerial competences are complemental to the technical ones in the database area;
-
knows the techniques for analyze and classify software modules in the information system contex;
-
carries out feasibility studies and Business Process Reengineering project;
-
carries out database integration and master data projects;
-
acquires practical skills on the previous topics through interactive business cases and seminars.
Course contents
Introduction to Information Systems
IS classification
Il portafoglio applicativo aziendale
CIMsystems
ERP systems
CRMsystems
Seminar: Sage - ERP
Methods for IS design
Resources and processes
IS planning
Business Process Reengineering
Feasibility study
Risk analysis
cost-Benefit Analysis
Architectural analysis of IS
Scope statement
ICT project management
Database integration and Master Data Management
69867 - Web Services and Applications
Learning outcomes
At the end of the course, the student is able to develop, by using advanced programming techniques: web sites based on client side and server side web technologies, front-ends based on apps and rich internet applications and back-ends based on web services, asynchronous notifications and workflows.
Course contents
Comparisons among different Web architectures and different solution stacks.
Web Browser and Web Server: how they work and the supported technologies.
MVC and MVVM patterns applied to the Web context.
JavaScript and the "JavaScript everywhere" paradigm
MEAN solution stack and related ones (MERN and MEVN), illustrating MongoDB, ExpressJS, NodeJS.
Javascript frameworks: VueJS, Angular, React.
Superset languages in the Web: TypeScript, SASS and SCSS.
HCI methodologies and principles applied to Web user interfaces: design and evaluation; responsive design principles.
93470 - Cybersecurity
Learning outcomes
At the end of the course, the student knows the basic principles of computer security and he/she is able to identify the main problems of computer and network security. He/she gets to understand and explain the main protocols and mechanisms used for securing communications and data transfer. He/she is able to perform a critical evaluation of the security of a computing infrastructure and to suggest the best countermeasures to mitigate the vulnerabilities, reduce the risk and increase the resilience to attacks. He/she is also capable of contributing to the design of systems that are secure by design and understanding the basic problems of computer forensics. Finally, he/she is able to design and contribute to the enhancement of the security of devices exposed to the Internet.
Course contents
Computer and network security basics. Threats, Risks, Attacks, and Assets. Security Functional Requirements.
Small introduction to cryptography. Symmetric Encryption. Public-Key Encryption. Digital Signatures and Key Management.
User authentication and authentication-related problems.
Access control.
Malicious software.
Denial-of-Service (DoS) and Distributed Denial-of-Service (DDoS) attacks.
Intrusion Detection Systems (IDS).
Design and implementation of Firewalls.
Security aspects in design and implementation of software.
Security management and risk assessment. Management. Risk analysis and evaluation. Design and implementation of security policies. Social engineering and human-in-the loop. Auditing.
Computer forensics and anti-computer forensics techniques.
30376 - Business Intelligence
Learning outcomes
After the course, the student is skilled in business intelligence architectures and functionalities. In particular, the student is capable of designing and administrating enterprise data warehouses.
Course contents
Requirements
A prior knowledge and understanding of database systems, relational model, and SQL language is required to attend with profit this course. These notions are normally achieved by giving an exam of Databases or Information Systems.
Fluent spoken and written Italian is a necessary pre-requisite: all lectures and tutorials, and all study material will be in Italian.
Course Contents
Business intelligence:
the role of BI in the corporate information system;
the BI pyramid.
Data Warehousing:
architectures;
techniques for data analysis: reporting and OLAP;
lifecycle:
data source analysis;
requirement analysis;
conceptual design;
workload and data volume;
logical design;
design of ETL procedures;
physical design.
40720 - Data Mining
Learning outcomes
After the course the student: -kows the main data/text mining techniques - knows the methodologies for handling a mining project - develops practical skills in the analysis and interpretation of results through practical exercises with commercial tools and / or open source ones.
Course contents
-
Introduction to Data Mining: areas of applicability
-
The knowledge discovery process
o Designing a Data Miing Process
o The CRISP-DM methodology
-
Understanding and preparing data
o Features of different data types
o Statistical data analysis
o Data quality
o Preprocessing: attributes selection and creation
o Measuring similarities and dissimilarities
-
Data mining techniques
o Classification through decision trees and bayesian networks
o Association rules
o Clustering
o Outlier detection
-
Text Mining techniques
o Information Retrieval for Text Mining
o Text categorization
o Opinion Mining
-
Data understanding and validation
-
The Weka software [http://www.cs.waikato.ac.nz/ml/weka/]
-
Case studies analysis
81614 - Laboratory of Software Systems
Learning outcomes
By the end of the course, the student is expected to master advanced techniques for organising the software development process, and in particular:
ability to set up, evolve, and maintain an agile development process, including build automation, multi-platform and multi-target testing, continuous integration, and continuous delivery;
understanding of the software licensing (with a focus on open source products) and of the existing models of software versioning;
capacity of performing a domain-first analysis in a technology-independent fashion, leveraging techniques of Domain Driven (DDD) and Model Driven (MDD) development;
knowledge of supporting tools for supporting DDD/MDD: creation of domain-specific languages (DSLs) and corresponding code generators (Xtext), development of language-internal DSLs in modern programming languages (Kotlin).
Course contents
MODULE 1
Kotlin for Scala/Java programmers
Build automation, with Gradle as reference tool
Automated Quality Assurance
Software versioning and licensing
Teamwork organization via git
Advanced version control (submodules, rebasing, cherry-picking, squashing)
Continuous integration (via GitHub Actions)
Continuous delivery/deployment
Containerization
MODULE 2
Domain-Driven Design (principi, tecniche, applicazioni, pattern strategici e tattici, pattern avanzati)
Enterprise Software Architectures
Meta-modelling
External Domain-Specific Languages (DLS)
81615 - Pervasive Computing
Learning outcomes
At the end of the course, a student:
-
knows the main aspects about the design and development of pervasive computing systems and applications;
-
knows the main technique for modelling, designing, and simulating pervasive computing systems, in particular complex ones (large-scale);
-
is capable of using reference technologies and tools (e.g. related to Internet of Things) for developing pervasive computing systems and applications;
-
is capable of designing and implementing pervasive computing systems in specific application domains.
Course contents
The content of the course is organised around a selected set of topics that concern the engineering of complex software systems (broadly referred as "pervasive software systems") that include:
-
large-scale distributed systems
-
situated software systems (such as IoT and Industrial IoT)
-
enterprise software systems
-
autonomous software systems
Main topics:
-
Software Architectures and Technologies for Pervasive Software Systems
— service-oriented architectures and microservices
— event-oriented architectures and technologies
— message-based architectures and technologies
— cloud-computing and serverless computing
— architectures and technologies for autonomous systems (agents and multi-agent systems)
-
Modeling and Engineering Pervasive Software Systems
— probabilistic models and large-scale models
— decision problem & autonomous decision making
— simulation
-
Internet of Things, Industrial IoT and Digital Transformation
— Models, Architectures, Technologies
— Standards
— Web of Things
— Digital Twins
-
Enterprise Software Systems
— Integration Patterns
— Middlewares, Standards and Technologies
--- Enterprise Service Bus, Service Mesh
72529 - Smart City and Mobile Technologies
Learning outcomes
Today Smart City is an area of research and application with
huge potential for growth and involves a variety of relevant
aspects: the role of government for strategic planning and
development of a nation, the construction of social and
relationship capital, technologies like factors facilitating
innovation, the new positioning of citizens and their
associations.
At the end of the course the student will have the basic
knowledge - in terms of technologies, methods and tools - for
design and development of software applications to assist the
implementation of innovative services in the context of digital
cities, with particular reference to mobile technologies and embedded systems. A further
objective of the course is the presentation of some lines of
scientific research in the field of ICT for Smart City which will,
in the near future, triggering processes of technological
innovation in various applications of interest.
Course contents
The course wants to be in the context of Smart Sustainable City,
as a priority, as the basis for the learning of techniques for the
realization of innovative services, with particular reference to
mobile technologies and embedded systems. Crucial role in smart services can
be attributed to the development and dissemination of sensors of
various kinds, in a scenario known as the IoT (Internet of Things),
as well as crucial is the innovation in the field of embedded
systems, and in particular of Video Content Analysis technology,
and the availability of
efficient cloud computing architectures and distributed information
systems for the management of Big Data.
Main
contents of the course
The foundation for the realization of innovative
services in contexts Smart City
·
Sensing technologies
·
Embedded systems and applications (eg, environmental
monitoring, video surveillance, smart building, indoor and outdoor localization, home automation,
machine vision)
·
Design methodologies and development environments
for applications (with particular focus on mobile devices as clients)
·
Cloud Computing and Big Data
There will also be seminars on aspects of interest
for Smart City.
The course is supported by guided exercises in
laboratory.
Readings/Bibliography
29443 - Computer Vision
Learning outcomes
The course aims at providing the notions and tools necessary for the design and implementation of automatic systems able to analyze digital images for object detection and recognition. In particular, the course focuses mainly on the techniques for feature extraction from digital images and the application of these techniques to typical problems in computer vision such as segmentation, localization, classification and similarity searches. Both traditional approaches as well as deep-learning based solutions will be analyzed, with examples in real-life applications.
Course contents
Basic techniques for digital image processing and filtering
Feature extraction
Color features:
-
color histograms and similarity metrics;
-
color moments
Texture features:
-
gray-level co-occurrence matrix and related measures (enthropy, contrast, homogeneity, etc..);
-
Gabor filters: filter banks;
-
Haar features: integral image and efficient feature extraction;
-
Local Binary Pattern;
Shape features:
-
Object countour extraction and one-dimensional shape representations;
-
Shape descriptors, Fourier descriptors;
-
Invariant moments.
Handcrafted features vs Representation learning
Image stitching, 2D image registration and Visual SLAM
Keypoints and local descriptors:
-
Keypoint detection: Harris corner detector;
-
Scale invariant detectors: Harris Laplace, Laplacian of Gaussian, Difference of Gaussian;
-
Keypoints and descriptors: SIFT, SURF, BRIEF, Histogram of Oriented Gradients.
-
Ransac algorithm for feature matching.
-
Application to robotics: Visual SLAM (Simultaneous Localization and Mapping)
Semantic segmentation in digital images
Color-based segmentation techniques, Mean Shift algorithm;
Deep learning based techniques with applications in satellite and medical images analysis.
Recognition “in the wild”
Object detection/classification
-
Color, texture and shape features for content-based image retrieval;
-
Bag of visual Words;
-
Feature-based Rigid Template matching and applications to object detection and recognition (e.g. grocery products)
-
Hough Transform;
-
Deep learning techniques for object detection and recognition (e.g. pedestrian and road sign recognition, object recognition for robotic vision, face detection and recognition).
Video surveillance and video analysis
Basic techniques for frame subtraction and background modeling
Approaches for object/person tracking and crowd analysis;
Human activity detection and recognition.
Readin
81932 - Big Data
Learning outcomes
At the end of the course, the student:- Knows the applications of Big Data technologies and the respective challenges - Knows the available hardware and software architectures to handle Big Data - Knows the techniques to store the data, the programming languages and paradigms generally adopted in this kind of systems - Knows the design methodologies for the different kinds of applications in the area of Big Data - Acquires practical expertise in using the different technologies through laboratory and projects. In particular, the main technologies used in practical exercises will be NoSQL databases and the Hadoop platform: Hive, Spark, Tez, Dremel, Giraph, Storm, Mahout, and Open R
Course contents
Requirements
A prior knowledge of relational databases, Java and Scala programming languages, and Unix-like systems is required to attend the course. Attendance of Business Intelligence and Data Mining courses is encouraged.
All lessons are given in Italian, but the teaching material is written in English. A good comprehension of English is thus required to use the material. Non-Italian speaking students can study on the English-written material and give the exam in English.
Course Contents
For real-time updates on the course’s activities, please subscribe to the distribution list enrico.gallinucci.bigdata22
-
Introduction to the course and to Big Data: what they are and how to use them
-
Cluster computing to handle Big Data
Hardware and software architectures
The Apache Hadoop framework and its modules (HDFS, YARN)
Hadoop-specific data structures (Apache Parquet)
-
The MapReduce paradigm: basic principles, limitations, design of algorithms
-
The Apache Spark system
Architecture, data structures,basic principles
Data partitioning and shuffling
Optimization of the computation
-
SQL on Big Data with Spark SQL
-
Data streaming
The architecture to handle data streaming
Approximated algorithms in the streaming context
-
NoSQL databases
-
Handling Big Data in the Cloud
Cluster on-premises vs in the cloud
The technological stack in the cloud
Deploy of a real case study on a cloud provider
-
Deploying a Data Mining problem with Big Data logic
91411 - Intelligent Robotic Systems
Learning outcomes
At the end of the course, students have acquired knowledge and competencies for designing a system composed of one or more robots (here, we call "robot" an autonomous system which exists in the physical world, can sense its environment and can act on it to achieve some goals). In particular, students know the main models, methods, architectures and tools for programming robots equipped with nontrivial computational and cognitive capabilities.
Course contents
Introduction to robotics
Notions of robot and its behavior in a physical environment
Main issues in intelligent robotic systems design
Complex dynamical systems: basic definitions and concepts propaedeutic to robotic topics (notions of phase and state space, trajectory, attractor, bifurcation, phase transition, chaos)
Main methods and approaches for programming robotic systems. Part 1: Deliberative control
Informed search algorithms. A* and its variants for path planning problems
Robot planning: main definitions and principles
STRIPS and its extensions
Nonlinear planning
Navigation problems and main solution approaches
Main methods and approaches for programming robotic systems. Part 2: Behavior-based robotics
The Subsumption Architecture
Artificial Evolution and Artificial Life
Automatic design of robot programs
Further discussions on embodiment: sensory-motor coordination, niches, morphological computation
Fuzzy logic and fuzzy systems
Behavior trees
Experimental evaluation and parameter tuning of control software for robots: practical guidelines
Robot learning
Associative learning
Reinforcement learning
Value-based learning and intrinsic motivation
Lab activities
Experiments with robotic simulators with the aim of experiencing with the various kinds of control and testing the knowledge acquired.
93669 - Intelligent Systems Engineering
Learning outcomes
At the end of the course, students get acquainted with the fundamental issues of intelligent systems, the most relevant computational models and technologies, and the most effective methods. In particular, students become familiar with the fittest solutions, languages, technologies, architectures, and methodologies to design intelligent systems, and are capable of
-
devising the problems requiring artificial intelligence techniques for their solution;
-
determining the most proper conceptual and methodological approaches;
-
selecting and integrating the fittest technologies for implementing the solutions detected.
Course contents
-
Intelligence and autonomy in software and artificial systems
Artificial intelligence: short history, main concepts and techniques
The many diverse meanings of autonomy in artificial and software systems
-
Agents, multi-agent systems, and the engineering of intelligent systems
Agent meta-models, models, and main technologies
Agent-oriented software engineering
-
AI meets autonomy: Intelligent agents
Logic & computation
Automated reasoning & planning
Reasoning agents
-
Symbolic vs. sub-symbolic AI
Machine learning meets intelligent agents
Readin
73435 - Project Management
Learning outcomes
Al termine del corso lo studente:
-
conosce i principi base del Project Management e ha padronanza degli approcci riscontrabili nel settore della produzione di software, partendo da quelli più tradizionali fino agli approcci iterativi e adattivi tipici delle metodologie "agile";
-
conosce qualche strumento di supporto alla gestione di progetti e ha approfondito alcuni aspetti pratici anche con esercitazioni di laboratorio;
-
è in grado di partecipare e/o gestire un progetto di sviluppo software.
Course contents
Introduction to project management.
Definition of project, program, portfolio.
Definition of scope, quality, resources and their interrelationship.
Definition of project management.
Definition of processes and knowledge areas involved in project management according to the Project Management Body of Knowledge (PMBOK).
Management of integration, scope, time, cost, quality, human resources, communications, risk, procurement, and stakeholders.
The life cycle of a project and its management: traditional, incremental, iterative, and adaptive.
Scoping process group.
Planning process group.
Launching/executing process group.
Monitoring and controlling process group
Closing process group.
Exercises.
Seminars.
42500 - Semantic Web
Learning outcomes
To gain understanding of technologies and models to web information representation and reasoning, in particular, relating to ontology and semantic skills.
Course contents
This course is aimed at providing both a solid conceptual framework on the theme of knowledge representation in the Web of Data, and the basis for the development and use of Knowledge Graphs by means of the most popular tools in computer science and shared standards, highlighting problems of interest and analysing some specific issues. The growth of Web contents imposes the study of theories, methodologies and techniques for their conceptualisation. The aim of this course is to provide students with an understanding of the formal assumptions, languages and technologies that enable the creation of applications, as well as specific skills in the use and development of information systems for the semantic management of knowledge. In particular, the following topics will be addressed:
KG in the Web of Data (Semantic Web, Linked Open Data)
Semantic technologies (RDF, RDFS, logical inference, RDFa, microformats)
Querying RDF (DBPedia KG, SPARQL)
Knowledge representation using ontologies (OWL)
KG applications (ontologies, KG programming, visualisation and analytics)
Advanced KG applications (KG embeddings, KG completion, KG mappings and alignment, semantic search)
93668 - 3D Image Analysis and Computer Vision Systems
Learning outcomes
The objective of this Course is to form an engineer able to design computer vision systems working in the real world, even in real time, for industrial, scientific and play purposes. The systems exploit automatic analysis of 3D image sequences in a number of application fields including machine vision, automotive, automatic quality control, zero-defect analysis, predictive maintenance, security, medical and biomedical imaging, aerospace imaging, precision agriculture, cultural heritage. At the end of the Course, students are able to apply the acquired skills:
To apply computer vision in critical multidisciplinary fields, including medical imaging
To use cameras to perform high-accuracy 3D measurements
To realize augmented and mixed reality applications
To use vision sensors in IoT applications
To perform 3D scene reconstruction from moving aerial or terrestrial vehicle
To perform 3D scanning, also for 3D printing
To perform 3D defect analysis in industry
To design real time computer vision systems on parallel/distributed architectures
Course contents
-
Computer vision: examples of systems and applications
-
From sensor to image: basics of optics
-
Real time image sequence and video analysis
-
Semantic extraction of multi-dimensional features
-
Perspective: a 2D projection of the real world
-
From perspective to 3D: camera calibration, stereoscopy, triangulation
-
From motion to 3D: the cloud points
-
Cloud points and 3D geometric object representation
-
Principles of real time processing (high throughput)
-
Effective GPU programming
Case studies: the ongoing projects
91250 - Deep Learning
Learning outcomes
The course aims at providing advanced skills (both theoretical and practical) on machine learning and, in particular, on deep learning.
At the end of the course the student will be able to:
in-depth train and optimize deep learning approaches;
choose and customize the most appropriate techniques to be used in real application scenarios;
use advanced deep learning techniques.
Course contents
Introduction to deep learning
Linear algebra, calculus and automatic differentiation
Artificial neural networks
Backpropagation
Optimization algorithms
Convolutional Neural Networks (CNN)
Recurrent Neural Networks (RNN)
AutoEncoders (AE)
Generative models
Reinforcement Learning (RL)
Natural Language Processing (NLP) (a practical example)
93667 - Laboratory of Network Programmability and Automation
Learning outcomes
The student will learn the modern network programming and automation methodologies and the
related enabling technologies. The student will learn how to use a platform for virtual network
programming and automation in a cloud computing environment and a control plane for software
defined networks. Moreover the student will learn how to use specific data models for the design
and for the programming of network services, according to the current standards.
Course contents
Network Virtualization and cloud computing
Network virtualization: Linux namespaces, virtual bridges and virtual switches
Virtual networking in cloud computing: examples with Docker and OpenStack
Software Defined Networking
SDN architecture
The OpenFlow protocol
Examples of SDN programming with OpenFlow
Network Function Virtualization
The ETSI NFV-MANO architecture and standards
An example of orchestration platform: OpenSource Mano (OSM)
Implementation of network service descriptors with OSM
Programming the data plane
The P4 language
Example of programming switches behavior with P4
5G network slicing
Architecture of the LTE and 5G core network
The concept of network slicing
90074 - Smart Vehicular Systems
Learning outcomes
Students taking this class: - Will An extended knowledge of challenges and opportunites in the area of vehicular communications including V2V and V2I. The class material will include real world examples and deployments. - Will understand impact of mobility and propagation on Vehicular Systems performances - Will learn vehicular application scenarios and their evolution - Will learn how design and model for connected/autonomous vehicular systems.
Course contents
Autonomous and connected vehicles are changing automotive as we know it today. Computer Scientists and Engineers are at the center of this revolution. They are the ones behind the innovation and feature-design for 50% of features in any car in the market. This trend is accelerating with the market introduction of connected cars, electric cars, autonomous vehicles and Advanced Driver Assistance Systems (ADAS).
This course serves as an introduction to these exciting topics and to foster the curiosity for the open scientific challenges that are now being discussed by a global community of researchers.
Requirements:
Computer network fundamentals and basic data communication theory,
Network programming (i.e. Sockets) and
Introductory knowledge of: distributed systems, event-driven programming, Linux OS and RTOS
Course Description:
This course provides a survey of vehicular computing paradigms, algorithms and systems with the goal of understanding the impact of mobility, propagation, computation and protocol tradeoffs in the connected vehicles scenarios.
The course covers fundamental and advanced principles of Vehicular Networks by studying the protocols and algorithms used in vehicular systems and applications and their expected evolution. Topics include: Intermittent Networks, Mobility and Propagation Challenges, Vehicular edge and fog paradigms (V2X/C-V2X), beyond IP communications, multi-homed connected vehicles, In-vehicle networking, introduction to privacy in vehicular systems, analysis of specific verticals and possible evolutions.
Reading