Contenuto principale della pagina Menu di navigazione Modulo di ricerca su uniPi Modulo di ricerca su uniPi

INFORMATICA

Corso di laurea magistrale

Piano di Studi


Curricula:


KD - Data and Knowledge: Science and Technologies

Primo anno

  • Bioinformatics (6 cfu)

    • This course has the goal to give the student an overview of algorithmic methods that have been conceived for the analysis of genomic sequences, and to be able to critically observe the practical impact of algorithmic design on real problems with relevant applications. The exam, besides the obvious goal to evaluate the students understanding of the course contents, is additionally meant as a chance to learn how a scientific paper is like, and how to make an oral presentation on scientific/technical topics, as well as to design it for a specific audience.
      • A brief introduction to molecular biology
      • Sequences Alignments
      • Pattern Matching
      • Fragment Assembly
      • New Generation Sequencing
      • Motifs Extraction

  • Computational mathematics for learning and data analysis (9 cfu)

    • The course introduces some of the main techniques for the solution of numerical problems that find widespread use in fields like data analysis, machine learning, and artificial intelligence. These techniques often combine concepts typical of numerical analysis with those proper of numerical optimization, since numerical analysis tools are essential to solve optimization problems, and, vice-versa, problems of numerical analysis can be solved by optimization algorithms. The course has a significant hands-on part whereby students learn how to use some of the most common tools for computational mathematics; during these sessions, specific applications will be briefly illustrated in fields like regression and parameter estimation in statistics, approximation and data fitting, machine learning, artificial intelligence, data mining, information retrieval, and others.
      - Multivariate and matrix calculus
      - Matrix factorization, decomposition and approximation
      - Eigenvalue computation
      - Nonlinear optimization: theory and algorithms
      - Least-squares problems and data fitting
      - MATLAB and other software tools (lab sessions with applications)

  • Data Mining (9 cfu)

    • This course provides a structured introduction to the key methods of data mining and the design of knowledge discovery processes. Organizations and businesses are overwhelmed by the flood of data continuously collected into their data warehouses as well as sensed by all kinds of digital technologies - the web, social media, mobile devices, the internet of things. Traditional statistical techniques may fail to make sense of the data, due to the inherent complexity and size. Data mining, knowledge discovery and statistical learning techniques emerged as an alternative approach, aimed at revealing patterns, rules and models hidden in the data, and at supporting the analytical user to develop descriptive and predictive models for a number of challenging problems.
      • Fundamentals of data mining and of the knowledge discovery process from data.
      • Design of data analysis processes.
      • Statistical exploratory analytics for data understanding.
      • Dimensionality reduction and Principal Component Analysis.
      • Clustering analysis with centroid-based, hierarchical and density-based methods, predictive analytics and classification models (including decision trees, bayesian, rule-based, kernel-based, SVM, random forest and ensemble methods), pattern mining and association rule discovery.
      • Validation and interpretation of discovered patterns and models within statistical frameworks.
      • Design and development of data mining processes using state of the art technology, including KNIME, Python, and R, within a wrap-up project aimed at using and possibly modifying the DM tools and libraries learned in class.

  • Algorithm engineering (9 cfu)

    • Study, design and analyze advanced algorithms and data structures for the efficient solution of combinatorial problems involving all basic data types, such as integer sequences, strings, (geometric) points, trees and graphs. The design and analysis will involve several models of computation — such as RAM, 2-level memory, cache-oblivious, streaming — in order to take into account the architectural features of modern PCs and the availability of Big Data upon which algorithms could work on. We will add to such theoretical analysis several engineering considerations spurring from the implementation of the proposed algorithms and from experiments published in the literature
      · Design of algorithms for massive datasets: disk aware or cache oblivious
      · Design of advanced data structures in hierarchical memories for atomic or string data
      · Data compression for structured and unstructured data
      · Algorithms for large graphs
      · Engineering considerations about the implementation of algorithms and data structures

  • Advanced databases (9 cfu)

    • Database systems occupy a central position in our information-based society, and computer scientist and database application designers should have a good knowledge about both the theoretical and the engineering concepts that underline these systems to ensure the application performance desired. The student who completes the course successfully will demonstrate advanced technical knowledge of the main issues related to the implementation of both classical centralized relational database systems for operational and OLAP processing and of recent advances in non-relational data models (columnar, document, key-value, graph) and scalable distributed architectures. The skills provided will make the student a sophisticated developer of high-performance database applications.
      • Internals of relational database management systems.
      • Data Warehousing management systems and On-Line Analytical Processing.
      • Extract-Transform-Load and query/reporting in OLAP systems.
      • Beyond SQL: NoSQL data management systems for big data.
      • Distributed data processing and the Map-Reduce paradigm

  • Parallel and Distributed Systems: paradigms and models (9 cfu)

    • The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. Taking into account structured programming models (algorithmical skeletons, parallel design patterns) as well as those models based on components and services, all the problems related to the functional (expressive power, modularity and reuse) and non functional (performance, fault tolerance, adaptivity) concerns will be considered. In the last part protocols, features and issues related to wireless, multimedia and peer-to-peer architectures will be introduced along with the implications related to their usage to implement parallel/distributed applications.
      -Parallel and distributed programming paradigms
      -Structured programming
      -Components
      -Workflows
      -Implementation models
      -Posix-TCP/IP-SSH/SCP
      -RPC/RMI
      -Distributed Virtual Shared Memory
      -Parallel Virtual File Systems
      -“Middleware” systems (Globus, gLite, ...)
      -Distributed system architectures
      -Wireless networks
      -Multimedia networks
      -Peer-to-peer architectures
  • Information Retrieval (6 cfu)

    • In this course we will study, design and analyze (theoretically and experimentally) software tools for IR-applications dealing with unstructured (raw data), structured (DB-centric) or semi-structured data (i.e. HTML, XML). We will mainly concentrate on the basic components of a modern Web search engine, by examining in detail the algorithmic solutions currently adopted to implement its main software modules. We will also discuss their performance and/or computational limitations, as well as introduce measures for evaluating their efficiency and efficacy. Finally, we will survey some algorithmic techniques which are frequently adopted in the design of IR-tools managing large datasets.
      -Search engines
      -Crawling, Text analysis, Indexing, Ranking
      -Storage of Web pages and (hyper-)link graph
      -Results processing and visualization
      -Other data types: XML, textual DBs
      -Data processing for IR tools
      -Data streaming
      -Data sketching
      -Data compression
      -Data clustering (sketch)


  • 6 cfu a scelta nel gruppo KD-1 affini da 6 cfu al primo anno

    • Insegnamenti affini da 6 cfu nel curriculum KD attivati al primo anno
    • Scientific and large data visualization (6 cfu)

      • The goal of this course is to provide an introduction to main topic of 3D computer graphics both in theory and practice. A significant part of the course will involve the realization of a project involving mostly surface modeling and processing and interactive rendering. Topics covered will include: - Modeling: Data structures for representing surfaces with simplicial complexes - Modeling: Data structure for spatial indexing - Modeling: High level frameworks for the representation of structured scene and environments - Rendering: The basic projective rendering pipeline. Hardware architectures for Rendering - Rendering: Algorithms for Global Illumination and photorealistic rendering. - Rendering: Shading Languages and advanced interactive rendering technique
    • Peer to peer systems and blockchains (6 cfu)

      • Objectives - Introduction of the basic technologies for the development of highly distributed systems and of some real scenarios exploiting them. Presentation of the disruptive technology of blockchains, and its numerous applications to different fields. P2P Topologies (2 CFU) - Peer to Peer (P2P) systems: general concepts (1/2 CFU) - Unstructured Overlays: Flooding, Random Walks, Epidemic Diffusion (1/2 CFU) - Structured Overlays: Distributed Hash Tables (DHT), Routing on a DHT (1/2 CFU) - Case Studies: Bittorrent as a Content Distribution Network: KAD implementation of the Kademlia DHT, game-based cooperation (1/2 CFU) Complex Network for the analysis of P2P systems (2 CFU) - Network models (1 CFU) - Case Studies: Darknet Freenet (1 CFU) Cryptocurrencies and Blockchains (5 CFU) - basic concepts: (1 CFU) - the Bitcoin protocol (2 CFU) Bitcoin Extensions/alternatives (1/2 CFU) - overview of altcoins - sidechains - the Stellar Consensus Protocol Further applications of blockchains (1 CFU) - Ethereum: programming smart contracts - Blockchain 1.0: cryptocurrencies - Blockchain 2.0: financial instruments built on cryptocurrencies - Blockchain 3.0: applications beyond cryptocurrencies (DNS, lotteries, voting, IoT...) Legal aspects of cryptocurrencies (1/2 CFU)
    • ICT infrastructures (6 cfu)

      • The goal of the course is to introduce students to the computing infrastructures powering cloud services. At the end of the course a student should be able to understand the general organization of a datacenter and the logical infrastructure that power virtualization and containers. The course starts from physical infrastructures such as power and datacenter organization. The network fabric is introduced, with particular focus on SDN techniques used to balance East-West and North-South traffic. Storage and compute are then introduced with special attention to hyperconverged systems. - Physical infrastructures (datacenters, energy and PUE, SCADAs) (1 CFU) - Networking (SDN and overlay, fabrics (RDMA, OPA, InfiniBand), monitoring techniques) (2 CFU) - Storage (SDS) (1 CFU) - Computing (hypervisor) (2 CFU)
    • Big Data Analytics (6 cfu)

      • In our digital society, every human activity is mediated by information technologies. Therefore, every activity leaves digital traces behind, that can be stored in some repository. Phone call records, transaction records, web search logs, movement trajectories, social media texts and tweets, … Every minute, an avalanche of “big data” is produced by humans, consciously or not, that represents a novel, accurate digital proxy of social activities at global scale. Big data provide an unprecedented “social microscope”, a novel opportunity to understand the complexity of our societies, and a paradigm shift for the social sciences. This course is an introduction to the emergent field of big data analytics and social mining, aimed at acquiring and analyzing big data from multiple sources to the purpose of discovering the patterns and models of human behavior that explain social phenomena. The focus is on what can be learnt from big data in different domains: mobility and transportation, urban planning, demographics, economics, social relationships, opinion and sentiment, etc.; and on the analytical and mining methods that can be used. An introduction to scalable analytics is also given, using the “map-reduce” paradigm. 1. Big data sources. - Open (linked) data, Web activity data, Social network data, Social media data, Mobile phone data, Navigation GPS data, Commercial transaction data, Tourism-related data, Crowdsourcing / crowdsensing. 2. Big data analytics and social mining methods: data preprocessing, exploratory data analysis, correlation analysis, feature selection, semantic enrichment, pattern discovery, classification and prediction, clustering and segmentation for: - the discovery of individual social pro'les - the analysis of collective behavior - the discovery of emotional content of text and sentiment analysis 3. Big data analytics domains - Mobility and transportation - Nowcasting of socio-economic indicators of progress, happiness, etc. - Twitterology and nowcasting of social mood and trends - Tourism 4. Ethical issues of big data analytics - Privacy and personal data protection - Privacy-preserving analytics - Social responsibility of data scientists 5. Scalable data analytics - Paradigms of NO-SQL databases - Data analysis processes with the “map-reduce” paradigm
    • Computational models for complex systems (6 cfu)

      • The objective of this course is to train experts in systems modelling and analysis methodologies. Of course, this will require understanding, to some degree of detail, the mathematical and computational techniques involved. However, this will be done with the aim of shaping good modellers, that know the advantages/disadvantages/risks of the different modelling and analysis methodologies, that are aware of what happens under the hood of a modelling and analysis tool, and that can develop their own tools if needed. The course will focus on advanced modelling approaches that combine different paradigms and analysis techniques: from ODEs to stochastic models, from simulation to model checking. Case studies from population dynamics, biochemistry, epidemiology, economy and social sciences will be analysed. Moreover, synergistic approaches that combine computational modelling techniques with data-driven methodologies will be outlined. - Modelling with ODEs: examples - (Timed and) Hybrid Automata: definition and simulation techniques - Stochastic simulation methods (Gillespie’s algorithm and its variants) - Hybrid simulation methods (stochastic/ODEs) - Rule-based modelling - Probabilistic/stochastic model checking: principles, applicability and tools - Statistical model checking - Process mining (basic notions)
    • Social and ethical issues in information technology (6 cfu)

      • The progress in AI research makes it timely to focus not only on making AI more capable, but also on maximizing the societal benefit of AI [from Research Priorities for Robust and Beneficial Artificial Intelligence, an open letter]. This concern is by necessity interdisciplinary, because it involves both society and AI. It ranges from economics, law and philosophy to computer security, formal methods and, of course, various branches of AI itself. The course will be organized as a series of seminars on different hot topics. Contents may include: • Philosophical implications of AI o Technological limitations to Ai o Biological limitations to human intelligence • Economic impact of emerging technologies o The disappearance of intellectual jobs o The rise of the corporate colossus o The power of data in the hands of big companies and auto-regulations (Partnership on AI) • Legal and ethical issues o Privacy, transparency, biases and fairness, data lock-in o Autonomous vehicles and weapons o Machines for human care and threats to human dignity: customer care, robot companions … • Trustworthiness of the technologies o Safety, robustness, and control • Future scenarios o Superintelligence implications
  • Secondo anno

  • Thesis (24 cfu)


  • Free choice (9 cfu)

    • Free choice exam to be approved by the Academic Board
  • 18 cfu a scelta nel gruppo KD-2 affini da 9 cfu al secondo anno

    • Insegnamenti affini da 9 cfu del curriculum KD attivati al secondo anno
    • ICT risk assessment (9 cfu)

      • At the end of this course, the student should be able to discover and analyze the weaknesses and the vulnerabilities of a system to evaluate in a quantitative and formal way the risk it poses. The student should be able to select and deploy a cost-effective set of countermeasures at the various implementation levels to improve the overall ability of the system to withstand its attackers. Focus of the course is on a predictive approach where risk assessment and management is a step in the system design. The student should also be able to know the various tools that can support the assessment and simplify both the assessment and the selection of countermeasures. In this framework, the focus on cloud computing makes it possible to cover the most complex assessment. • Risk Assessment and Management of ICT Systems 3 CFU o Vulnerabilities/Attacks 1 CFU o Countermeasures 1 CFU o Tools for Automating Assessment & Management 1 CFU • Security of Cloud Computing 6 CFU o Economic Reasons/Deployment Models/ Service Models 1 CFU o Virtualization and TCM 1 CFU o New Vulnerabilities 1 CFU o New Attacks 1 CFU o New Countermeasures 1 CFU o Certification of Cloud Provider 1 CFU
    • Machine learning (9 cfu)

      • We introduce the principles and the critical analysis of the main paradigms for learning from data and their applications. The course provides the Machine Learning basis for both the aims of building new adaptive Intelligent Systems and powerful predictive models for intelligent data analysis. - Computational learning tasks for predictions, learning as function approximation, generalization concept. - Linear models and Nearest-Neighbors (learning algorithms and properties, regularization). - Neural Networks (MLP and deep models, SOM). - Probabilistic graphical models. - Principles of learning processes: elements of statistical learning theory, model validation. - Support Vector Machines and kernel-based models. - Introduction to applications and advanced models. Applicative project: implementation and use of ML/NN models with emphasis to the rigorous application of validation techniques.
    • Mobile and cyber-physical systems (9 cfu)

      • The course covers mobile and cyber-physical systems by providing an overview of issues, solutions, architectures, technologies and standards. It offers to the students an overall, coherent view of the organization of internet of things (IoT) systems, from the networking and sensing levels to the applications. Specifically, it shows how mobile, heterogeneous elements (from low-end sensors to high-end devices) form pervasive networks integrated in the internet and how they interact among themselves and with the surrounding physical world.The course is organized in three parts. The first part (3 CFU) introduces the principles of wireless communications and network architectures for mobility management. The second part (4 CFU) presents the foundations of signal processing and sensing and discusses the applications of sensor networks. The third part (2 CFU) provides an overview of the main standards and platforms of the IoT. • Foundations of wireless technologies and mobility management (3 CFU) 5G mobile, ad hoc networks, mobile social networks, IEEE 802.x standards • Cyber-physical systems (4 CFU) Foundations of signal processing, wireless sensor networks, energy harvesting, localization, elements of embedded programming • Internet of Things (2 CFU) ZigBee, Bluetooth, sensor network gateways, IoT platforms & standards (OneM2M, FIWARE, COAP, MQTT)
    • Human language technologies (9 cfu)

      • The course presents principles, models and the state of the art techniques for the analysis of natural language, focusing mainly on statistical machine learning approaches and Deep Learning in particular. Students will learn how to apply these techniques in a wide range of applications using modern programming libraries. - Formal and statistical approaches to NLP. - Statistical methods: Language Model, Hidden Markov Model, Viterbi Algorithm, Generative vs Discriminative Models - Linguistic essentials (tokenization, morphology, PoS, collocations, etc.). - Parsing (constituency and dependency parsing). - Processing Pipelines. - Lexical semantics: corpora, thesauri, gazetteers. - Distributional Semantics: Word embeddings, Character embeddings. - Deep Learning for natural language. - Applications: Entity recognition, Entity linking, classification, summarization. - Opinion mining, Sentiment Analysis. - Question answering, Language inference, Dialogic interfaces. - Statistical Machine Translation. - NLP libraries: NLTK, Theano, Tensorflow.
  • 6 cfu a scelta nel gruppo KD-2 affini da 6 cfu al secondo anno

    • Insegnamenti affini da 6 cfu nel curriculum KD attivati al secondo anno
    • Scientific and large data visualization (6 cfu)

      • The goal of this course is to provide an introduction to main topic of 3D computer graphics both in theory and practice. A significant part of the course will involve the realization of a project involving mostly surface modeling and processing and interactive rendering. Topics covered will include: - Modeling: Data structures for representing surfaces with simplicial complexes - Modeling: Data structure for spatial indexing - Modeling: High level frameworks for the representation of structured scene and environments - Rendering: The basic projective rendering pipeline. Hardware architectures for Rendering - Rendering: Algorithms for Global Illumination and photorealistic rendering. - Rendering: Shading Languages and advanced interactive rendering technique
    • Peer to peer systems and blockchains (6 cfu)

      • Objectives - Introduction of the basic technologies for the development of highly distributed systems and of some real scenarios exploiting them. Presentation of the disruptive technology of blockchains, and its numerous applications to different fields. P2P Topologies (2 CFU) - Peer to Peer (P2P) systems: general concepts (1/2 CFU) - Unstructured Overlays: Flooding, Random Walks, Epidemic Diffusion (1/2 CFU) - Structured Overlays: Distributed Hash Tables (DHT), Routing on a DHT (1/2 CFU) - Case Studies: Bittorrent as a Content Distribution Network: KAD implementation of the Kademlia DHT, game-based cooperation (1/2 CFU) Complex Network for the analysis of P2P systems (2 CFU) - Network models (1 CFU) - Case Studies: Darknet Freenet (1 CFU) Cryptocurrencies and Blockchains (5 CFU) - basic concepts: (1 CFU) - the Bitcoin protocol (2 CFU) Bitcoin Extensions/alternatives (1/2 CFU) - overview of altcoins - sidechains - the Stellar Consensus Protocol Further applications of blockchains (1 CFU) - Ethereum: programming smart contracts - Blockchain 1.0: cryptocurrencies - Blockchain 2.0: financial instruments built on cryptocurrencies - Blockchain 3.0: applications beyond cryptocurrencies (DNS, lotteries, voting, IoT...) Legal aspects of cryptocurrencies (1/2 CFU)
    • ICT infrastructures (6 cfu)

      • The goal of the course is to introduce students to the computing infrastructures powering cloud services. At the end of the course a student should be able to understand the general organization of a datacenter and the logical infrastructure that power virtualization and containers. The course starts from physical infrastructures such as power and datacenter organization. The network fabric is introduced, with particular focus on SDN techniques used to balance East-West and North-South traffic. Storage and compute are then introduced with special attention to hyperconverged systems. - Physical infrastructures (datacenters, energy and PUE, SCADAs) (1 CFU) - Networking (SDN and overlay, fabrics (RDMA, OPA, InfiniBand), monitoring techniques) (2 CFU) - Storage (SDS) (1 CFU) - Computing (hypervisor) (2 CFU)
    • Big Data Analytics (6 cfu)

      • In our digital society, every human activity is mediated by information technologies. Therefore, every activity leaves digital traces behind, that can be stored in some repository. Phone call records, transaction records, web search logs, movement trajectories, social media texts and tweets, … Every minute, an avalanche of “big data” is produced by humans, consciously or not, that represents a novel, accurate digital proxy of social activities at global scale. Big data provide an unprecedented “social microscope”, a novel opportunity to understand the complexity of our societies, and a paradigm shift for the social sciences. This course is an introduction to the emergent field of big data analytics and social mining, aimed at acquiring and analyzing big data from multiple sources to the purpose of discovering the patterns and models of human behavior that explain social phenomena. The focus is on what can be learnt from big data in different domains: mobility and transportation, urban planning, demographics, economics, social relationships, opinion and sentiment, etc.; and on the analytical and mining methods that can be used. An introduction to scalable analytics is also given, using the “map-reduce” paradigm. 1. Big data sources. - Open (linked) data, Web activity data, Social network data, Social media data, Mobile phone data, Navigation GPS data, Commercial transaction data, Tourism-related data, Crowdsourcing / crowdsensing. 2. Big data analytics and social mining methods: data preprocessing, exploratory data analysis, correlation analysis, feature selection, semantic enrichment, pattern discovery, classification and prediction, clustering and segmentation for: - the discovery of individual social pro'les - the analysis of collective behavior - the discovery of emotional content of text and sentiment analysis 3. Big data analytics domains - Mobility and transportation - Nowcasting of socio-economic indicators of progress, happiness, etc. - Twitterology and nowcasting of social mood and trends - Tourism 4. Ethical issues of big data analytics - Privacy and personal data protection - Privacy-preserving analytics - Social responsibility of data scientists 5. Scalable data analytics - Paradigms of NO-SQL databases - Data analysis processes with the “map-reduce” paradigm
    • Computational models for complex systems (6 cfu)

      • The objective of this course is to train experts in systems modelling and analysis methodologies. Of course, this will require understanding, to some degree of detail, the mathematical and computational techniques involved. However, this will be done with the aim of shaping good modellers, that know the advantages/disadvantages/risks of the different modelling and analysis methodologies, that are aware of what happens under the hood of a modelling and analysis tool, and that can develop their own tools if needed. The course will focus on advanced modelling approaches that combine different paradigms and analysis techniques: from ODEs to stochastic models, from simulation to model checking. Case studies from population dynamics, biochemistry, epidemiology, economy and social sciences will be analysed. Moreover, synergistic approaches that combine computational modelling techniques with data-driven methodologies will be outlined. - Modelling with ODEs: examples - (Timed and) Hybrid Automata: definition and simulation techniques - Stochastic simulation methods (Gillespie’s algorithm and its variants) - Hybrid simulation methods (stochastic/ODEs) - Rule-based modelling - Probabilistic/stochastic model checking: principles, applicability and tools - Statistical model checking - Process mining (basic notions)
    • Social and ethical issues in information technology (6 cfu)

      • The progress in AI research makes it timely to focus not only on making AI more capable, but also on maximizing the societal benefit of AI [from Research Priorities for Robust and Beneficial Artificial Intelligence, an open letter]. This concern is by necessity interdisciplinary, because it involves both society and AI. It ranges from economics, law and philosophy to computer security, formal methods and, of course, various branches of AI itself. The course will be organized as a series of seminars on different hot topics. Contents may include: • Philosophical implications of AI o Technological limitations to Ai o Biological limitations to human intelligence • Economic impact of emerging technologies o The disappearance of intellectual jobs o The rise of the corporate colossus o The power of data in the hands of big companies and auto-regulations (Partnership on AI) • Legal and ethical issues o Privacy, transparency, biases and fairness, data lock-in o Autonomous vehicles and weapons o Machines for human care and threats to human dignity: customer care, robot companions … • Trustworthiness of the technologies o Safety, robustness, and control • Future scenarios o Superintelligence implications

  • ICT - ICT Solutions Architect

    Primo anno

  • Peer to peer systems and blockchains (6 cfu)

    • Objectives - Introduction of the basic technologies for the development of highly distributed systems and
      of some real scenarios exploiting them. Presentation of the disruptive technology of blockchains, and its numerous applications to different fields.
      P2P Topologies (2 CFU)
      - Peer to Peer (P2P) systems: general concepts (1/2 CFU)
      - Unstructured Overlays: Flooding, Random Walks, Epidemic Diffusion (1/2 CFU)
      - Structured Overlays: Distributed Hash Tables (DHT), Routing on a DHT (1/2 CFU)
      - Case Studies: Bittorrent as a Content Distribution Network: KAD implementation of the Kademlia DHT, game-based cooperation (1/2 CFU)
      Complex Network for the analysis of P2P systems (2 CFU)
      - Network models (1 CFU)
      - Case Studies: Darknet Freenet (1 CFU)
      Cryptocurrencies and Blockchains (5 CFU)
      - basic concepts: (1 CFU)
      - the Bitcoin protocol (2 CFU)
      Bitcoin Extensions/alternatives (1/2 CFU)
      - overview of altcoins
      - sidechains
      - the Stellar Consensus Protocol
      Further applications of blockchains (1 CFU)
      - Ethereum: programming smart contracts
      - Blockchain 1.0: cryptocurrencies
      - Blockchain 2.0: financial instruments built on cryptocurrencies
      - Blockchain 3.0: applications beyond cryptocurrencies (DNS, lotteries, voting, IoT...)
      Legal aspects of cryptocurrencies (1/2 CFU)

  • Mobile and cyber-physical systems (9 cfu)

    • The course covers mobile and cyber-physical systems by providing an overview of issues, solutions, architectures, technologies and standards. It offers to the students an overall, coherent view of the organization of internet of things (IoT) systems, from the networking and sensing levels to the applications. Specifically, it shows how mobile, heterogeneous elements (from low-end sensors to high-end devices) form pervasive networks integrated in the internet and how they interact among themselves and with the surrounding physical world.The course is organized in three parts. The first part (3 CFU) introduces the principles of wireless communications and network architectures for mobility management. The second part (4 CFU) presents the foundations of signal processing and sensing and discusses the applications of sensor networks. The third part (2 CFU) provides an overview of the main standards and platforms of the IoT.
      • Foundations of wireless technologies and mobility management (3 CFU)
      5G mobile, ad hoc networks, mobile social networks, IEEE 802.x standards
      • Cyber-physical systems (4 CFU)
      Foundations of signal processing, wireless sensor networks, energy harvesting, localization, elements of embedded programming
      • Internet of Things (2 CFU)
      ZigBee, Bluetooth, sensor network gateways, IoT platforms & standards (OneM2M, FIWARE, COAP, MQTT)

  • ICT infrastructures (6 cfu)

    • The goal of the course is to introduce students to the computing infrastructures powering cloud services. At the end of the course a student should be able to understand the general organization of a datacenter and the logical infrastructure that power virtualization and containers. The course starts from physical infrastructures such as power and datacenter organization. The network fabric is introduced, with particular focus on SDN techniques used to balance East-West and North-South traffic. Storage and compute are then introduced with special attention to hyperconverged systems.
      - Physical infrastructures (datacenters, energy and PUE, SCADAs) (1 CFU)
      - Networking (SDN and overlay, fabrics (RDMA, OPA, InfiniBand), monitoring techniques) (2 CFU)
      - Storage (SDS) (1 CFU)
      - Computing (hypervisor) (2 CFU)

  • Advanced programming (9 cfu)

    • The objectives of this course are:
      to provide the students with a deep understanding of how high level programming concepts and metaphors map into executable systems and which are their costs and limitations
      to acquaint the students with modern principles, techniques, and best practices of sophisticated software construction
      to introduce the students to techniques of programming at higher abstraction levels, in particular generative programming, component programming and web computing
      to present state-of-the-art frameworks incorporating these techniques.
      This course focuses on the quality issues pertaining to detailed design and coding, such as reliability, performance, adaptability and integrability into larger systems.
      -Programming Language Pragmatics
      -Run Time Support and Execution Environments
      -Generic Programming
      -Class Libraries and Frameworks
      -Generative Programming
      -Language Interoperability
      -Component Based Programming
      -Web Services
      -Web and Application Frameworks
      -Scripting Languages


  • ICT risk assessment (9 cfu)

    • At the end of this course, the student should be able to discover and analyze the weaknesses and the vulnerabilities of a system to evaluate in a quantitative and formal way the risk it poses. The student should be able to select and deploy a cost-effective set of countermeasures at the various implementation levels to improve the overall ability of the system to withstand its attackers. Focus of the course is on a predictive approach where risk assessment and management is a step in the system design. The student should also be able to know the various tools that can support the assessment and simplify both the assessment and the selection of countermeasures. In this framework, the focus on cloud computing makes it possible to cover the most complex assessment.
      • Risk Assessment and Management of ICT Systems 3 CFU
      o Vulnerabilities/Attacks 1 CFU
      o Countermeasures 1 CFU
      o Tools for Automating Assessment & Management 1 CFU
      • Security of Cloud Computing 6 CFU
      o Economic Reasons/Deployment Models/ Service Models 1 CFU
      o Virtualization and TCM 1 CFU
      o New Vulnerabilities 1 CFU
      o New Attacks 1 CFU
      o New Countermeasures 1 CFU
      o Certification of Cloud Provider 1 CFU

  • Advanced software engineering (9 cfu)

    • Objectives – The objective of the course is to introduce some the main aspects in the design, analysis, development and deployment of modern software systems. Service-based and cloud-based systems are taken as references to present design, analysis and deployment techniques. DevOps practices are discussed, and in particular containerization is introduced. The course includes a "hands-on" lab where students will experiment weekly the design, analysis, development and deployment techniques introduced.
      • Service-based software engineering (3 CFU)
      - core interoperability standards
      - software design by service composition, microservice architecture, examples of design patterns
      - business process modelling and analysis
      - service descriptions and service level agreements
      • DevOps practices (1.5 CFU)
      - DevOps toolchain, continuous delivery
      - Docker and containerization
      • Cloud-based software engineering (1.5 CFU)
      - service and deployment models
      - cross-cloud deployment and management of applications
      • Hands-on laboratory (3 CFU)

  • Algorithm engineering (9 cfu)

    • Study, design and analyze advanced algorithms and data structures for the efficient solution of combinatorial problems involving all basic data types, such as integer sequences, strings, (geometric) points, trees and graphs. The design and analysis will involve several models of computation — such as RAM, 2-level memory, cache-oblivious, streaming — in order to take into account the architectural features of modern PCs and the availability of Big Data upon which algorithms could work on. We will add to such theoretical analysis several engineering considerations spurring from the implementation of the proposed algorithms and from experiments published in the literature
      · Design of algorithms for massive datasets: disk aware or cache oblivious
      · Design of advanced data structures in hierarchical memories for atomic or string data
      · Data compression for structured and unstructured data
      · Algorithms for large graphs
      · Engineering considerations about the implementation of algorithms and data structures

  • 6 cfu a scelta nel gruppo ICT-1 affini da 6 cfu al primo anno

    • Insegnamenti affini da 6 cfu nel curriculum ICT attivati al primo anno
    • Scientific and large data visualization (6 cfu)

      • The goal of this course is to provide an introduction to main topic of 3D computer graphics both in theory and practice. A significant part of the course will involve the realization of a project involving mostly surface modeling and processing and interactive rendering. Topics covered will include: - Modeling: Data structures for representing surfaces with simplicial complexes - Modeling: Data structure for spatial indexing - Modeling: High level frameworks for the representation of structured scene and environments - Rendering: The basic projective rendering pipeline. Hardware architectures for Rendering - Rendering: Algorithms for Global Illumination and photorealistic rendering. - Rendering: Shading Languages and advanced interactive rendering technique
    • Security methods and verification (6 cfu)

      • Objectives introduction some notions and problems that concern the security of net applications and presentation of some formalisms and techniques to address them. - Introduction to security - Security models - Cryptographic protocols: formal description, security properties, static and dynamic analysis techniques - Language-based security: problems and properties, formalisms, methods and techniques, history-based security, web-services security and service orchestration.
    • Intelligent Systems for pattern recognition (6 cfu)

      • The course introduces students to the design of A.I. based solutions to complex pattern recognition problems and discusses how to realize applications exploiting computational intelligence techniques. The course also presents fundamentals of signal and image processing. Particular focus will be given to pattern recognition problems and models dealing with sequential and time-series data. • Signal processing and time-series analysis • Image processing, filters and visual feature detectors • Bayesian learning and deep learning for machine vision and signal processing • Neural network models for pattern recognition on non-vectorial data (physiological data, sensor streams, etc) • Kernel and adaptive methods for relational data • Pattern recognition applications: machine vision, bio-informatics, robotics, medical imaging, etc. • ML and deep learning libraries overview: e.g. scikit-learn, Keras, Theano A final project will introduce students to the implementation of a pattern recognition application or to the development of computational intelligence applications.
    • Information Retrieval (6 cfu)

      • In this course we will study, design and analyze (theoretically and experimentally) software tools for IR-applications dealing with unstructured (raw data), structured (DB-centric) or semi-structured data (i.e. HTML, XML). We will mainly concentrate on the basic components of a modern Web search engine, by examining in detail the algorithmic solutions currently adopted to implement its main software modules. We will also discuss their performance and/or computational limitations, as well as introduce measures for evaluating their efficiency and efficacy. Finally, we will survey some algorithmic techniques which are frequently adopted in the design of IR-tools managing large datasets. -Search engines -Crawling, Text analysis, Indexing, Ranking -Storage of Web pages and (hyper-)link graph -Results processing and visualization -Other data types: XML, textual DBs -Data processing for IR tools -Data streaming -Data sketching -Data compression -Data clustering (sketch)
  • Secondo anno

  • Free choice (9 cfu)

    • Free choice exam to be approved by the Academic Board
  • Thesis (24 cfu)


  • 18 cfu a scelta nel gruppo ICT-2 affini da 9 cfu al secondo anno

    • Insegnamenti affini da 9 cfu del curriculum ICT attivati al secondo anno
    • Data Mining (9 cfu)

      • This course provides a structured introduction to the key methods of data mining and the design of knowledge discovery processes. Organizations and businesses are overwhelmed by the flood of data continuously collected into their data warehouses as well as sensed by all kinds of digital technologies - the web, social media, mobile devices, the internet of things. Traditional statistical techniques may fail to make sense of the data, due to the inherent complexity and size. Data mining, knowledge discovery and statistical learning techniques emerged as an alternative approach, aimed at revealing patterns, rules and models hidden in the data, and at supporting the analytical user to develop descriptive and predictive models for a number of challenging problems. • Fundamentals of data mining and of the knowledge discovery process from data. • Design of data analysis processes. • Statistical exploratory analytics for data understanding. • Dimensionality reduction and Principal Component Analysis. • Clustering analysis with centroid-based, hierarchical and density-based methods, predictive analytics and classification models (including decision trees, bayesian, rule-based, kernel-based, SVM, random forest and ensemble methods), pattern mining and association rule discovery. • Validation and interpretation of discovered patterns and models within statistical frameworks. • Design and development of data mining processes using state of the art technology, including KNIME, Python, and R, within a wrap-up project aimed at using and possibly modifying the DM tools and libraries learned in class.
    • Software validation and verification (9 cfu)

      • The goal of the course is to introduce techniques for verifying and validating software properties, either by analysing a model extracted from a program with model checking, or by testing the software before (the next) deployment, or equipping the running software with tools that monitor its execution. - Specifying software properties [2 CFU] o Assertions o Invariants, Safety and Liveness Properties, Fairness o Temporal logics: LTL, CTL, CTL* - Model Checking [4 CFU] o Transition systems and Program graphs o Checking regular safety properties o Checking omega regular properties with Büchi automata o Overview of Promela-SPIN and SMV o Extracting models from Java source code: BANDERA - Testing [3 CFU] o Coverage criteria and metrics: statement, function, branch, path and data-flow coverage o Test cases selection, prioritization and minimization o Automatic generation of test cases Topics to be chosen among: o Component-based and Service-oriented system testing o Object-oriented testing and Junit o Access Control Systems testing o Performance and other non-functional aspects testing
    • Machine learning (9 cfu)

      • We introduce the principles and the critical analysis of the main paradigms for learning from data and their applications. The course provides the Machine Learning basis for both the aims of building new adaptive Intelligent Systems and powerful predictive models for intelligent data analysis. - Computational learning tasks for predictions, learning as function approximation, generalization concept. - Linear models and Nearest-Neighbors (learning algorithms and properties, regularization). - Neural Networks (MLP and deep models, SOM). - Probabilistic graphical models. - Principles of learning processes: elements of statistical learning theory, model validation. - Support Vector Machines and kernel-based models. - Introduction to applications and advanced models. Applicative project: implementation and use of ML/NN models with emphasis to the rigorous application of validation techniques.
    • Parallel and Distributed Systems: paradigms and models (9 cfu)

      • The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. Taking into account structured programming models (algorithmical skeletons, parallel design patterns) as well as those models based on components and services, all the problems related to the functional (expressive power, modularity and reuse) and non functional (performance, fault tolerance, adaptivity) concerns will be considered. In the last part protocols, features and issues related to wireless, multimedia and peer-to-peer architectures will be introduced along with the implications related to their usage to implement parallel/distributed applications. -Parallel and distributed programming paradigms -Structured programming -Components -Workflows -Implementation models -Posix-TCP/IP-SSH/SCP -RPC/RMI -Distributed Virtual Shared Memory -Parallel Virtual File Systems -“Middleware” systems (Globus, gLite, ...) -Distributed system architectures -Wireless networks -Multimedia networks -Peer-to-peer architectures
  • 6 cfu a scelta nel gruppo ICT-2 affini da 6 cfu al secondo anno

    • Insegnamenti affini da 6 cfu nel curriculum ICT attivati al secondo anno
    • Scientific and large data visualization (6 cfu)

      • The goal of this course is to provide an introduction to main topic of 3D computer graphics both in theory and practice. A significant part of the course will involve the realization of a project involving mostly surface modeling and processing and interactive rendering. Topics covered will include: - Modeling: Data structures for representing surfaces with simplicial complexes - Modeling: Data structure for spatial indexing - Modeling: High level frameworks for the representation of structured scene and environments - Rendering: The basic projective rendering pipeline. Hardware architectures for Rendering - Rendering: Algorithms for Global Illumination and photorealistic rendering. - Rendering: Shading Languages and advanced interactive rendering technique
    • Security methods and verification (6 cfu)

      • Objectives introduction some notions and problems that concern the security of net applications and presentation of some formalisms and techniques to address them. - Introduction to security - Security models - Cryptographic protocols: formal description, security properties, static and dynamic analysis techniques - Language-based security: problems and properties, formalisms, methods and techniques, history-based security, web-services security and service orchestration.
    • Intelligent Systems for pattern recognition (6 cfu)

      • The course introduces students to the design of A.I. based solutions to complex pattern recognition problems and discusses how to realize applications exploiting computational intelligence techniques. The course also presents fundamentals of signal and image processing. Particular focus will be given to pattern recognition problems and models dealing with sequential and time-series data. • Signal processing and time-series analysis • Image processing, filters and visual feature detectors • Bayesian learning and deep learning for machine vision and signal processing • Neural network models for pattern recognition on non-vectorial data (physiological data, sensor streams, etc) • Kernel and adaptive methods for relational data • Pattern recognition applications: machine vision, bio-informatics, robotics, medical imaging, etc. • ML and deep learning libraries overview: e.g. scikit-learn, Keras, Theano A final project will introduce students to the implementation of a pattern recognition application or to the development of computational intelligence applications.
    • Information Retrieval (6 cfu)

      • In this course we will study, design and analyze (theoretically and experimentally) software tools for IR-applications dealing with unstructured (raw data), structured (DB-centric) or semi-structured data (i.e. HTML, XML). We will mainly concentrate on the basic components of a modern Web search engine, by examining in detail the algorithmic solutions currently adopted to implement its main software modules. We will also discuss their performance and/or computational limitations, as well as introduce measures for evaluating their efficiency and efficacy. Finally, we will survey some algorithmic techniques which are frequently adopted in the design of IR-tools managing large datasets. -Search engines -Crawling, Text analysis, Indexing, Ranking -Storage of Web pages and (hyper-)link graph -Results processing and visualization -Other data types: XML, textual DBs -Data processing for IR tools -Data streaming -Data sketching -Data compression -Data clustering (sketch)

  • AI - Artificial Intelligence

    Primo anno

  • Parallel and Distributed Systems: paradigms and models (9 cfu)

    • The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. Taking into account structured programming models (algorithmical skeletons, parallel design patterns) as well as those models based on components and services, all the problems related to the functional (expressive power, modularity and reuse) and non functional (performance, fault tolerance, adaptivity) concerns will be considered. In the last part protocols, features and issues related to wireless, multimedia and peer-to-peer architectures will be introduced along with the implications related to their usage to implement parallel/distributed applications.
      -Parallel and distributed programming paradigms
      -Structured programming
      -Components
      -Workflows
      -Implementation models
      -Posix-TCP/IP-SSH/SCP
      -RPC/RMI
      -Distributed Virtual Shared Memory
      -Parallel Virtual File Systems
      -“Middleware” systems (Globus, gLite, ...)
      -Distributed system architectures
      -Wireless networks
      -Multimedia networks
      -Peer-to-peer architectures
  • Human language technologies (9 cfu)

    • The course presents principles, models and the state of the art techniques for the analysis of natural language, focusing mainly on statistical machine learning approaches and Deep Learning in particular. Students will learn how to apply these techniques in a wide range of applications using modern programming libraries.
      - Formal and statistical approaches to NLP.
      - Statistical methods: Language Model, Hidden Markov Model, Viterbi Algorithm, Generative vs Discriminative Models
      - Linguistic essentials (tokenization, morphology, PoS, collocations, etc.).
      - Parsing (constituency and dependency parsing).
      - Processing Pipelines.
      - Lexical semantics: corpora, thesauri, gazetteers.
      - Distributional Semantics: Word embeddings, Character embeddings.
      - Deep Learning for natural language.
      - Applications: Entity recognition, Entity linking, classification, summarization.
      - Opinion mining, Sentiment Analysis.
      - Question answering, Language inference, Dialogic interfaces.
      - Statistical Machine Translation.
      - NLP libraries: NLTK, Theano, Tensorflow.

  • Computational mathematics for learning and data analysis (9 cfu)

    • The course introduces some of the main techniques for the solution of numerical problems that find widespread use in fields like data analysis, machine learning, and artificial intelligence. These techniques often combine concepts typical of numerical analysis with those proper of numerical optimization, since numerical analysis tools are essential to solve optimization problems, and, vice-versa, problems of numerical analysis can be solved by optimization algorithms. The course has a significant hands-on part whereby students learn how to use some of the most common tools for computational mathematics; during these sessions, specific applications will be briefly illustrated in fields like regression and parameter estimation in statistics, approximation and data fitting, machine learning, artificial intelligence, data mining, information retrieval, and others.
      - Multivariate and matrix calculus
      - Matrix factorization, decomposition and approximation
      - Eigenvalue computation
      - Nonlinear optimization: theory and algorithms
      - Least-squares problems and data fitting
      - MATLAB and other software tools (lab sessions with applications)

  • Intelligent Systems for pattern recognition (6 cfu)

    • The course introduces students to the design of A.I. based solutions to complex pattern recognition problems and discusses how to realize applications exploiting computational intelligence techniques. The course also presents fundamentals of signal and image processing. Particular focus will be given to pattern recognition problems and models dealing with sequential and time-series data.
      • Signal processing and time-series analysis
      • Image processing, filters and visual feature detectors
      • Bayesian learning and deep learning for machine vision and signal processing
      • Neural network models for pattern recognition on non-vectorial data (physiological data, sensor streams, etc)
      • Kernel and adaptive methods for relational data
      • Pattern recognition applications: machine vision, bio-informatics, robotics, medical imaging, etc.
      • ML and deep learning libraries overview: e.g. scikit-learn, Keras, Theano
      A final project will introduce students to the implementation of a pattern recognition application or to the development of computational intelligence applications.

  • Machine learning (9 cfu)

    • We introduce the principles and the critical analysis of the main paradigms for learning from data and their applications. The course provides the Machine Learning basis for both the aims of building new adaptive Intelligent Systems and powerful predictive models for intelligent data analysis.
      - Computational learning tasks for predictions, learning as function approximation, generalization concept.
      - Linear models and Nearest-Neighbors (learning algorithms and properties, regularization).
      - Neural Networks (MLP and deep models, SOM).
      - Probabilistic graphical models.
      - Principles of learning processes: elements of statistical learning theory, model validation.
      - Support Vector Machines and kernel-based models.
      - Introduction to applications and advanced models.
      Applicative project: implementation and use of ML/NN models with emphasis to the rigorous application of validation techniques.

  • Artificial intelligence fundamentals (6 cfu)

    • The course aims to offer a view of the classical/symbolic approach to Artificial Intelligence and serves as a basis for more in depth treatment of specific theories and technologies for building complete A.I. systems integrating different approaches and methods.
      - Advanced search
      - Constraint satisfaction problems
      - Knowledge representation and reasoning
      - Non-standard logics
      - Uncertain and probabilistic reasoning (Bayesian networks, fuzzy sets).
      - Foundations of semantic web: semantic networks and description logics.
      - Rules systems: use and efficient implementation.
      - Planning systems

  • 9 cfu a scelta nel gruppo AI-1 affini da 9 cfu al primo anno

    • Insegnamenti affini da 9 cfu nel curriculum AI attivati al primo anno
    • Data Mining (9 cfu)

      • This course provides a structured introduction to the key methods of data mining and the design of knowledge discovery processes. Organizations and businesses are overwhelmed by the flood of data continuously collected into their data warehouses as well as sensed by all kinds of digital technologies - the web, social media, mobile devices, the internet of things. Traditional statistical techniques may fail to make sense of the data, due to the inherent complexity and size. Data mining, knowledge discovery and statistical learning techniques emerged as an alternative approach, aimed at revealing patterns, rules and models hidden in the data, and at supporting the analytical user to develop descriptive and predictive models for a number of challenging problems. • Fundamentals of data mining and of the knowledge discovery process from data. • Design of data analysis processes. • Statistical exploratory analytics for data understanding. • Dimensionality reduction and Principal Component Analysis. • Clustering analysis with centroid-based, hierarchical and density-based methods, predictive analytics and classification models (including decision trees, bayesian, rule-based, kernel-based, SVM, random forest and ensemble methods), pattern mining and association rule discovery. • Validation and interpretation of discovered patterns and models within statistical frameworks. • Design and development of data mining processes using state of the art technology, including KNIME, Python, and R, within a wrap-up project aimed at using and possibly modifying the DM tools and libraries learned in class.
    • Algorithm engineering (9 cfu)

      • Study, design and analyze advanced algorithms and data structures for the efficient solution of combinatorial problems involving all basic data types, such as integer sequences, strings, (geometric) points, trees and graphs. The design and analysis will involve several models of computation — such as RAM, 2-level memory, cache-oblivious, streaming — in order to take into account the architectural features of modern PCs and the availability of Big Data upon which algorithms could work on. We will add to such theoretical analysis several engineering considerations spurring from the implementation of the proposed algorithms and from experiments published in the literature · Design of algorithms for massive datasets: disk aware or cache oblivious · Design of advanced data structures in hierarchical memories for atomic or string data · Data compression for structured and unstructured data · Algorithms for large graphs · Engineering considerations about the implementation of algorithms and data structures
    • Mobile and cyber-physical systems (9 cfu)

      • The course covers mobile and cyber-physical systems by providing an overview of issues, solutions, architectures, technologies and standards. It offers to the students an overall, coherent view of the organization of internet of things (IoT) systems, from the networking and sensing levels to the applications. Specifically, it shows how mobile, heterogeneous elements (from low-end sensors to high-end devices) form pervasive networks integrated in the internet and how they interact among themselves and with the surrounding physical world.The course is organized in three parts. The first part (3 CFU) introduces the principles of wireless communications and network architectures for mobility management. The second part (4 CFU) presents the foundations of signal processing and sensing and discusses the applications of sensor networks. The third part (2 CFU) provides an overview of the main standards and platforms of the IoT. • Foundations of wireless technologies and mobility management (3 CFU) 5G mobile, ad hoc networks, mobile social networks, IEEE 802.x standards • Cyber-physical systems (4 CFU) Foundations of signal processing, wireless sensor networks, energy harvesting, localization, elements of embedded programming • Internet of Things (2 CFU) ZigBee, Bluetooth, sensor network gateways, IoT platforms & standards (OneM2M, FIWARE, COAP, MQTT)
  • 6 cfu a scelta nel gruppo AI-1 affini da 6 cfu al primo anno

    • Insegnamenti affini da 6 cfu nel curriculum AI attivati al primo anno
    • Semantic web (6 cfu)

      • The course presents Semantic web technologies, making the student able to design and implement knowledge bases based on ontologies encoded with Semantic Web languages, and offered access as Linked Data. • The architecture of the Web and the Semantic Web stack; URI. • Resource Description Framework (RDF) and RDF Schema • The query language SPARQL • Linked data: creation of data sets from DB relations; access. • Web Ontology Language (OWL): syntax and semantics • Top ontologies: main definitions and examples (DOLCE and CRM) • Specific ontologies, such as semantic sensor networks. • Extraction of knowledge from KB’s (DBpedia, Freebase) • Project consisting in the creation of ontologies (use of Protegé).
    • Computational neuroscience (6 cfu)

      • The objectives of "Computational neuroscience" class include advanced computational neural models for learning, architectures and learning methods for dynamical/recurrent neural networks for temporal data and the analysis of their properties, bio-inspired neural modelling, spiking and reservoir computing neural networks, the role of computational neuroscience in real-world applications (by case studies). The content includes the following topics: - Computational models of the biological neuron (neuroscience modeling) - Models of synaptic plasticity and learning (representation/deep learning) - Recurrent neural networks (dynamical models for temporal data) - Applications (case-studies)
    • Robotics (6 cfu)

      • The course introduces the fundamentals of robotics, viewed as an application domain for computer science, intelligent systems, and machine learning; provide students with the basic tools to integrate and program a robotic system, with special attention to the realization of perception-action schemes and behaviour control; improve students' experimental work capacity, through the analysis of case studies and laboratory work. • Introduction to robotics: main definitions, illustration of application domains • Mechanics and kinematics of the robot • Sensors for robotics • Robot Control • Architectures for controlling behaviour in robots • Robotic Navigation • Tactile Perception in humans and robots • Vision in humans and robots • Analysis of case studies of robotic systems • Project laboratory: student work in the lab with robotic systems
    • Information Retrieval (6 cfu)

      • In this course we will study, design and analyze (theoretically and experimentally) software tools for IR-applications dealing with unstructured (raw data), structured (DB-centric) or semi-structured data (i.e. HTML, XML). We will mainly concentrate on the basic components of a modern Web search engine, by examining in detail the algorithmic solutions currently adopted to implement its main software modules. We will also discuss their performance and/or computational limitations, as well as introduce measures for evaluating their efficiency and efficacy. Finally, we will survey some algorithmic techniques which are frequently adopted in the design of IR-tools managing large datasets. -Search engines -Crawling, Text analysis, Indexing, Ranking -Storage of Web pages and (hyper-)link graph -Results processing and visualization -Other data types: XML, textual DBs -Data processing for IR tools -Data streaming -Data sketching -Data compression -Data clustering (sketch)
    • Computational models for complex systems (6 cfu)

      • The objective of this course is to train experts in systems modelling and analysis methodologies. Of course, this will require understanding, to some degree of detail, the mathematical and computational techniques involved. However, this will be done with the aim of shaping good modellers, that know the advantages/disadvantages/risks of the different modelling and analysis methodologies, that are aware of what happens under the hood of a modelling and analysis tool, and that can develop their own tools if needed. The course will focus on advanced modelling approaches that combine different paradigms and analysis techniques: from ODEs to stochastic models, from simulation to model checking. Case studies from population dynamics, biochemistry, epidemiology, economy and social sciences will be analysed. Moreover, synergistic approaches that combine computational modelling techniques with data-driven methodologies will be outlined. - Modelling with ODEs: examples - (Timed and) Hybrid Automata: definition and simulation techniques - Stochastic simulation methods (Gillespie’s algorithm and its variants) - Hybrid simulation methods (stochastic/ODEs) - Rule-based modelling - Probabilistic/stochastic model checking: principles, applicability and tools - Statistical model checking - Process mining (basic notions)
    • Social and ethical issues in information technology (6 cfu)

      • The progress in AI research makes it timely to focus not only on making AI more capable, but also on maximizing the societal benefit of AI [from Research Priorities for Robust and Beneficial Artificial Intelligence, an open letter]. This concern is by necessity interdisciplinary, because it involves both society and AI. It ranges from economics, law and philosophy to computer security, formal methods and, of course, various branches of AI itself. The course will be organized as a series of seminars on different hot topics. Contents may include: • Philosophical implications of AI o Technological limitations to Ai o Biological limitations to human intelligence • Economic impact of emerging technologies o The disappearance of intellectual jobs o The rise of the corporate colossus o The power of data in the hands of big companies and auto-regulations (Partnership on AI) • Legal and ethical issues o Privacy, transparency, biases and fairness, data lock-in o Autonomous vehicles and weapons o Machines for human care and threats to human dignity: customer care, robot companions … • Trustworthiness of the technologies o Safety, robustness, and control • Future scenarios o Superintelligence implications
  • Secondo anno

  • Free choice (9 cfu)

    • Free choice exam to be approved by the Academic Board
  • Thesis (24 cfu)


  • Smart applications (9 cfu)

    • The course aim is to explore methods and technologies for the development of smart connected applications, i.e. applications which exhibit intelligent behaviour -- through the use of artificial intelligence techniques introduced in other courses -- and that are deployed in immersive environments, including smart objects (as embodied by Internet of Things devices), mobile devices (smartphones, tablets), wearables (smartwatches, fitness trackers), home automation devices, web technologies, and cloud services and infrastructure. As such, applications considered for the course will include elements of context-awareness, sensor intelligence, spoken-language interfaces,
      The course will be based around a single case study for a novel smart application; students will cooperate as a single team, under the leadership of the instructor, in the design and implementation of a complete solution. In addition to standard lectures, classroom activities will include workshop-like sessions, where alternative designs are discussed, decisions are taken, and tasks are assigned. Weekly homework on the various phases of the joint project will be assigned to the team, and results reviewed the following week. The final goal is the delivery of a fully-functioning prototype of a smart application addressing the initial problem.
      While the specific technologies adopted for each case study will vary based on needs and opportunities, the following general themes will be explored in lectures (examples of specific subjects are noted next to each theme):
      • Introduction to the course and to the case study
      o examples: a voice-activated ambient assistant to answer student queries about the logistics of lectures in a classroom building, or autonomous software for a robotic rover for exploring inaccessible environments
      • Common designs for smart applications
      o examples: fuzzy logic in control systems or cloud analysis of field sensors data streams
      • Make or buy: selecting appropriate procurement strategies
      o example: writing your own RRN architecture vs. using cloud services
      • Development platforms for smart objects
      o examples: Brillo (IoT devices) or Android TV (Smart TVs)
      • Development platforms for smart architectures
      o examples: TensorFlow (server-side RNNs), or the Face Recognition API (mobile)
      • Cloud services for smart applications
      o examples: Google Cloud Machine Learning API, Google Cloud Vision API, Google Cloud Speech API, or Deploying Deep Neural Networks on Microsoft Azure GPU VMs
      • Deployment and operations
      o examples: cloud hosting vs. device hosting, or harnessing user feedback to drive improvement
      • Measuring success: methods and metrics
      o examples: defining user engagement and satisfaction metrics, or assessing the naturalness of smart interactions

  • 9 cfu a scelta nel gruppo AI-2 affini da 9 cfu al secondo anno

    • Insegnamenti affini da 9 cfu del curriculum AI attivati al secondo anno
    • Data Mining (9 cfu)

      • This course provides a structured introduction to the key methods of data mining and the design of knowledge discovery processes. Organizations and businesses are overwhelmed by the flood of data continuously collected into their data warehouses as well as sensed by all kinds of digital technologies - the web, social media, mobile devices, the internet of things. Traditional statistical techniques may fail to make sense of the data, due to the inherent complexity and size. Data mining, knowledge discovery and statistical learning techniques emerged as an alternative approach, aimed at revealing patterns, rules and models hidden in the data, and at supporting the analytical user to develop descriptive and predictive models for a number of challenging problems. • Fundamentals of data mining and of the knowledge discovery process from data. • Design of data analysis processes. • Statistical exploratory analytics for data understanding. • Dimensionality reduction and Principal Component Analysis. • Clustering analysis with centroid-based, hierarchical and density-based methods, predictive analytics and classification models (including decision trees, bayesian, rule-based, kernel-based, SVM, random forest and ensemble methods), pattern mining and association rule discovery. • Validation and interpretation of discovered patterns and models within statistical frameworks. • Design and development of data mining processes using state of the art technology, including KNIME, Python, and R, within a wrap-up project aimed at using and possibly modifying the DM tools and libraries learned in class.
    • Algorithm engineering (9 cfu)

      • Study, design and analyze advanced algorithms and data structures for the efficient solution of combinatorial problems involving all basic data types, such as integer sequences, strings, (geometric) points, trees and graphs. The design and analysis will involve several models of computation — such as RAM, 2-level memory, cache-oblivious, streaming — in order to take into account the architectural features of modern PCs and the availability of Big Data upon which algorithms could work on. We will add to such theoretical analysis several engineering considerations spurring from the implementation of the proposed algorithms and from experiments published in the literature · Design of algorithms for massive datasets: disk aware or cache oblivious · Design of advanced data structures in hierarchical memories for atomic or string data · Data compression for structured and unstructured data · Algorithms for large graphs · Engineering considerations about the implementation of algorithms and data structures
    • Mobile and cyber-physical systems (9 cfu)

      • The course covers mobile and cyber-physical systems by providing an overview of issues, solutions, architectures, technologies and standards. It offers to the students an overall, coherent view of the organization of internet of things (IoT) systems, from the networking and sensing levels to the applications. Specifically, it shows how mobile, heterogeneous elements (from low-end sensors to high-end devices) form pervasive networks integrated in the internet and how they interact among themselves and with the surrounding physical world.The course is organized in three parts. The first part (3 CFU) introduces the principles of wireless communications and network architectures for mobility management. The second part (4 CFU) presents the foundations of signal processing and sensing and discusses the applications of sensor networks. The third part (2 CFU) provides an overview of the main standards and platforms of the IoT. • Foundations of wireless technologies and mobility management (3 CFU) 5G mobile, ad hoc networks, mobile social networks, IEEE 802.x standards • Cyber-physical systems (4 CFU) Foundations of signal processing, wireless sensor networks, energy harvesting, localization, elements of embedded programming • Internet of Things (2 CFU) ZigBee, Bluetooth, sensor network gateways, IoT platforms & standards (OneM2M, FIWARE, COAP, MQTT)
  • 6 cfu a scelta nel gruppo AI-2 affini da 6 cfu al secondo anno

    • Insegnamenti affini da 6 cfu nel curriculum AI attivati al secondo anno
    • Semantic web (6 cfu)

      • The course presents Semantic web technologies, making the student able to design and implement knowledge bases based on ontologies encoded with Semantic Web languages, and offered access as Linked Data. • The architecture of the Web and the Semantic Web stack; URI. • Resource Description Framework (RDF) and RDF Schema • The query language SPARQL • Linked data: creation of data sets from DB relations; access. • Web Ontology Language (OWL): syntax and semantics • Top ontologies: main definitions and examples (DOLCE and CRM) • Specific ontologies, such as semantic sensor networks. • Extraction of knowledge from KB’s (DBpedia, Freebase) • Project consisting in the creation of ontologies (use of Protegé).
    • Computational neuroscience (6 cfu)

      • The objectives of "Computational neuroscience" class include advanced computational neural models for learning, architectures and learning methods for dynamical/recurrent neural networks for temporal data and the analysis of their properties, bio-inspired neural modelling, spiking and reservoir computing neural networks, the role of computational neuroscience in real-world applications (by case studies). The content includes the following topics: - Computational models of the biological neuron (neuroscience modeling) - Models of synaptic plasticity and learning (representation/deep learning) - Recurrent neural networks (dynamical models for temporal data) - Applications (case-studies)
    • Robotics (6 cfu)

      • The course introduces the fundamentals of robotics, viewed as an application domain for computer science, intelligent systems, and machine learning; provide students with the basic tools to integrate and program a robotic system, with special attention to the realization of perception-action schemes and behaviour control; improve students' experimental work capacity, through the analysis of case studies and laboratory work. • Introduction to robotics: main definitions, illustration of application domains • Mechanics and kinematics of the robot • Sensors for robotics • Robot Control • Architectures for controlling behaviour in robots • Robotic Navigation • Tactile Perception in humans and robots • Vision in humans and robots • Analysis of case studies of robotic systems • Project laboratory: student work in the lab with robotic systems
    • Information Retrieval (6 cfu)

      • In this course we will study, design and analyze (theoretically and experimentally) software tools for IR-applications dealing with unstructured (raw data), structured (DB-centric) or semi-structured data (i.e. HTML, XML). We will mainly concentrate on the basic components of a modern Web search engine, by examining in detail the algorithmic solutions currently adopted to implement its main software modules. We will also discuss their performance and/or computational limitations, as well as introduce measures for evaluating their efficiency and efficacy. Finally, we will survey some algorithmic techniques which are frequently adopted in the design of IR-tools managing large datasets. -Search engines -Crawling, Text analysis, Indexing, Ranking -Storage of Web pages and (hyper-)link graph -Results processing and visualization -Other data types: XML, textual DBs -Data processing for IR tools -Data streaming -Data sketching -Data compression -Data clustering (sketch)
    • Computational models for complex systems (6 cfu)

      • The objective of this course is to train experts in systems modelling and analysis methodologies. Of course, this will require understanding, to some degree of detail, the mathematical and computational techniques involved. However, this will be done with the aim of shaping good modellers, that know the advantages/disadvantages/risks of the different modelling and analysis methodologies, that are aware of what happens under the hood of a modelling and analysis tool, and that can develop their own tools if needed. The course will focus on advanced modelling approaches that combine different paradigms and analysis techniques: from ODEs to stochastic models, from simulation to model checking. Case studies from population dynamics, biochemistry, epidemiology, economy and social sciences will be analysed. Moreover, synergistic approaches that combine computational modelling techniques with data-driven methodologies will be outlined. - Modelling with ODEs: examples - (Timed and) Hybrid Automata: definition and simulation techniques - Stochastic simulation methods (Gillespie’s algorithm and its variants) - Hybrid simulation methods (stochastic/ODEs) - Rule-based modelling - Probabilistic/stochastic model checking: principles, applicability and tools - Statistical model checking - Process mining (basic notions)
    • Social and ethical issues in information technology (6 cfu)

      • The progress in AI research makes it timely to focus not only on making AI more capable, but also on maximizing the societal benefit of AI [from Research Priorities for Robust and Beneficial Artificial Intelligence, an open letter]. This concern is by necessity interdisciplinary, because it involves both society and AI. It ranges from economics, law and philosophy to computer security, formal methods and, of course, various branches of AI itself. The course will be organized as a series of seminars on different hot topics. Contents may include: • Philosophical implications of AI o Technological limitations to Ai o Biological limitations to human intelligence • Economic impact of emerging technologies o The disappearance of intellectual jobs o The rise of the corporate colossus o The power of data in the hands of big companies and auto-regulations (Partnership on AI) • Legal and ethical issues o Privacy, transparency, biases and fairness, data lock-in o Autonomous vehicles and weapons o Machines for human care and threats to human dignity: customer care, robot companions … • Trustworthiness of the technologies o Safety, robustness, and control • Future scenarios o Superintelligence implications

  • SW - Software: Programming, Principles, and Technologies

    Primo anno

  • Algorithm design (9 cfu)

    • The course focuses on developing algorithmic design skills, exposing the students to complex problems that cannot be directly handled by standard libraries (being aware that several basic algorithms and data structures are already covered by the libraries of modern programming languages), thus requiring a significant effort in problem solving. These problems involve all basic data types, such as integers, strings, (geometric) points, trees and graphs, as a starting point and the syllabus is structured to highlight the applicative situations in which the corresponding algorithms can be successfully applied. Brainstorming activities will be central to help students learning from their mistakes. The level of detail in each argument can be adapted year-by-year to some trending topics, and will be decided according to requests coming from other courses and/or specific issues arising in, possibly novel, applicative scenarios.
      - Exploring the algorithms behind standard libraries [2 CFU]
      - External-memory and cache-efficient algorithms [2 CFU]
      - Randomized algorithms [2 CFU]
      - Approximation algorithms and complexity [2 CFU]
      - Argument chosen from an emerging scenario [1 CFU]

  • Languages, compilers and interpreters (9 cfu)

    • The course teaches the core of compilation, program analysis techniques used in compilers and software development tools to improve productivity and reliability. Emphasis on the methodology of applying formal abstractions to writing complex software, using compilers as an example. The course will explore the basic static techniques that are the cornerstone of a variety of program analysis tools, including optimizing compilers, just-in-time compilers, program verifiers, bug finders and code refactoring tools. As case studies, tools developed within the LLVM Compiler Infrasctructure will be analysed and used in experimentations.
      - Abstract Machines, Compilation and Interpretation
      - Lexical Analysis and Lexical Analyser Generators
      - Parsing and Parser Generators
      - Static analysis
      - Intermediate Code Generation
      - Optimization
      - Runtime Support
      - Just-in-time compilation

  • Principles for software composition (9 cfu)

    • This course introduces concepts and techniques in the study of advanced programming languages, as well as their formal logical underpinnings. The central theme is the view of individual programs and whole languages as mathematical entities about which precise claims may be made and proved. The course will cover the basic techniques for assigning meaning to programs with higher-order, concurrent and probabilistic features (e.g., domain theory, logical systems, well-founded induction, structural recursion, labelled transition systems, Markov chains, probabilistic reactive systems) and for proving their fundamental properties, such as termination, normalisation, determinacy, behavioural equivalence and logical equivalence. In particular, some emphasis will be posed on modularity and compositionality, in the sense of guaranteeing some property of the whole by proving simpler properties of its parts. Emphasis will be placed on the experimentation of the introduced concepts with state-of-the-art tools.
      • Introduction and background [1 CFU]
      • Induction and recursion, partial orders, fixed points, lambda-notation [1 CFU]
      • Functional programming with Haskell and analysis of higher-order functional languages [1 CFU theory and 1 CFU exercises and experimentation]
      • Concurrent programming with Google Go and Erlang and analysis of concurrent and non-deterministic systems [2 CFU theory and 1 CFU exercises and experimentation]
      • Code orchestration with Orc and analysis of coordination languages [1 CFU theory and experimentation]
      • Models and analysis of probabilistic and stochastic systems [1 CFU theory and experimentation]

  • Competitive programming and contests (6 cfu)

    • The goal of the course is to improve programming and problem solving skills of the students by facing them with difficult problems and by presenting the techniques that help their reasoning in the implementation of correct and efficient solutions. The importance of these skills has been recognized by the most important software companies worldwide, which evaluate candidates in their job interviews mostly by the ability in addressing such difficult problems. A natural goal is to involve the students in the intellectual pleasure of programming and problem solving, also preparing them for the most important international online contests, such as TopCoder, HackerRank, CodeChef, Facebook Hacker Cup, Google Code Jam and so on, for internships in most important companies and their interviews. A desirable side-effect of the course could be to organize and prepare teams of students for the ACM International Collegiate Programming Contests. The course will give the opportunity to uniform students' background in algorithms and programming in view of the subsequent courses and will be central to get them involved into the computing platforms of the future.
      - An official language for contests: C++ and its standard template library
      - Efficient code: programming, benchmarking and profiling
      - Real-world applications of sorting
      - Basic data structures: priority queues, search trees, and hash maps
      - Advanced data structures: union-find, Fenwick tree, interval trees, range-minima query
      - Basic string algorithms
      - Basic graph algorithms
      - Fast optimization with dynamic programming
      - Computational geometry
      Each topic of the above syllabus will be covered by
      - offering a quick recap of the related concepts from an introductory class on algorithms;
      - programming and engineering fast software solutions for real-life computational problems;
      - learning how to recognize their applicability through contests and experimentation.

  • 18 cfu a scelta nel gruppo SW-1 affini da 9 cfu al primo anno

    • Insegnamenti affini da 9 cfu del curriculum SW attivati al primo anno
    • Computational mathematics for learning and data analysis (9 cfu)

      • The course introduces some of the main techniques for the solution of numerical problems that find widespread use in fields like data analysis, machine learning, and artificial intelligence. These techniques often combine concepts typical of numerical analysis with those proper of numerical optimization, since numerical analysis tools are essential to solve optimization problems, and, vice-versa, problems of numerical analysis can be solved by optimization algorithms. The course has a significant hands-on part whereby students learn how to use some of the most common tools for computational mathematics; during these sessions, specific applications will be briefly illustrated in fields like regression and parameter estimation in statistics, approximation and data fitting, machine learning, artificial intelligence, data mining, information retrieval, and others. - Multivariate and matrix calculus - Matrix factorization, decomposition and approximation - Eigenvalue computation - Nonlinear optimization: theory and algorithms - Least-squares problems and data fitting - MATLAB and other software tools (lab sessions with applications)
    • Advanced software engineering (9 cfu)

      • Objectives – The objective of the course is to introduce some the main aspects in the design, analysis, development and deployment of modern software systems. Service-based and cloud-based systems are taken as references to present design, analysis and deployment techniques. DevOps practices are discussed, and in particular containerization is introduced. The course includes a "hands-on" lab where students will experiment weekly the design, analysis, development and deployment techniques introduced. • Service-based software engineering (3 CFU) - core interoperability standards - software design by service composition, microservice architecture, examples of design patterns - business process modelling and analysis - service descriptions and service level agreements • DevOps practices (1.5 CFU) - DevOps toolchain, continuous delivery - Docker and containerization • Cloud-based software engineering (1.5 CFU) - service and deployment models - cross-cloud deployment and management of applications • Hands-on laboratory (3 CFU)
    • Machine learning (9 cfu)

      • We introduce the principles and the critical analysis of the main paradigms for learning from data and their applications. The course provides the Machine Learning basis for both the aims of building new adaptive Intelligent Systems and powerful predictive models for intelligent data analysis. - Computational learning tasks for predictions, learning as function approximation, generalization concept. - Linear models and Nearest-Neighbors (learning algorithms and properties, regularization). - Neural Networks (MLP and deep models, SOM). - Probabilistic graphical models. - Principles of learning processes: elements of statistical learning theory, model validation. - Support Vector Machines and kernel-based models. - Introduction to applications and advanced models. Applicative project: implementation and use of ML/NN models with emphasis to the rigorous application of validation techniques.
    • Mobile and cyber-physical systems (9 cfu)

      • The course covers mobile and cyber-physical systems by providing an overview of issues, solutions, architectures, technologies and standards. It offers to the students an overall, coherent view of the organization of internet of things (IoT) systems, from the networking and sensing levels to the applications. Specifically, it shows how mobile, heterogeneous elements (from low-end sensors to high-end devices) form pervasive networks integrated in the internet and how they interact among themselves and with the surrounding physical world.The course is organized in three parts. The first part (3 CFU) introduces the principles of wireless communications and network architectures for mobility management. The second part (4 CFU) presents the foundations of signal processing and sensing and discusses the applications of sensor networks. The third part (2 CFU) provides an overview of the main standards and platforms of the IoT. • Foundations of wireless technologies and mobility management (3 CFU) 5G mobile, ad hoc networks, mobile social networks, IEEE 802.x standards • Cyber-physical systems (4 CFU) Foundations of signal processing, wireless sensor networks, energy harvesting, localization, elements of embedded programming • Internet of Things (2 CFU) ZigBee, Bluetooth, sensor network gateways, IoT platforms & standards (OneM2M, FIWARE, COAP, MQTT)
    • Parallel and Distributed Systems: paradigms and models (9 cfu)

      • The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. Taking into account structured programming models (algorithmical skeletons, parallel design patterns) as well as those models based on components and services, all the problems related to the functional (expressive power, modularity and reuse) and non functional (performance, fault tolerance, adaptivity) concerns will be considered. In the last part protocols, features and issues related to wireless, multimedia and peer-to-peer architectures will be introduced along with the implications related to their usage to implement parallel/distributed applications. -Parallel and distributed programming paradigms -Structured programming -Components -Workflows -Implementation models -Posix-TCP/IP-SSH/SCP -RPC/RMI -Distributed Virtual Shared Memory -Parallel Virtual File Systems -“Middleware” systems (Globus, gLite, ...) -Distributed system architectures -Wireless networks -Multimedia networks -Peer-to-peer architectures
    • Advanced programming (9 cfu)

      • The objectives of this course are: to provide the students with a deep understanding of how high level programming concepts and metaphors map into executable systems and which are their costs and limitations to acquaint the students with modern principles, techniques, and best practices of sophisticated software construction to introduce the students to techniques of programming at higher abstraction levels, in particular generative programming, component programming and web computing to present state-of-the-art frameworks incorporating these techniques. This course focuses on the quality issues pertaining to detailed design and coding, such as reliability, performance, adaptability and integrability into larger systems. -Programming Language Pragmatics -Run Time Support and Execution Environments -Generic Programming -Class Libraries and Frameworks -Generative Programming -Language Interoperability -Component Based Programming -Web Services -Web and Application Frameworks -Scripting Languages
    • Smart applications (9 cfu)

      • The course aim is to explore methods and technologies for the development of smart connected applications, i.e. applications which exhibit intelligent behaviour -- through the use of artificial intelligence techniques introduced in other courses -- and that are deployed in immersive environments, including smart objects (as embodied by Internet of Things devices), mobile devices (smartphones, tablets), wearables (smartwatches, fitness trackers), home automation devices, web technologies, and cloud services and infrastructure. As such, applications considered for the course will include elements of context-awareness, sensor intelligence, spoken-language interfaces, The course will be based around a single case study for a novel smart application; students will cooperate as a single team, under the leadership of the instructor, in the design and implementation of a complete solution. In addition to standard lectures, classroom activities will include workshop-like sessions, where alternative designs are discussed, decisions are taken, and tasks are assigned. Weekly homework on the various phases of the joint project will be assigned to the team, and results reviewed the following week. The final goal is the delivery of a fully-functioning prototype of a smart application addressing the initial problem. While the specific technologies adopted for each case study will vary based on needs and opportunities, the following general themes will be explored in lectures (examples of specific subjects are noted next to each theme): • Introduction to the course and to the case study o examples: a voice-activated ambient assistant to answer student queries about the logistics of lectures in a classroom building, or autonomous software for a robotic rover for exploring inaccessible environments • Common designs for smart applications o examples: fuzzy logic in control systems or cloud analysis of field sensors data streams • Make or buy: selecting appropriate procurement strategies o example: writing your own RRN architecture vs. using cloud services • Development platforms for smart objects o examples: Brillo (IoT devices) or Android TV (Smart TVs) • Development platforms for smart architectures o examples: TensorFlow (server-side RNNs), or the Face Recognition API (mobile) • Cloud services for smart applications o examples: Google Cloud Machine Learning API, Google Cloud Vision API, Google Cloud Speech API, or Deploying Deep Neural Networks on Microsoft Azure GPU VMs • Deployment and operations o examples: cloud hosting vs. device hosting, or harnessing user feedback to drive improvement • Measuring success: methods and metrics o examples: defining user engagement and satisfaction metrics, or assessing the naturalness of smart interactions
  • 12 cfu a scelta nel gruppo SW-1 affini da 6 cfu al primo anno

    • Insegnamenti affini da 6 cfu nel curriculum SW attivati al primo anno
    • Security methods and verification (6 cfu)

      • Objectives introduction some notions and problems that concern the security of net applications and presentation of some formalisms and techniques to address them. - Introduction to security - Security models - Cryptographic protocols: formal description, security properties, static and dynamic analysis techniques - Language-based security: problems and properties, formalisms, methods and techniques, history-based security, web-services security and service orchestration.
    • ICT infrastructures (6 cfu)

      • The goal of the course is to introduce students to the computing infrastructures powering cloud services. At the end of the course a student should be able to understand the general organization of a datacenter and the logical infrastructure that power virtualization and containers. The course starts from physical infrastructures such as power and datacenter organization. The network fabric is introduced, with particular focus on SDN techniques used to balance East-West and North-South traffic. Storage and compute are then introduced with special attention to hyperconverged systems. - Physical infrastructures (datacenters, energy and PUE, SCADAs) (1 CFU) - Networking (SDN and overlay, fabrics (RDMA, OPA, InfiniBand), monitoring techniques) (2 CFU) - Storage (SDS) (1 CFU) - Computing (hypervisor) (2 CFU)
    • Foundation of computing (6 cfu)

      • The goal of the course is to present the mathematical foundations of some advanced models of computation. The contents can vary along the years. In the current instance, detailed below, the focus is on algebraic and categorical foundations of calculi for higher-order and concurrent computing. Future instances of the course will focus on the mathematical foundations of other computational models, like Quantum Computing and Biologically Inspired Computational Mechanisms. No prerequisites are required except for some elementary knowledge of logic and algebra. - Simply typed lambda calculus - Curry-Howard isomorphism - PCF and its cpo model, with applications to functional programming languages - Elements of recursive and polymorphic types, with applications to object oriented programming languages - Categories as partial algebras - Monoidal, cartesian and cartesian closed (CCC) categories - CCC as models of simply typed lambda calculus - Algebraic specifications, categories of models and adjunctions - Petri nets and their (strictly) symmetric monoidal models - Labelled Transition Systems (LTS) as coalgebras - The Calculus for Communicating Processes (CCS) and its bialgebraic models - The Pi-Calculus and its presheaf coalgebraic models
    • Bioinformatics (6 cfu)

      • This course has the goal to give the student an overview of algorithmic methods that have been conceived for the analysis of genomic sequences, and to be able to critically observe the practical impact of algorithmic design on real problems with relevant applications. The exam, besides the obvious goal to evaluate the students understanding of the course contents, is additionally meant as a chance to learn how a scientific paper is like, and how to make an oral presentation on scientific/technical topics, as well as to design it for a specific audience. • A brief introduction to molecular biology • Sequences Alignments • Pattern Matching • Fragment Assembly • New Generation Sequencing • Motifs Extraction
    • Information Retrieval (6 cfu)

      • In this course we will study, design and analyze (theoretically and experimentally) software tools for IR-applications dealing with unstructured (raw data), structured (DB-centric) or semi-structured data (i.e. HTML, XML). We will mainly concentrate on the basic components of a modern Web search engine, by examining in detail the algorithmic solutions currently adopted to implement its main software modules. We will also discuss their performance and/or computational limitations, as well as introduce measures for evaluating their efficiency and efficacy. Finally, we will survey some algorithmic techniques which are frequently adopted in the design of IR-tools managing large datasets. -Search engines -Crawling, Text analysis, Indexing, Ranking -Storage of Web pages and (hyper-)link graph -Results processing and visualization -Other data types: XML, textual DBs -Data processing for IR tools -Data streaming -Data sketching -Data compression -Data clustering (sketch)
    • Computational models for complex systems (6 cfu)

      • The objective of this course is to train experts in systems modelling and analysis methodologies. Of course, this will require understanding, to some degree of detail, the mathematical and computational techniques involved. However, this will be done with the aim of shaping good modellers, that know the advantages/disadvantages/risks of the different modelling and analysis methodologies, that are aware of what happens under the hood of a modelling and analysis tool, and that can develop their own tools if needed. The course will focus on advanced modelling approaches that combine different paradigms and analysis techniques: from ODEs to stochastic models, from simulation to model checking. Case studies from population dynamics, biochemistry, epidemiology, economy and social sciences will be analysed. Moreover, synergistic approaches that combine computational modelling techniques with data-driven methodologies will be outlined. - Modelling with ODEs: examples - (Timed and) Hybrid Automata: definition and simulation techniques - Stochastic simulation methods (Gillespie’s algorithm and its variants) - Hybrid simulation methods (stochastic/ODEs) - Rule-based modelling - Probabilistic/stochastic model checking: principles, applicability and tools - Statistical model checking - Process mining (basic notions)
  • Secondo anno

  • Free choice (9 cfu)

    • Free choice exam to be approved by the Academic Board
  • Laboratory for innovative software (6 cfu)

    • Practical development of software requires an understanding of successful methods for bridging the gap between a problem to be solved and a working reliable software system. This course will train the student to develop large software systems working in real projects by exploiting the techniques and the skills acquired in the fundamental courses of the curriculum.
      The main novelty of the course is the attempt to balance traditional lectures and experimental activities with technical meetings with software architects of innovative software enterprises. During the course students will face and deal with the up-to-date issues of software design, implementation and testing of real projects. In this way students will also learn how to inspect actively software solutions.
      Each time the course is offered the design and implementation of a new innovative software artifact will be addressed, however the main underlying theme will always be building reliable code. To this purpose the course experiments modern techniques for making software more robust. These techniques include, but are not limited to:
      - Ad hoc static code analyses and tools.
      - Model checkers.
      - Code verification.
      - Machine learning techniques applied to code analysis.
      - Undefined behavior detectors.
      - Testing frameworks.
      - Language-based security frameworks.
      By the end of this class, students will have developed skills in three distinct competency areas
      Reliable coding:
      Writing code that is well organized at a high level; exploiting the best programming language features appropriately and avoiding troublesome ones; applying sophisticated idioms to structure code elegantly; using innovative toolkits to check program properties including automatable unit tests in the code base; preventing security attacks.
      Design:
      Analyzing problems to understand what the tricky aspects are; identifying key design issues, and analyzing their tradeoffs; selecting features for a minimal viable product.
      Professionalism:
      Constructing and delivering presentation of the deployed software; collaborating with team members; making constructive critiques.


  • Thesis (24 cfu)


  • Software validation and verification (9 cfu)

    • The goal of the course is to introduce techniques for verifying and validating software properties, either by analysing a model extracted from a program with model checking, or by testing the software before (the next) deployment, or equipping the running software with tools that monitor its execution.
      - Specifying software properties [2 CFU]
      o Assertions
      o Invariants, Safety and Liveness Properties, Fairness
      o Temporal logics: LTL, CTL, CTL*
      - Model Checking [4 CFU]
      o Transition systems and Program graphs
      o Checking regular safety properties
      o Checking omega regular properties with Büchi automata
      o Overview of Promela-SPIN and SMV
      o Extracting models from Java source code: BANDERA
      - Testing [3 CFU]
      o Coverage criteria and metrics: statement, function, branch, path and data-flow coverage
      o Test cases selection, prioritization and minimization
      o Automatic generation of test cases
      Topics to be chosen among:
      o Component-based and Service-oriented system testing
      o Object-oriented testing and Junit
      o Access Control Systems testing
      o Performance and other non-functional aspects testing

  • 9 cfu a scelta nel gruppo SW-2 affini da 9 cfu al secondo anno

    • Insegnamenti affini da 9 cfu del curriculum SW attivati al secondo anno
    • Computational mathematics for learning and data analysis (9 cfu)

      • The course introduces some of the main techniques for the solution of numerical problems that find widespread use in fields like data analysis, machine learning, and artificial intelligence. These techniques often combine concepts typical of numerical analysis with those proper of numerical optimization, since numerical analysis tools are essential to solve optimization problems, and, vice-versa, problems of numerical analysis can be solved by optimization algorithms. The course has a significant hands-on part whereby students learn how to use some of the most common tools for computational mathematics; during these sessions, specific applications will be briefly illustrated in fields like regression and parameter estimation in statistics, approximation and data fitting, machine learning, artificial intelligence, data mining, information retrieval, and others. - Multivariate and matrix calculus - Matrix factorization, decomposition and approximation - Eigenvalue computation - Nonlinear optimization: theory and algorithms - Least-squares problems and data fitting - MATLAB and other software tools (lab sessions with applications)
    • Advanced software engineering (9 cfu)

      • Objectives – The objective of the course is to introduce some the main aspects in the design, analysis, development and deployment of modern software systems. Service-based and cloud-based systems are taken as references to present design, analysis and deployment techniques. DevOps practices are discussed, and in particular containerization is introduced. The course includes a "hands-on" lab where students will experiment weekly the design, analysis, development and deployment techniques introduced. • Service-based software engineering (3 CFU) - core interoperability standards - software design by service composition, microservice architecture, examples of design patterns - business process modelling and analysis - service descriptions and service level agreements • DevOps practices (1.5 CFU) - DevOps toolchain, continuous delivery - Docker and containerization • Cloud-based software engineering (1.5 CFU) - service and deployment models - cross-cloud deployment and management of applications • Hands-on laboratory (3 CFU)
    • Machine learning (9 cfu)

      • We introduce the principles and the critical analysis of the main paradigms for learning from data and their applications. The course provides the Machine Learning basis for both the aims of building new adaptive Intelligent Systems and powerful predictive models for intelligent data analysis. - Computational learning tasks for predictions, learning as function approximation, generalization concept. - Linear models and Nearest-Neighbors (learning algorithms and properties, regularization). - Neural Networks (MLP and deep models, SOM). - Probabilistic graphical models. - Principles of learning processes: elements of statistical learning theory, model validation. - Support Vector Machines and kernel-based models. - Introduction to applications and advanced models. Applicative project: implementation and use of ML/NN models with emphasis to the rigorous application of validation techniques.
    • Mobile and cyber-physical systems (9 cfu)

      • The course covers mobile and cyber-physical systems by providing an overview of issues, solutions, architectures, technologies and standards. It offers to the students an overall, coherent view of the organization of internet of things (IoT) systems, from the networking and sensing levels to the applications. Specifically, it shows how mobile, heterogeneous elements (from low-end sensors to high-end devices) form pervasive networks integrated in the internet and how they interact among themselves and with the surrounding physical world.The course is organized in three parts. The first part (3 CFU) introduces the principles of wireless communications and network architectures for mobility management. The second part (4 CFU) presents the foundations of signal processing and sensing and discusses the applications of sensor networks. The third part (2 CFU) provides an overview of the main standards and platforms of the IoT. • Foundations of wireless technologies and mobility management (3 CFU) 5G mobile, ad hoc networks, mobile social networks, IEEE 802.x standards • Cyber-physical systems (4 CFU) Foundations of signal processing, wireless sensor networks, energy harvesting, localization, elements of embedded programming • Internet of Things (2 CFU) ZigBee, Bluetooth, sensor network gateways, IoT platforms & standards (OneM2M, FIWARE, COAP, MQTT)
    • Parallel and Distributed Systems: paradigms and models (9 cfu)

      • The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. Taking into account structured programming models (algorithmical skeletons, parallel design patterns) as well as those models based on components and services, all the problems related to the functional (expressive power, modularity and reuse) and non functional (performance, fault tolerance, adaptivity) concerns will be considered. In the last part protocols, features and issues related to wireless, multimedia and peer-to-peer architectures will be introduced along with the implications related to their usage to implement parallel/distributed applications. -Parallel and distributed programming paradigms -Structured programming -Components -Workflows -Implementation models -Posix-TCP/IP-SSH/SCP -RPC/RMI -Distributed Virtual Shared Memory -Parallel Virtual File Systems -“Middleware” systems (Globus, gLite, ...) -Distributed system architectures -Wireless networks -Multimedia networks -Peer-to-peer architectures
    • Advanced programming (9 cfu)

      • The objectives of this course are: to provide the students with a deep understanding of how high level programming concepts and metaphors map into executable systems and which are their costs and limitations to acquaint the students with modern principles, techniques, and best practices of sophisticated software construction to introduce the students to techniques of programming at higher abstraction levels, in particular generative programming, component programming and web computing to present state-of-the-art frameworks incorporating these techniques. This course focuses on the quality issues pertaining to detailed design and coding, such as reliability, performance, adaptability and integrability into larger systems. -Programming Language Pragmatics -Run Time Support and Execution Environments -Generic Programming -Class Libraries and Frameworks -Generative Programming -Language Interoperability -Component Based Programming -Web Services -Web and Application Frameworks -Scripting Languages
    • Smart applications (9 cfu)

      • The course aim is to explore methods and technologies for the development of smart connected applications, i.e. applications which exhibit intelligent behaviour -- through the use of artificial intelligence techniques introduced in other courses -- and that are deployed in immersive environments, including smart objects (as embodied by Internet of Things devices), mobile devices (smartphones, tablets), wearables (smartwatches, fitness trackers), home automation devices, web technologies, and cloud services and infrastructure. As such, applications considered for the course will include elements of context-awareness, sensor intelligence, spoken-language interfaces, The course will be based around a single case study for a novel smart application; students will cooperate as a single team, under the leadership of the instructor, in the design and implementation of a complete solution. In addition to standard lectures, classroom activities will include workshop-like sessions, where alternative designs are discussed, decisions are taken, and tasks are assigned. Weekly homework on the various phases of the joint project will be assigned to the team, and results reviewed the following week. The final goal is the delivery of a fully-functioning prototype of a smart application addressing the initial problem. While the specific technologies adopted for each case study will vary based on needs and opportunities, the following general themes will be explored in lectures (examples of specific subjects are noted next to each theme): • Introduction to the course and to the case study o examples: a voice-activated ambient assistant to answer student queries about the logistics of lectures in a classroom building, or autonomous software for a robotic rover for exploring inaccessible environments • Common designs for smart applications o examples: fuzzy logic in control systems or cloud analysis of field sensors data streams • Make or buy: selecting appropriate procurement strategies o example: writing your own RRN architecture vs. using cloud services • Development platforms for smart objects o examples: Brillo (IoT devices) or Android TV (Smart TVs) • Development platforms for smart architectures o examples: TensorFlow (server-side RNNs), or the Face Recognition API (mobile) • Cloud services for smart applications o examples: Google Cloud Machine Learning API, Google Cloud Vision API, Google Cloud Speech API, or Deploying Deep Neural Networks on Microsoft Azure GPU VMs • Deployment and operations o examples: cloud hosting vs. device hosting, or harnessing user feedback to drive improvement • Measuring success: methods and metrics o examples: defining user engagement and satisfaction metrics, or assessing the naturalness of smart interactions

Questo sito utilizza solo cookie tecnici, propri e di terze parti, per il corretto funzionamento delle pagine web e per il miglioramento dei servizi. Se vuoi saperne di più, consulta l'informativa