B5474 - ARCHITETTURE SOFTWARE A MICROSERVIZI
Learning outcomes
At the end of the course, students know the main aspects of the analysis, design and implementation of service-based software architectures, with both a microservices approach and enterprise SOA; they also know how to model and support the execution of business processes, appropriately integrating the services that compose them. They can design and implement such complex architectures, also supporting their execution within virtualized infrastructures, through the application of practices, patterns and appropriate technological solutions.
Course contents
Service-oriented architectures (SOAs) are used to build large software systems that operate across multiple organizations (as is the case in the enterprise environment) but also as a basic structure to build flexible and extremely scalable applications (as in the case of microservices).
Designing this class of systems and reasoning about their properties requires the use of appropriate abstractions and modeling techniques.
In this course we will see how service and process abstractions can interoperate to describe complex distributed systems and we will see modeling techniques based on these abstractions that help design them.
We will learn how to model processes (using BPMN), services (using UML) and how to model the interaction between processes and services and between different services through choreographies.
We will see how to exploit these techniques to design applications adhering to the service-oriented architectural style both across-enterprises and through microservices (also by adopting specific patterns).
We will also see in practice the protocols and the technologies that can be used for their implementation; in particular for the technologies to support web services we will see SOAP / WSDL and the RESTful style; for microservices we will see the use of containers (eg Docker), microservice orchestrators (eg Kubernetes), service meshes (eg Linkerd) and serialization technologies (eg Protobuf). As far as microservices are concerned, we will try in particular to understand the strengths and weaknesses of this class of applications and we will understand how to build systems that are both scalable and reliable.
To facilitate the prompt realization of examples of some of the technologies related to web services as they are introduced, we will use the Jolie language which allows rapid prototyping of SOA solutions.
Below is a list of the main topics of the course:
Enterprise software systems, architecture and modeling
Business Process Management e BPMN
SOA/Coreografie
Web services (SOAP/WSLD/RESTful/gRPC)
Microservices properties, design, patterns and implementation
Virtualized infrastructures supporting SOAs: containers (Docker), distributed containers (Kubernetes)
Jolie
B1459 - ARTIFICIAL INTELLIGENCE, BLOCKCHAIN E CRIPTOVALUTE NELLO SVILUPPO SOFTWARE
Learning outcomes
This course aims at ensuring that at the end of the course the students: • know the main cognitive models that can explain how people develop software • are aware of the opportunities and the limits of applying techniques of artificial intelligence to develop software • are familiar at how the principles of software engineering can guide the development of AI systems • have an understanding of the principles of blockchain and their applications • understand the role and the potentials of cryptocurrencies and the problems associated to them when developing software • are able to build complex models of production processes and of products combining the most modern approaches, with specific attention to AI, blockchain, and cryptocurrencies.
Course contents
In the last years there has been a completely change of paradigm in software production that has lead to rethink at processes and production contexts. In particular, there has been a renewed interest in artificial intelligence, with a strong interest in the application of machine learning in predicting quality and productivity and in the use of cognitive models to orient the production processes.
On the other side, a strong need has emerged to identify software tools suitable to handle platforms for data management, that are always more complex and generate systems that at first appear to have strong effects but then are hard to evolve. Moreover, there are always more distributions of applications and development processes, interconnected with new methods of management of aspects and applications related to the introduction of blockchain systems and cryptocurrencies.
Prerequisites:
Even if there is not any formal prerequisite, the course is characterised as a software engineering course and will not present fundamental aspects of artificial intelligence and machine learning; to this end, it is recommended that the students not having such knowledge take before this course the one of Deep Learning, cod. 91250, of Prof. Asperti.
Knowledge and ability to acquire:
This is a software engineering course that intends to educate the students so that at the end of the course students:
know the main cognitive models that can explain how people develop software
are aware of the opportunities and limits of the applications of artificial intelligence for the development of software
become acquainted on how the principles of software engineering can guide the development of systems based on artificial intelligence
master the principles of blockchain and their applications
understand the role and the potentiality of cryptocurrencies and the problems associated to them in the development of software
manage to build complex production models and complex products combining the most advantages existing technologies, methods, and tools, including AI, blockchain systems, and cryptocurrencies
Topics:
Cognitive models for software development (systemic approaches, impulsive-reflective models, …)
Application of AI to software development (testing, prediction, evaluation)
Use of software engineering principles in the development of AI systems
Blockchain (principles, distributed ledger technologies, smart contracts, platforms)
Cryptocurrencies (principles, transactions, consensus algorithms, overview of existing currencies
Readings/B
90748 - Blockchain and Cryptocurrencies
Learning outcomes
At the end of the course, the student knows the relevant themes related to blockchain technologies, cryptocurrencies, smart contracts and novel applications that can be built over the blockchain. The student is able to develop simple smart contracts that can be deployed on a blockchain.
Course contents
Note
|
Prof. Stefano Ferretti will be actually teaching the course. |
Bitcoin and novel cryptocurrencies gathered momentum in the last months. More and more investors look with interest at these technologies, while others label them as a dangerous speculative bubble. The truth is that the blockchain, and the alternative implementations of a distributed ledger, represent very interesting technologies, that can be exploited to build novel distributed applications. The underlying building blocks are related to many concepts and research areas of computer science in general. This course will illustrate the main principles and conceptual foundations of the blockchain and the Bitcoin network.
Program
Introduction to peer-to-peer sysystems
Overlay topologies and decentralization
Introduction to Crypto and Cryptocurrencies
The blockchain: how to achieve decentralization
Transactions and transaction scripting languages
Mining
Attacks to the blockchain
Anonymity
Smart contracts
81943 - Complex Systems & Network Science
Learning outcomes
At the end of the course, the student will have acquired the basic notions of complexity as it arises through interactions among simple agents in nature and in modern computing systems. The student will be able to identify, formulate, model and analyze new problems using the mathematical framework of dynamical systems and network science.
Course contents
Description: Modern information systems and services often rely on large numbers of independent interacting components to provide their functions. Under certain conditions, the behavior that results from these interactions can be unexpected and surprising. Complexity Science is an interdisciplinary field for studying global behaviors resulting from many simple local interactions in an effort to characterize and control them. Networks allow us to formalize the structure of interactions. They play a central role in the transmission of information, transportation of goods, spread of diseases, diffusion of innovation, formation of opinions and adoption of new technologies. Network Science is an interdisciplinary field for studying the interconnectedness of modern life by exploring fundamental properties that govern the structure and dynamic evolution of networks.
Contents: Complex systems: definitions, methodologies; Dynamical systems, Nonlinear dynamics; Chaos, Bifurcations and Feigenbaum constant, Predictability, Randomness and Chaos; Models of complex systems, Cellular automata, Wolfram’s classification, Game of life; Autonomous agents, Flocking, Schooling, Synchronization, Formation creation; Cooperation and Competition, Game theory basics, Nash equilibrium; Game theory: Prisoner’s Dilemma, Coordination games, Mixed strategy games; Adaptation, Evolution, Genetic algorithms, Evolutionary games; Network Science: Definitions and examples; Graph theory, Basic concepts and definitions; Diameter, Path length, Clustering, Centrality metrics; Structure of real networks, Degree distribution, Power-laws, Popularity; Models of network formation; The Erdos-Renyi random model; Clustered models; Models of network growth, Preferential attachment; Small-world networks, Network navigation; Peer-to-peer systems and overlay networks; Structured overlays, DHTs, Key-based routing, Chord; Distributed network formation: Newscast, Cyclon, T-Man; Processes on networks: Aggregation; Rational dynamics: Cooperation in selfish environments, Homophily, Segregation; Diffusion, Percolation, Tipping points, Peer-effects, Cascades.
Prerequisites: Basic notions of computer system architecture, computer networks, operating systems, and probability theory.
87469 - Decision Making with Constraint Programming
Learning outcomes
This course covers the fundamental methods in artificial intelligence to model and solve combinatorial problems requiring to take (optimal) decisions in the presence of many complex constraints. Such problems appear often in diverse domains of science, business and industry. The inherent difficulty in solving such practically crucial problems has lead to the development of Constraint Programming (CP), an intelligent decision-support technology. A growing number of companies and research institutions worldwide successfully apply CP technology and contribute to its advancement. Skills in this area are therefore in high demand in the job market. The course combines theoretical foundations with practical modelling and solving of realistic problems. At the end of the course, the student has an understanding of the advanced modelling techniques and efficient solution methods, and possesses the necessary skills for modelling in a CP language and solving with a CP solver.
Course contents
Prerequisites: Basic computer science courses such as discrete mathematics, logic, algorithms and data structures, programming. Prior knowledge on artificial intelligence is not necessary.
Course topics
Overview and successful applications of Constraint Programming (CP)
Modeling techniques
Local consistency notions and constraint propagation
Global constraints
Constructive tree search algorithms, search and propagation, branching heuristics, randomization and search restarts
Optimization problems
Constraint-based scheduling
Heuristic search methods
Hybrid CP and heuristic search methods
Advanced topics and hot research topics in CP
81676 - Digital Forensic
Learning outcomes
At the end of the course the students will know the main topics of digital forensics. Moreover, they have used several basic tools to manage some common scenarios: single device (computer, tablet, smartphone) and several kinds of file, networking (wireless and wired), e-mail and social media. The students will know the importance of the chain of custody and also the main procedures to acquire, conserve and analyze the data. The students will know both the importance of the final report and the conceptual instruments for its appropriate drafting
Course contents
Understanding the Digital Forensics Profession and Investigations
The Investigator’s Office and Laboratory
Data Acquisition
Processing Crime and Incident Scenes
Working with Windows and CLI Systems
Current Digital Forensics Tools
Linux and Macintosh File Systems
Recovering Graphics Files
Digital Forensics Analysis and Validation
Virtual Machine Forensics, Live Acquisitions, and Network Forensics
E-mail and Social Media Investigations
Mobile Device Forensics
Cloud Forensics
Report Writing for High-Tech Investigations
Expert Testimony in Digital Investigations
Ethics for the Expert Witness
91721 - Laboratory of Virtual Reality and Advanced Reality
Learning outcomes
At the end of the course, the student knows the fundamental theoretical principles, the hardware and the main software platforms required to design and create virtual and augmented reality environments. Furthermore, the student acquires the skills necessary to design, create, modify and interact with such environments
Course contents
Introduction to Augmented and Virtual Reality (AR/VR)
Principles: Computer Graphics in AR/VR
Principles: Perception and Human Factors (Designing and developing 3D UI: strategies and evaluation)
Principles: Interaction in AR/VR (Selection and manipulation, Travel, Navigation, Way finding, System control, Symbolic input)
Hardware: Output (Visual, Auditory, Haptic, Vestibular, and Olfactory Channels)
Hardware: Input (Tracking Systems, Input Devices)
VR contents (Standards and Designing)
Software: Platforms (Introduction, VR runtime systems, Real Time Physics Engines, Distributed Virtual Environments, Collaborative Virtual Environments, Game Engines)
Mixed Reality (Mixed Reality Continuum - AR to VR, Mixed Reality Technologies)
Applications of AR/VR
Future of AR/VR
Exercises/Demonstrations
91258 - Natural Language Processing
Learning outcomes
At the end of this course, the student acquires foundational notions about Natural Language Processing with particular attention at the statistical/algorithmic techniques. The methods and instruments from Natural Language Processing will be then applied at each level of linguistic analysis.
Course contents
Part I: Foundations
Introduction
Natural Language Processing - Problems and perspectives
Introduction/Recall to/of probability calculus
N-grams and Language Models
Deep Neural Networks
The evaluation of NLP applications
Corpora
Corpora and their construction: representativeness
Concordances, collocations and measures of words association
Methods for Text Retrieval
Part II: Natural Language Processing
Computational Phonetics
Speech samples: properties and acoustic measures
Analysis in the frequency domain, Spectrograms
Applications in the acoustic phonetic field.
Speech recognition with Deep Neural Networks
Computational Morphology
Morphological operations
Static lexica, Two-level morphology
Computational Syntax
Part-of-speech tagging
Grammars for natural language
Natural language Parsing
Supplementary worksheet: formal grammars for NL
Formal languages and Natural languages. Natural language complexity
Phrase structure grammars, Dependency Grammars
Treebanks
Modern formalisms for parsing natural languages
Computational Semantics
Lexical semantics: WordNet and FrameNet
Word Sense Disambiguation
Word-Space models
Logical approaches to sentence semantics
Part III: Applications and Case studies:
Solving Downstream Tasks
Document classification
Sentiment Analysis
Named Entity Recognition
Semantic Textual Similarity
Prompting Pre-Trained Language Models
Students with SLD or temporary or permanent disabilities. It is suggested that they get in touch as soon as possible with the relevant University office (https://site.unibo.it/studenti-con-disabilita-e-dsa/en) and with the lecturer in order to seek together the most effective strategies for following the lessons and/or preparing for the examination.
37760 - Systems Simulation
Learning outcomes
At the end of the course students will have acquired methods and tools to design, implement and validate simulation models for the performance analysis and assessment of computer and communication systems and for the analysis of social systems. Students will be able to design, implement and validate simulation models for the analysis and assessment of complex systems.
Course contents
-
classification of systems and models;
-
analytical models: queueing systems and queueing networks;
-
design of simulation experiments;
-
random number generation and random variate generation;
-
discrete events simulazione techniques;
6. agent based simulation;
7. simulation and machine learning;
-
digital twin;
-
design and implementation of simulators and simulation tools;
-
input and output data analysis of simulation models;
-
verification, validation and testing of simulation models;
-
introduction to parallel and distributed simulation;
-
analysis and evaluation of complex systems.
-
Introduction to Virtual Reality.
90730 - Social Network Analysis
Learning outcomes
The course is meant to examine the essential models, methods and topics of social network analysis, while also comprehending information networks, where more generally nodes and links represent respectively data and relations between data. The first half is devoted to those analytical methods based on the comparison between real-world networks and random graphs, with emphasis on the configuration model and modularity clustering.The second half is devoted to objective function-based methods and to fuzzy models for community/module detection, with focus on the cluster score of vertex subsets quantified by pseudo-Boolean functions.
Course contents
The programme is the same for both attending and non-attending students:
Introduction to Network Analysis, gentle introduction to the field of network analysis and its usages in other fields of research (e.g., computer science, forensics, archeology, literature, history, science of religion, etc.).
Research Design and How to Read a (Network Analysis) Research Paper: introduction to the scientific publication process, elements of research papers (on network analysis), research design, analysis of research papers.
Mathematics of Networks: networks and their representation, types of networks, graph representations, paths and components, adjacency matrices and matrix representations, ways and modes, operations on Matrices.
Data Collection and Data Management: network questions, data collection and reliability, data formats and transformation, algorithms and software for network analysis and visualisation.
Measures and Metrics, Nodes: kinds of measures, multi-category nominal scales, ordinal and scalar measures, centrality, degree and other kinds of centrality (e.g. Google’s PageRank), hubs and authorities, closeness and betweenness centrality, groups of nodes (cliques, cores, components and k-components), clustering and clustering coefficients, reciprocity and similarity, structural and other types of equivalence, homophily and types of assortative mixing.
Testing Hypotheses: the role of hypotheses in the scientific method, testing hypotheses in network analysis, permutation tests, dyadic hypotheses.
Measures and Metrics, Networks: small-world effects, degree distribution, power laws and scale-free networks, visualisation and properties of power-law distributions, local-clustering coefficient, cohesion, reciprocity, transitivity and the clustering coefficient, triad census, centralisation and core-periphery indices, centrality, random graphs, means on edges and degree, degree distribution, giant and small component(s), locally tree-like networks.
Network Visualisation: the importance of network visualisation, graph-layout algorithms, embedding node attributes, node filtering, visualising ego networks, embedding tie characteristics, tie strengths, visualising network change.
Handling Large Networks: reducing the size of the problem, eliminating edges, pruning nodes, divide and conquer, aggregation, sampling, small-world and scale-free networks.
Students with specific learning disorders (SLD) or temporary/permanent disabilities should contact the appropriate University office (https://site.unibo.it/studenti-con-disabilita-e-dsa/en) immediately and agree with the teacher the most effective strategies for attending the lectures and preparing for the exam.
B3567 - INTRODUCTION TO QUANTUM COMPUTING
Learning outcomes
At the end of the course the student is acquainted with the basic mathematical notions underlying quantum computing seen as an alternative computing paradigm, and knows how to implement quantum algorithms as families of quantum circuits. Moreover, he has an understanding of more advanced topics like quantum cryptography, quantum error correction, and the development of graphical languages for quantum circuits.
Course contents
First module:
-
overview on quantum computing
-
mathematical background: linear algebra and complex Hilbert spaces
-
qubits and the physics of quantum computation
-
a quantum computational model: quantum circuits
Second module:
-
quantum algorithms (Grover, Shor)
-
overview on quantum error correction and quantum cryptography
-
overview on quantum programming and quantum graphical languages
72671 - Complements of Programming Languages
Learning outcomes
Nowadays the software development requires fast and sophisticated code
transformation and analysis tools. For example, Java code is verified by the Virtual Machine before execution to check basic correctness properties about the memory and the locks that are used. Facebook, before releasing its mobile apps, always submits them
to a tool that finds bugs without running the code. The applications of
performance-critical systems and asset-management systems would be impossible to build
and evolve without compilers that derive correct and optimized machine code from high-level source code.
The objective of this course is to discuss modern code transformation and analysis
techniques and illustrate their implementation. For this reason, the course will
refer to a framework, ANTLR, now widely used in academia and industry to build all sorts of languages, tools, and frameworks. For example, Twitter search uses ANTLR for query parsing, with over 2 billion queries a day.
At the end of the course, the student knows the fundamentals of code transformation
and static analysis. He is able to apply the theory by extending a small, yet expressive and powerful language, by means of the ANTLR framework.
Course contents
Introduction to code transformation and analysis. The ANTLR framework and the corresponding Lexical and Syntactical Analysis. Semantic analysis: symbol table, type checking, static analysis of properties about resource and asset consumptions. Intermediate code generation for standard and advanced features of programming languages. Virtual Machines and Interpreters.
93478 - COMPUTER VISION
Learning outcomes
At the end of the course the students will be able to implement algorithms addressing relevant computer vision tasks, such as: object detection, semantic segmentation, image and video captioning. During the course they will learn the basics of image, video analysis and computer vision. They will gain knowledge about the design and implementation of convolutional neural networks, recurrent neural networks and how to combine them. During the course they will also acquire familiarity with the relevant frameworks used to design modern deep architecture.
Course contents
The course introduces concepts, and tools for the design and implementation of image acquisition, processing, and analysis techniques. List of the contents:
Image Formation and Acquisition: geometry of image formation; lenses; field of view and depth of field; image sampling and quantization.
Spatial Filtering: convolution and correlation; mean and Gaussian filtering; median filtering; bilateral filtering.
Edge Detection: image gradient; non-maxima suppression; Laplacian of Gaussian; Canny edge detector.
Local Invariant Features: detectors and descriptors; Harris corners; scale-invariant features; SIFT features.
Camera calibration: projective coordinates and perspective projection matrix; intrinsic and extrinsic camera parameters; Zhang’s algorithm.
Instance Detection: pattern matching; shape-based matching; Hough transform.
Object Detection: two-stages, one-stage, and anchor-free detectors; RoI pooling operator; feature pyramid networks.
Semantic Segmentation: fully convolutional networks; transposed and dilated convolutions; RoI Align operator; semantic, instance, and panoptic segmentation.
Metric Learning: deep metric learning; contrastive and triplet losses; application to different recognition/identification tasks.
Attention Mechanism: self-attention in RNN; Transformer architecture; Vision Transformer.
Prerequisites:
-
Linear Algebra
-
Basic knowledge of Machine Learning and Deep Learning
-
Programming and Python
90749 - Computing Education
Learning outcomes
The course aims to provide theoretical knowledge, techniques and tools helpful in teaching computer science. At the end of the course, the student is familiar with the main pedagogical and didactical approaches for teaching computer science at different school levels. Students can organise and teach computer science courses, compare and choose different methodologies to generate teaching materials, and evaluate learning.
Course contents
The educational objectives of this course include:
the knowledge of some historical, epistemological, and ethical aspects of Computer Science as a scientific discipline and the rationale behind the need for its teaching;
the understanding of pedagogical aspects and learning theories in the context of Computer Science teaching;
the knowledge of multiple teaching approaches specific to the subject;
knowledge of the main cognitive difficulties that learning Computer Science poses (with particular reference to programming) and what possible strategies to adopt to overcome them;
the knowledge of specific software tools and physical computing devices to support the Computer Science teaching;
the ability to formulate and manage study paths consistent with the national guidelines and curricula relating to Computer Science in schools of all levels.
Topics covered in the course include:
Scientific Vision of Computer Science
Learning paradigms and theories, with particular reference to constructivism and constructionism, applied to computing education
Top-down and bottom-up approaches in the teaching of Computer Science
"Coding", Computational Thinking and Computer Science
Programming, Algorithms, and Data Structures teaching
Educational implications in the choice of programming languages
Difficulties and misconceptions in learning programming
Didactics of technological aspects: computer architecture, operating systems, networks
Methodologies for computing education
unplugged
dramatisation/visualisation
program comprehension exercises
debugging of non-compliant code
visualization of machine state during execution of a program
making/tinkering with physical computing tools
methodologies for evaluating computer programs
Computer science in textbooks and international and Italian school curricula
Software licenses (free software vs. proprietary software): implications for education
66870 - Concurrent Models and Systems
Learning outcomes
At the end of the course, the student will learn the basic ingredients of concurrency theory, their models and verification systems on such models. (S)He will be able to analyze simple concurrent programs with automatic or semi-automatic tools.
Course contents
-
Introduction to concurrency and to the problem of the correctness of reactive systems design.
-
Labeled transition systems
-
Behavioral equivalences: traces, simulation, bisimulation f(strong and weak), properties.
-
The language CCS: syntax and SOS semantics.
-
Subclasses of CCS: finite processes, finite-state processes, regular processes, BPP, finite-net processes, finitary CCS.
-
Turing completeness of finitary CCS; undecidability of behavioral equivalences of finitary CCS.
-
Value-passing CCS.
-
Algebraic properties, behavioral congruences and axiomatizations.
-
Espressivieness of CCS: encodability of additional operators (internal choice, hiding, sequential composition)
-
The problem of muti-way synchronization: Multi-CCS; case study: dining philosophers.
-
Petri nets: definition, equivalences, decidable properties, expressiveness.
-
Languages for representing Petri nets. Distributed computability.
-
Fixpoint theory, least and greates fixpoints, strong bisimilarity as a greatest fixpoint.
-
Hennessy-Milner Logic (HML), estention with recursively defined formulae, modal mu-calculus.
-
Analysis and verification tools for CCS and HML: Concurrency Workbench (CWB).
-
Modeling, analysis and verification of some mutual exclusion algorithms with CWB.
91269 - Multimedia Data Management
Learning outcomes
The course aims to provide the knowledge and skills necessary for the effective and efficient management of multimedia (MM) data, with particular attention to the problems of MM data representation, MM data retrieval models, and interaction paradigms between the user and the MM system (both for purposes of data presentation and exploration). We first consider architectures of traditional ("standalone") MM systems; then, we concentrate on more complex MM services, by primarily focusing on search engines, social networks and recommendation systems.
Course contents
Basics on Multimedia Data Management
Multimedia data and content representations
MM data and applications
MM data coding
MM data content representation
How to find MM data of interest
Description models for complex MM objects
Similarity measures for MM data content
MM Data Base Management Systems
Efficient algorithms for MM data retrieval
MM query formulation paradigms
Sequential retrieval of MM data
Index-based retrieval of MM data
Automatic techniques for MM data semantic annotations
Browsing MM data collections
MM data presentation
User interfaces
Visualization paradigms
Dimensionality reduction techniques
Result accuracy, use cases and real applications
Quality of the results and relevance feedback techniques
Use cases and demos of some applications
Multimedia Data on the Web
Web search engines
Graph-based data: semantic Web and social networks
Web recommender systems
N.B. For students of the second cycle degree programmes (LM) in Artificial intelligence and Computer Science, the "Efficient algorithms for MM data retrieval" part of the program is not required.
84401 - Context-Aware Systems
Learning outcomes
At the end of the course, the student is able to design, deploy and evaluate ubiquitous systems and mobile applications able to adapt their behaviors to the context characteristics and to the current location/activity of the user. At the end of the course, the student: -knows the fundamental concepts of context-aware computing, and the main techniques for the localization of users/devices and the human activity recognition; -knows the fundamental models of context-data representation and managing; - knows the main middleware and software architectures in order to deploy adaptive and ubiquitous applications and services
Course contents
The course addresses the design and deployment of ubiquitous and context-aware services and applications, made possible by the pervasive diffusion on the market of devices able to sense the environment and to analyze the sensed data. The course program is structured in two main parts. The first part illustrates the definition of "context" and context-aware systems, focusing on the design and implementation of location-aware and activity-aware systems. Special focus will be given to the spatial data management, by illustrating the main technologies for indoor/outdoor positioning, mapping APIs, geo-data storage and location intelligence.The second part will present the lifecycle of distributed context-aware applications by focusing on mobile edge computing systems where the allocation of workloads take into account contextual data, such as the user position. To this aim, we will introduce edge-computing technologies and frameworks for software containerization (e.g., Docker), task orchestration (e.g., Docker Swarm and Kubernates), and workload/service migration based on users' mobility. In the following, we provide a brief summary of the course program:
Introduction and definition of context and context-awareness
Use case of context-aware systems
Location-aware systems
Location-based services (LBS)
Positioning technologies
Mapping APIs
Spatial database
Location intelligence
Privacy in LBS
Activity-aware systems
Human Activity Recognition (HAR): enabling technologies
Supervised AI/ML techniques for HAR systems
Mobile edge computing
Architectures and applications of mobile edge computing
Software containerization (Docker)
Workload/service orchestration (Docker Swarm, Kubernates)
Metrics for context-aware/location-aware workload allocation
90720 - Usability & User Experience Design
Learning outcomes
At the end of the course the student is able to design, implement and evaluate software systems with respect to the dimensions of practicality, experience, affection, meaning and value that they may have on the target audience. Characteristics such as ease of use, usefulness and efficiency are fundamental for the positive evaluation of the user experience of the system. The student will be able to focus the functional analysis of the software on the characteristics and needs of the target audience, will be able to drive the development process so as to guarantee a constant connection between the technical and implementation features and the expectation of the audience, and will be able to evaluate whether and according to which metrics a software satisfies these expectations.
Course contents
Teaching will be mostly in English (some explanations will be repeated in Italian if needed and when asked). The exam will be allowed in both Italian and English. The course content is divided in distinct parts:
Background The evolution of the discipline from Human Computer Interaction to User Experience Design. A description of its scope: the human, the computer, and their interaction.
Usability analysis and design A systematic discussion of the techniques and standards for the management of the process of user experience design, with particular attention to the phases of usability analysis (with and without the participation of users) and the user- and goal-oriented usability design methodologies.
Guidelines, patterns and methods for usability design A discussion, with historical aspects, of the framework on which the concrete aspects of usability design is based. we will also give strong attention to the problem of usability for web applications and mobile apps.
Applications of User Experience Design to complex systems (e.g. AI Systems): short module reserved to students in Artificial Intelligence, optional for the other students.
30214 - Logical basis of Computer Science
Learning outcomes
At the end of this course, students have acquired the logical foundations of areas of theoretical computer science such as ambda-calculus, rewriting systems, computational complexity, database theory
and formal methods. He is able to encode programming constructs in lambda-calculus, to describe simple algorithms in logical form, to
express queries to databases in predicative form and to specify properties of reactive systems as formulas of temporal logic.
Course contents
First module:
-
Propositional and First-Order Logic (recall)
Syntax, Semantics, Soundness and Completeness, Undecidability of First Order Logic
-
Untyped Lambda Calculus
Syntax and operational semantics. The lambda-calculus as a programming language: evaluation strategies and encodings of data types; Turing completeness
-
Meta-theory of untyped lambda calculus
Confluence.
-
Simply typed lambda-calculus and Curry-Howard isomorphism
Curry’s style and Church’s style syntaxes. Isomorphism with propositional minimal logic. Type checking and type inference algorithms.
-
Meta-theory of simply typed lambda-calculus
Weak and strong normalization theorems
-
Curry-Howard isomorphism and extensions to the typing system
Products and coproduts, empty and singleton types. Parametric polymorphisms (minimal introduction to System-F). Minimal introduction to dependent types and Hindley-Milner polymorphisms.
Second module:
-
Logic and Databases
Relational algebra, FO as Query Language, Cilindrical Algebras, Implementation aspects
-
Logic and Computational Complexity
Finite structures and decision problems. NP and PSPACE characterization via first order logics. SAT Solving.
-
Logic and Formal Methods
LTL and CTL: syntax and semantics. Reactive systems and their verifications. Model Checking.
-
Logic and Artifcial Intelligence
Epistemic logic: syntax, semantics, applications
B5534 - COMPUTATIONAL IMAGING
Learning outcomes
At the end of the course the student knows about computational imaging methods and applications with a focus on solving inverse problems in imaging, such as denoising, deconvolution, single-pixel imaging, and others. He can solve some of the previous imaging problems by using both classic optimization algorithms and modern data-driven approaches with convolutional neural networks (CNNs).
Course contents
-
Basics on image processing
-
Elementary operations on images: Denise, enhancement, super-resolution, segmentation.
-
Mathematical tools for image processing: filters, discrete Fourier transform
-
Inverse problems in imaging. Ill posedness.
-
Statistical approach and regularization.
-Data driven approach: convolutional and generative neural networks in inverse problems in imaging/
-
A case study among debtor, super-resolution, segmentation, tomographic image reconstruction.
-
Practical lessons using Python and its libraries.
70090 - Computer Graphics
Learning outcomes
At the end of the course, students know fundamentals of 3D computer graphics (polygonal modeling and real-time rendering).
In particular, they are able to model and render scenes making use of suitable open source softwares and libraries.
Course contents
Introduction to two- and three-dimensional computer graphics. The graphics pipeline: modelling and rendering. Fundamentals of input and display devices, 3D scanning, 3D printing. Scan conversion of geometric primitives, two- and three-dimensional transformations and clipping, windowing techniques, three-dimensional viewing and perspective. Basic algorithms for CG clipping, scan-conversion, hidden surface removal, ray tracing. Illumination and color models, local and global shading models, and real-time rendering methods. Polygonal meshes, parametric curves and surfaces, splines and NURBS , subdivision curves and surfaces. Surface reconstructions from 3D data set. Virtual/Augmented Reality. Digital Animation techniques. OpenGL/GLSL, and 3-D modeling tools. Emphasis is on the development of practical skills in using software Blender, graphics libraries and tools. Programming using C/C++ and OpenGL/GLSL for GPU shader.
12569 - Computational Mathematics
Learning outcomes
At the end of the course, the student knows varied techniques and tools at the basis of the computational solution of problems from scientific calculus. She/He is able to solve applicative problems, from interdisciplinary study or didactic
areas, in an integrated, symbolic and numeric, software environment.
Course contents
Introduction to the Mathematica environment: Kernel, FrontEnd, notebook.
Introduction to programming within Mathematica.
Graphics and visualization tools.
Employing the system capabilites to analize and solve a particular applied problem, of didactical interest to the student, via a package development.
30216 - Probability Models
Learning outcomes
At the end of the course the student knows elements of some advanced probability theories with applications to computer science, such as Markov chains with discrete and continuous time. She / he is able to analyze some simple stochastic systems related to applications.
Course contents
Recaps of basic probability topics in discrete spaces.
Probability spaces, random variables, independence, measurability, expected value and conditional expected value. Convergence and law of large numbers.
Stochastic processes in discrete time and discrete spaces.
General notions. Filtrations. Martingales and random walks.
Math finance in discrete time.
One-period market models. Valuation and hedging of derivatives. Fundamental theorems of asset pricing. Multi-periodal models. Binomial model and extension.
Markov chains.
Introduction to Markov chains. Construction off Markov chains. State classifications. Stationary distributions and convergence.
Stochastic control.
Formulation of stochastic control problems in discrete time. Dynamic programming: Bellman’s equation and verification theorems. Applications.
93467 - Cryptography
Learning outcomes
At the end of the course, the student knows the basics of modern cryptography and some techniques for the analysis of security protocols. He or she can verify the absence of security bugs on simple protocols
Course contents
This course deals with some fundamental notions on modern cryptography and some techniques for the formal verification of cryptographic protocols. In addition to many new concepts, we discuss some cryptographic techniques already seen in previous courses, studying the most interesting properties . The main emphasis of this course is on the theoretical aspects of cryptography: it attempts to give a clear and accurate account on security, in order to give students the tools to assess (and not just to use) cryptographic techniques . In other words, we focus a lot on the "why" maybe putting the "how" behind the scenes. More specifically, we seek to answer questions such as the following: when a cryptographic technique can be consider safe? Is it possible to formally prove that a cryptographic technique is secure ? Is it possible to analyze the security of a cryptographic protocol in an automatic or semi-automatic way?
Topics covered include perfect security, pseudorandomness, public and private key ciphers, and the symbolic model.
91250 - DEEP LEARNING
Learning outcomes
The course is centered on advanced Machine Learning techniques, with particular emphasis on Deep Learning.
At the end of the course, the student understands the foundational ideas, the most recent advances and the potential applications of deep neural systems. The student lerans supervised and unsupervised techniques, basic neural topologies, methods for visualizing and understanding the behavior on neural nets, adversarial and generative techniques, reinforcement learning, and recurrent networks. The student is able to apply such technologies to address classification, interpretation and data mining problems in concrete applicative domains, comprising computer vision and natural languages processing.
Course contents
The course begins with an introduction to Neural Networks and Deep Learning, focusing on their typical training mechanism: the backpropagation algorithm.
We will discuss the main types of neural networks: feedforward, convolutional, and recurrent, providing concrete examples and examining architectures that have proven useful for image processing, localization, segmentation, style transfer, text processing, and many other applications.
Techniques for visualizing the behavior of hidden neural units will be explored, including those related to deep dreams and inceptionism. We will also cover techniques for fooling neural networks and modern generative techniques, including recent diffusion models.
The final part of the course will be dedicated to an introduction to Deep Reinforcement Learning, with particular attention to designing agents for video games, autonomous driving, and other situations that require complex and adaptive intelligent behaviors.
Prerequisites:
Knowledge of the following subjects is assumed:
Machine Learning
Analysis
Algebra
Python
81942 - Scalable and Cloud Programming
Learning outcomes
At the end of the course the students will know:
-
the main problems concerning the realization of highly parallel and distributed programs:
-
a programming style, based on functional and object-oriented programming, useful to develop scalable applications, namely applications that can be easily deployed over different computing architectures, with different amounts of computing resources.
In particular, the students will be able to: - develop an application by using the programming language Scala and the platform Spark and deploy it on cloud computing systems like those provided by Amazon Web Services (AWS) and Google Cloud Platform (GCP).
Course contents
Analisys of the problems concerning the realization of highly concurrent and distributed applications.
Scalable approaches to the parallelization and distribution of both data and processes, like the MapReduce programming model.
Functional approach to the realization of scalable systems through languages and frameworks like Scala and Spark.
Cloud platforms for the execution of scalable applications like Amazon Web Services (AWS) and Google Cloud Platform (GCP).
81672 - Emerging Programming Paradigms
Learning outcomes
In recent years there is a renaissance of the development of programming language, motivated by the introduction of multicore processors and the need of finding simpler way to exploit them. Go, Scala, Erlang, Clojure, Rust are examples of languages that are interesting to the industrial world and that are rooted into both new and old programming paradigms. At the end of the course the student will know the main emerging programming paradigms, how to critically weight their weak and strong characteristics and she will have acquired new programming skills.
Course contents
The course introduces the student to several programming languages, highlighting the principles and characteristics that are the strong points or at least that are peculiar to the language (e.g. error management in Erlang, memory management in Rust, etc.).
We will also see recurrent problems in programming language designs, comparing the linguistic solutions available.
The list of topics will include at least:
-
actor based programming and its implementation
-
blockchains and smart contracts
-
functional constructs and their implementation: closures, algebraic data types, pattern matching, extensible records, polymorphic variants
-
generalized algebraic data-types
-
different flavors of polymorphisms and their implementation: parametric polymorphism vs bounded polymorphism vs dynamic dispatching
-
traits, type classes
-
monads and monad transformers
81613 - Business Intelligence
Learning outcomes
The students is expert in the design, implementation and information systems management for intelligence of decisions that melt on the management knowledge of analytical nature. The second part (30 hours) of the course is developed in the computing laboratory using the system language of SAS System and SAS Enterprise Miner. At the end of the course, the student knows: - Customer relationship management (CRM) and Customer Intelligence; - Problems of evaluation of the advertising impact; - Oriented information system implementation for the analytical approach to the Business Intelligence; - Software realization for Analytical Business Intelligence projects and statistical data mining.
Course contents
Supervised and unsupervised classification Multivariate analysis: principal component analysis, correspondence analysis, discriminant analysis