Architetture dei sistemi di elaborazione
1° anno · 1° semestre · 10 CFU · ING-INF/05 · 0 file
Conoscenza delle architetture delle diverse classi di processore, con particolare riferimento ai processori pipelined e ARM. - Conoscenza delle architetture superscalari e multi-process and multithread - Conoscenza delle…
Scheda dell'insegnamento
Obiettivi formativi
- Conoscenza delle architetture delle diverse classi di processore, con particolare riferimento ai processori pipelined e ARM. - Conoscenza delle architetture superscalari e multi-process and multithread - Conoscenza delle architetture della memoria centrale nelle sue varie gerarchie (ad esempio cache L1, L2,') - Conoscenza delle caratteristiche dei bus di sistema, di cpu e di I/O - Conoscenza delle tecniche per la programmazione delle funzionalità del processore e per il controllo degli I/O. - Capacità di scrivere firmware in codice in assembler e C, inclusa la gestione di dispositivi di I/O - Uso di ARM-based boards, incluso programmazione e debug
Programma
Il corso è insegnato in italiano Insegnamento obbligatorio per Laurea Magistrale in Ingegneria Informatica, collocato al I periodo didattico del I anno. Il corso ha lo scopo di fornire una conoscenza sull'architettura dei sistemi di elaborazione, con particolare riferimento ai sistemi basati su microprocessore. Il corso analizzerà le varie componenti di un sistema di elaborazione: dall'architettura interna dei microprocessori alla gestione dei principali periferici.
- Approfondimenti sull'architettura base di un microprocessore • Introduzione alle architetture moderne dei microprocessori • Architetture dei processori CISC, RISC e superscalari: analisi delle caratteristiche e delle prestazioni • Pipeline, hazards, stalls and counter-measurements • Flusso di sviluppo di applicazioni di sistemi embedded attraverso l'utilizzo di una scheda di sviluppo basata su processore ARM • Tecniche avanzate di programmazione di sistemi embedded in C e ASM: teoria e pratica. • Tecniche avanzate di programmazione di un sistema su board: LEDs, pulsanti, timer, GPI0, loudspeaker, potenziometro, UART port.
Modalità d'esame
Modalita di esame: Test informatizzato in laboratorio; Prova orale facoltativa; Prova pratica di laboratorio;
Exam: Computer lab-based test; Optional oral exam; Practical lab skills test;
... L'esame è costituito da una prova scritta e da una prova orale (opzionale), delle quali la prima e' articolata in due parti. Parte 1) consiste in esercizi sugli argomenti svolti a lezione e svolta su foglio protocollo. Gli argomenti possibili sono la valutazione della durata, il costo hardware e l'ottimizzazione di codice ASM per architetture moderne. Durante lo svolgimento della prova NON è possibile consultare testi o appunti relativi a tali argomenti. Parte 2) consiste nello sviluppo al PC (prova svolta in laboratorio) di un programma in linguaggio C + ASM ARM funzionante sulla board di riferimento, includendo temporizzazioni, interrupt e capacità di gestire l'output. Durante lo svolgimento della prova è consentito consultare testi e materiale relativo a tali argomenti. Punteggio massimo = 30/30 punti; punteggio minimo per superare la prova = 18 punti. La durata totale delle due prove scritte (parte 1 + parte 2) e' di 2 ore. Entrambe le prove vanno superate singolarmente nel medesimo appello; il non superamento anche di una sola delle due comporta la registrazione della bocciatura ed il dover ripetere entrambe le prove in un appello successivo. Un progetto finale realizzato durante i laboratori finali sarà oggetto di valutazione e può portare fino a 4 punti extra da sommarsi al voto della prova qualora positivo. Se il punteggio totale conseguito sara' superiore o uguale a 32.5 (prima dell'arrotondamento) comporterà l'attribuzione della lode. Il docente ha, indipendentemente dalla scelta dello studente, la facoltà di procedere all'esame orale nel caso ritenga sia opportuno un approfondimento.
Testi di riferimento
- J.L. Hennessy, D.A. Patterson, Computer Architecture: a Quantitative Approach, Morgan Kaufmann Publishers, Inc., VI Edition, 2017 • Steve Furber, ARM system-on-chip architecture, Addison-Wesley, 2000. • Muhammad Ali Mazidi, Sepehr Naimi, Sarmad Naimi, Shujen Chen, Arm Assembly Language Programming and Architecture, MicroDigitalEd, 2016 Materiale aggiuntivo (slides ed esercizi) fornito dal Docente dell'insegnamento. www.cas.polito.it
Codice insegnamento 02GOLYG
Big data processing and analytics
1° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
The course aims at providing: • Knowledge of the main problems and opportunities arising in the big data context and technological characteristics of the infrastructures and distributed frameworks used to deal with big…
Scheda dell'insegnamento
Obiettivi formativi
The course aims at providing: • Knowledge of the main problems and opportunities arising in the big data context and technological characteristics of the infrastructures and distributed frameworks used to deal with big data (e.g., Hadoop and Spark). • Ability to write distributed programs to process and analyze data by means of novel programming paradigms: MapReduce and Spark-based programming paradigms • Knowledge of the (relational and non-relational) databases systems that are used to store big data
Programma
In the big data era, novel data management and data analytic frameworks are needed. Specifically, to manage and fruitfully exploit the big amount of available heterogeneous data, novel data models, programming paradigms, data processing systems, and frameworks have been proposed. The course addresses the challenges arising in the Big Data era. Specifically, the course will cover how to store, retrieve, and analyze big data to extract useful knowledge and hints. The course covers not only data models and data analytics aspects but also novel programming paradigms (i.e., MapReduce and its extensions) and discusses how they can be exploited to support big data engineers and scientists to manage and extract insights from data.
Lectures (45 hours) • Introduction to Big data: characteristics, problems, opportunities (3 hours) • Hadoop and its ecosystem: infrastructure and basic components (1.5 hours) • Map Reduce programming paradigm (10.5 hours) • Spark: Spark Architecture, RDD-based and Spark SQL-based programming (15 hours) • Streaming data analytics: Spark Streaming (6 hours) • Data mining and Machine learning library: Spark MLlib (7.5 hours) • Databases for Big data: data models, design, and querying (1.5 hours) Laboratory activities (15 hours) • Development of applications by using Hadoop and Spark (15 hours)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Copies of the slides used during the lectures, examples of written exams and exercises, and manuals for the activities in the laboratory will be made available. All teaching material is downloadable from the course website or the Portal. Reference books: • Matei Zaharia, Bill Chambers. Spark: The Definitive Guide (Big Data Processing Made Simple). O'Reilly Media, 2018. • Advanced Analytics and Real-Time Data Processing in Apache Spark. Packt Publishing, 2018. • Tom White. Hadoop, The Definitive Guide. (Third edition). O'Reilly Media, 2015.
Codice insegnamento 01DSHYG
Cloud Computing Technologies
1° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of computing virtualization technologies (CPU, memory, I/O), including lightweight virtualization techniques (e.g., namespaces, Linux containers, Docker) - Knowledge of different cloud computing models…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of computing virtualization technologies (CPU, memory, I/O), including lightweight virtualization techniques (e.g., namespaces, Linux containers, Docker) - Knowledge of different cloud computing models (public/private/hybrid, IaaS/PaaS/SaaS) - Knowledge of common open-source service orchestrators (e.g., OpenStack, OpenShift, Kubernetes) - Knowledge of cloud automation concepts and tools (e.g., Ansible) - Knowledge of main security and privacy topics in cloud computing services
Programma
Optional course, offered in the Master Degree in Computer Engineering, 1st teaching period, 2nd year. This course will focus on cloud technologies, which represent and important and growing field in computer engineering. The course will provide a good understanding of main cloud computing technologies, namely full virtualization and lightweight virtualization (e.g., namespaces, containers), orchestrators, and tools for service deployment, monitoring, and maintenance. Security aspects will be presented as well, Teaching labs will focus on service creation and deployment with different orchestrators, namely OpenStack and Kubernetes, and support tools such as Ansible.
Benefits and historical perspective of cloud computing (0,2cr) Full virtualization technologies: CPU, memory and I/O virtualization (0,6 cr) Lightweight virtualization: Cgroups, namespaces, Linux containers, Docker (0,2 cr) Cloud computing models: public/private/hybrid, IaaS/PaaS/SaaS (0,2 cr) Cloud computing orchestrators: components and interactions (0,8 cr) Open-source orchestrators: OpenStack, OpenShift, Kubernetes, Mesos (1,6 cr) Cloud automation (0,6 cr) Cloud security (0,5 cr) Privacy in cloud computing (0,4 cr) Lab (0,9 cr)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Given the very recent content of this course, no textbook is available. Students will be provided with slides used in class, pointers to scientific papers to deepen the knowledge on some selected topics, exercises, and lab assignments. All the material will be freely available from the web.
Codice insegnamento 01HFPYG
Computer animation
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Le competenze acquisite sono sia teoriche sia pratiche, in quanto gli argomenti svolti a lezione sono integrati da esercitazioni in laboratorio, mirate alla realizzazione di un video con l’uso di strumenti software di…
Scheda dell'insegnamento
Obiettivi formativi
Le competenze acquisite sono sia teoriche sia pratiche, in quanto gli argomenti svolti a lezione sono integrati da esercitazioni in laboratorio, mirate alla realizzazione di un video con l’uso di strumenti software di modellazione, animazione e rendering. In particolare, lo studente acquisirà la: - conoscenza della cinematica diretta e inversa e l'abilità di posizionare un personaggio virtuale mediante l'utilizzo di catene cinematiche; - conoscenza delle principali tecniche di controllo del moto e l'abilità di applicarle nell'animazione di personaggi virtuali; - capacità di utilizzare tecniche di animazione non lineare per la creazione di video in computer animation; - capacità di analizzare e realizzare sistemi vincolati; - conoscenza delle principali tecniche di deformazione e morphing e l'abilità di applicare tali conoscenze per la realizzazione di video in computer animation; - conoscenza delle principali tecniche di rilevamento e gestione delle collisioni; - conoscenza dei sistemi particellari e abilità nell'applicare queste conoscenze per la simulazione di fenomeni come: gas, fuoco, fumo, pioggia, ecc.; - conoscenza e abilità di utilizzare le principali tecniche per la simulazione di corpi deformabili e liquidi; - conoscenza dei principali formati video.
Programma
L'insegnamento è insegnato in italiano. La computer animation è largamente diffusa per produrre pubblicità , corti di animazione e film. In particolare, l'animazione 3D riveste un ruolo chiave sia per l'industria dell'intrattenimento sia per le produzioni multimediale. L'animazione 3D è anche propedeutica allo sviluppo di applicazioni di realtà virtuale e aumentata. L'insegnamento ha l’obiettivo di presentare le tecniche e le metodologie per la produzione al calcolatore di video e animazioni 3D. Partendo dalle tecniche di modellazione delle scene, vengono affrontate le problematiche inerenti il posizionamento delle luci, i movimenti di camera, le animazioni dei personaggi, gli algoritmi di rendering e di codifica dei filmati. Oltre agli approfondimenti teorici verrà dato ampio spazio alla sperimentazione in laboratorio al fine di sviluppare le competenze necessarie per poter realizzare dei corti in 3D computer animation.
Argomenti trattati nelle lezioni e relativo peso in crediti: - tecniche di controllo del moto e gestione delle collisioni (2 CFU); - posa e animazione di personaggi virtuali mediante catene cinematiche (1 CFU); - tecniche di deformazione (1 CFU); - corpi deformabili e fluidi (1 CFU); - sistemi particellari e flocking (1 CFU)
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Prova orale obbligatoria; Elaborato progettuale in gruppo;
Exam: Written test; Compulsory oral exam; Group project;
... L’esame è volto ad accertare la conoscenza teorica degli argomenti elencati nel programma dell'insegnamento di Computer Animation mediante una prova scritta e la capacità di applicare le tecniche di computer animation illustrate durante i laboratori per la realizzazione di un video che deve essere presentato e discusso durante una prova orale. La prova scritta, della durata di un'ora, consiste nel rispondere a quattro domande a risposta aperta; una o due domande possono essere sostituite da esercizi. La prova orale consiste nella discussione di un progetto di gruppo (il progetto riguarderà lo sviluppo di un video in 3D computer animation). Valgono le seguenti regole: - è necessario prenotarsi per l'esame; - è necessario presentarsi all’esame muniti di un documento d’identità con foto; - durante l’esame non è possibile consultare né libri né appunti. Il voto finale dell'esame è determinato per metà dalla parte scritta e per metà dalla parte orale. Entrambe le parti devono essere sufficienti (ovvero l'allievo deve conseguire una votazione di almeno 18/30 per entrambe le parti) per il superamento dell'esame. In particolare, per la parte scritta, le quattro domande/esercizi assegnano un punteggio di 7,5/30 ciascuna. Il voto finale è la media dei due voti (espressi in trentesimi); la lode potrà essere assegnata solo in caso di progetti particolarmente meritevoli.
Testi di riferimento
- R. Parent. Computer Animation, Third Edition: Algorithms and Techniques , Morgan Kaufmann, ISBN-13: 978-0124158429 . (libro di testo) - Materiale e documentazione su Blender: http://www.blender.org - Dispense sul sito della didattica: http://didattica.polito.it (materiale addizionale come le slide dell'insegnamento)
Codice insegnamento 01NPZYG
Computer architectures
1° anno · 1° semestre · 10 CFU · ING-INF/05 · 0 file
Knowledge of several processor architectures, with particular attention paid to x86, ARM and MIPS families - Superscalar and multithread architectures - Knowledge of the sw/hw architecture of an embedded system -…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of several processor architectures, with particular attention paid to x86, ARM and MIPS families - Superscalar and multithread architectures - Knowledge of the sw/hw architecture of an embedded system - Knowledge about system bus, cpu and I/O characteristics - Competences about I/O management and interface design - Competences about development of applications for embedded systems - Assembly code implementation for I/O device management.
Programma
The course is taught in English. Mandatory course for Laurea Magistrale in Computer Science Engineering, in the first year and first semester of the course. The purpose of the course is to provide a better knowledge on the elaboration system architecture, with a particular attention to microprocessor based systems. The course analyzes the several components of an elaboration system: from the microprocessor internal architecture, up to system bus for peripheral devices management.
- Advanced description of the basic microprocessor architecture • Introduction to modern microprocessor architectures • CISC, RISC and superscalar processor architectures, behavior and performance • Microprocessor-based systems architecture • Development flow of embedded system applications using a development board • Advanced programming techniques for embedded systems: theory and practice • Advanced assembly programming techniques (ARM, 8086): theory and practice.
Modalità d'esame
Modalita di esame: Test informatizzato in laboratorio; Prova orale facoltativa; Elaborato progettuale individuale;
Exam: Computer lab-based test; Optional oral exam; Individual project;
... The exam consists of a written plus a (mandatory) oral part. The written part is further divided into two sub-parts: 1. The first sub-part consists of open&closed questions about subjects covered during lectures. While this sub-part is being run, it is not possible to use any book or other material. Max score = 8 points; minimum score to have this first sub-part passed = 4 points. 2. The second sub-part consists of the development of an assembly program. While this sub-part is being run, it is possible to use only printed books and/or documents in electronic format downloaded from the web site of the course (Portale della Didattica). Maximum score = 18 points; minimum score to have this second sub-part passed = 10 points. The written part (=first+second sub-parts) lasts from 2 to 3 hours and has to be passed in both its two sub-parts. Failing one of the two sub-parts will imply a rejection. The correction of the written tests takes place during the oral part; the presence of the student is required, otherwise his/her vote will be rejected / refused. Points in the two parts are added up. At the end of the correction, the student will be able to continue the oral exam, consisting of at most three additional questions adding up to 8 more points. The first oral question (max 3 points) will be, by definition, always on laboratory exercises, while the other two will cover in full the course's program. Failure to satisfactorily responding a question, will imply a negative score for that question and the possible termination of the oral exam. If less than 18 points are obtained, a rejection will be registered. Professor(s) has (have) the right to ask at any time oral questions to get a better and more complete picture of the student's preparation. The final grade will be determined by adding up all the points collected by the student and rounding the numerical result. Laude will be granted to all students whose number of points exceeds 31.5 (before rounding). Overall, the exam is targeted at evaluating the students both from their abilities to design, write and run assembly programs, and their knowledge of modern computing systems architectures.
Testi di riferimento
- J.L. Hennessy, D.A. Patterson, Computer Architecture: a Quantitative Approach, Morgan Kaufmann Publishers, Inc., VI Edition, 2017 • Steve Furber, ARM system-on-chip architecture, Addison-Wesley, 2000. Optional additional material provided by the Lecturers.
Codice insegnamento 02LSEYG
Computer graphics
1° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
The goal of this course is to enable students to understand the functioning of a graphics system from both a software and hardware perspective. Furthermore, students will learn to analyze, design, and evaluate…
Scheda dell'insegnamento
Obiettivi formativi
The goal of this course is to enable students to understand the functioning of a graphics system from both a software and hardware perspective. Furthermore, students will learn to analyze, design, and evaluate different types of graphic applications, develop related content, and manage the resulting outputs. In particular, students will acquire knowledge in the following areas: - The human visual system - Color perception and representation - Architectures of graphic systems - Graphic primitives - 3D model geometry and manipulation - Lighting and rendering models - Design of graphic applications and interaction techniques - Main graphics software, libraries, and programming languages Students will also develop skills related to: - Creating and manipulating 3D content through polygonal modeling and managing it using graphics libraries or engines - Configuring light sources and graphical attributes (color, transparency, etc.) of 3D content - Using textures to control the appearance of a 3D object - Configuring a rendering engine to achieve the desired level of realism - Managing basic functionalities of a physics engine - Solving practical problems related to the development of an interactive graphic application
Programma
This course aims to provide the students with the essentials of computer graphics, i.e. of the generation of computer images and the development of graphics applications. The course will illustrate the key techniques for producing virtual scenes, generating photorealistic images, managing 3D content, etc. Architectures, hardware devices, software, and algorithms specific to computer graphics will be described. The attention will be devoted also to aspects pertaining to the interaction between human and images, which plays a key role for a wide range of applications.
General outline of the 27 hours of classroom lessons: - The human visual system, light perception, and color representation - Transformations and coordinate systems - 3D geometries, curves, surfaces, and their representations - Lighting models - Primitives and the graphics pipeline - Interactive rendering and photorealism - Graphics system hardware and peripheral devices
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Textbooks (to be selected depending on software tools actually chosen): - Introduction to Computer Graphics, Foley, Van Dan, Feiner, Hughes, Phillips - The Complete Guide to Blender Graphics: Computer Modeling & Animation, Blain - Hands-On Unity Game Development, Borromeo, Gomila Salas - 3D Game Development with Godot 4.x, Millie - OpenGL Programming Guide: The Official Guide to Learning OpenGL, Kessenich, Sellers Further references could be provided at the beginning or during the course, if needed.
Codice insegnamento 03KPWYG
Computer network technologies and services
1° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Students will build up knowledge (at a different level of depth depending on the specific topic) and deep understanding of mechanisms and motivations underlying the following technologies and solutions: - IPv4 network…
Scheda dell'insegnamento
Obiettivi formativi
Students will build up knowledge (at a different level of depth depending on the specific topic) and deep understanding of mechanisms and motivations underlying the following technologies and solutions: - IPv4 network design - IPv6 protocol and techniques to support its co-existence with IPv4. - IPv6 network design - Ethernet local area network design - The most popular techniques and protocols used to implement Virtual Private Networks (VPN), both customer-provisioned and provider-provisioned. - MPLS protocol architecture - Protocols and techniques for quality of service on IP networks - Optical networks
Programma
The course delves into the design principles of basic technologies underlying modern computer networks (Ethernet, IPv4 and IPv6), addresses advanced topics related to the workings of the Internet, such as routing architecture and protocols, and presents a number of technological solutions that play a key role in services commonly offered through the Internet.
- IPv4 network design (0.8 CFU) - IPv6 protocol, coexistence with IPv4, and IPv6 network design (1.8 CFU) - Routing in the Internet (0.8 CFU) - Virtual Private Networks (1 CFU) - Techniques for quality of service (QoS) support (0.2 CFU) - MPLS (0.6 CFU) - Optical networks (0.2 CFU)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Due to the advanced nature of the topics addressed by the course, they are not covered by a single textbook or a limited number of textbooks. The course website provides, besides the overheads used during lectures, a list of links to documents publicly available over the Internet and references to book chapters that address the various topics discussed during lectures.
Codice insegnamento 01OTWYG
Convex optimization and engineering applications
1° anno · 1° semestre · 6 CFU · ING-INF/04 · 0 file
To give students the tools and training to recognize convex optimization problems that arise in engineering and other branches of science; to present the basic theory of such problems, concentrating on results that are…
Scheda dell'insegnamento
Obiettivi formativi
To give students the tools and training to recognize convex optimization problems that arise in engineering and other branches of science; to present the basic theory of such problems, concentrating on results that are useful in computation; to give students an understanding of how such problems are solved, and some experience in solving them.
Programma
Optimization is a technology that can be used for devising effective decisions or predictions in a variety of contexts, ranging from production planning, to engineering design, finance, machine learning and data science, to mention just a few. In simplified terms, the process for reaching a decision starts with a phase of construction of a suitable mathematical model for a concrete problem, followed by a phase where the model is solved by means of suitable numerical algorithms. An optimization model typically requires the specification of a quantitative objective criterion of goodness for our decision, which we wish to maximize (or, alternatively, a criterion of cost, which we wish to minimize), as well as the specification of constraints, representing the physical limits of our decision actions, budgets on resources, design requirements than need be met, etc. An optimal design is one who gives the best possible objective value, while satisfying all problem constraints. While a generic optimization approach typically leads to computational problems that are very hard to solve in practice, convex problems, which are the core of this course, possess special properties that make them amenable to very efficient numerical solution techniques. This course therefore concentrates on recognizing, modeling and solving convex optimization problems that arise in several scientific contexts (engineering, finance, control, data science, etc.), and in showing the relevance of these methodologies in practical applications.
Introduction, convex sets and convex functions. Optimization problems in standard form, optimality criteria. Systems of linear equations, Least Squares (LS), Linear Programming (LP), Ell-one norm optimization, Chebychev approximation. Application examples: generation of force/torque via thrusters, uniform illumination of patch surfaces, etc. Quadratic Programming (QP) and Second Order Cone Programming (SOCP). Application examples (e.g. FIR filter design, antenna array design, sidelobe level minimization, etc.). Linear Matrix Inequalities (LMI) and semidefinite programming (SDP). Geometric programming (GP). Software tools (CVX and/or YALMIP). Applications: data-fitting, approximation and estimation, uncertain and robust Least Squares, portfolio optimization. Geometrical problems: containment of poyhedra, classification, Lowner-John ellipsoids, linear discrimination, support vector machines. Focus topics (mutually exclusive, to be offered alternatively over years): - LMIs in systems and control theory. - Sparse optimization and compressed sensing. - Convex optimization in Finance. - Convex optimization in algebraic geometry, global polynominal positivity (positivstellensaatz). - Network optimization, distributed optimization.
Modalità d'esame
Modalita di esame: Prova scritta (in aula);
Exam: Written test;
... The final exam consists in a written test, which will contain a mixture of methodological questions and numerical exercises (to be executed with pen and paper; use of a calculator is allowed) and which will take the form of multiple-choice questionar. The final score will be computed as a weighted average of the written exam score (70%) and a score counting the presence and participation to the lab sessions (30%).
Testi di riferimento
G.C. Calafiore and L. El Ghaoui, Optimization Models, Cambridge Univ. Press, 2014. S. Boyd and L. Vandenberghe; Convex Optimization, Cambridge Univ. Press, 2004.
Codice insegnamento 01OUWYG
Cybersecurity for Embedded Systems
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Having successfully completed the course, the participant will: • Get familiar with the basic concepts of security • Get familiar with the most significant aspects of security of Embedded Systems in terms of: o System…
Scheda dell'insegnamento
Obiettivi formativi
Having successfully completed the course, the participant will: • Get familiar with the basic concepts of security • Get familiar with the most significant aspects of security of Embedded Systems in terms of: o System Security o Secure Programming o Hardware and Hardware-based Security • For each field, get familiar with its main o Vulnerabilities o Attacks o Countermeasures • Get significant hands-on experiences on: o the open-source security-oriented platform SEcube™ o static code analysis tools.
Programma
The course is taught in English and it aims at presenting the most significant aspects of security of Embedded Systems (ES), covering both hardware and software security issues related to embedded devices, including their most common weakness, vulnerabilities, attacks and possible mitigations and remediations. The course mixes lectures and hands-on-experiences, with a particular emphasis on the open-source security-oriented platform SEcubeâ„¢. The course includes a final project, in which students, clustered in teams, are asked to face some hot topics in Embedded Systems security and to presents detailed reports on them. The course is enriched by presentations of relevant case studies from industrial testimonials and researchers.
NOTE: For students with previous acquired experiences in Cybersecurity, alternative topics and teaching materials will be provided while overlapping aspects are encountered. • Introduction to Cybersecurity and Cybersecurity for Embedded Systems: [3 h] o Security – An Introduction o Cybersecurity – Definition & relevance o Security Pillars o Vulnerabilities o Attacks • Basics of Cryptography: [4.5 h] o Introduction to cryptography and classical ciphers o Symmetric encryption and block ciphers o Asymmetric encryption & Key Exchange o Hash functions o Key Management Systems • Introduction to Software Security: [1.5 h] o Malicious execution and malwares: definition o Isolation and access control • System Security: [7.5 h] o Concept of OS Security o Memory Management & Protection o CPU privilege levels o Trusted Execution Environment (TEE) o Root of Trusts • Secure Programming: [7.5 h] o Common Weaknesses and Vulnerabilities (CWE, CVE) Memory Vulnerabilities Structured Output Generation Vulnerabilities Race Condition Vulnerabilities API Vulnerabilities Information Leakage o Common coding standards MISRA CERT • Hardware Security: [6 h] o Introduction & Taxonomy o Side-Channel Attacks o Fault Attacks o Test-infrastructure-based Attacks o Invasive Attacks o Hardware Trojans • Hardware-based security: [3 h] o Introduction & Basic concepts o Implementations • Hardware Trust [3 h] o Introduction & Basic Concepts o Hardware Counterfeiting o True Random Number Generators (TRNG) o Physically Unclonable Functions (PUF) • Cybersecurity Governance and Standards [3 h] • Presentations of relevant case studies from industrial testimonials and researchers [6 h]
Modalità d'esame
Modalita di esame: Elaborato scritto prodotto in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Group essay; Computer-based written test in class using POLITO platform;
... The course exam will consist in: • final assessment of the delivered item/product provide by each group (70% of the overall evaluation) • oral exam with questions on the topics covered in the course (30% of the overall evaluation).
Testi di riferimento
- Copies of the teaching materials used for both the lectures and the Labs; • User and programming manuals of the open-source security-oriented platform SEcube™;
Codice insegnamento 01UDNYG
Data Science and Database Technology
1° anno · 1° semestre · 8 CFU · ING-INF/05 · 0 file
Knowledge of the main technological characteristics of a database management system: concurrent data access management, reliability, physical level structures, data access optimization. - Ability to design the physical…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of the main technological characteristics of a database management system: concurrent data access management, reliability, physical level structures, data access optimization. - Ability to design the physical data structures for a relational database. - Knowledge of distributed database system architecture and replication management. - Knowledge of active database systems and SQL statements for trigger definition. - Ability to write triggers in the SQL language. - Knowledge of data warehouse architecture and of the methodology for conceptual, logical, and physical design of a data warehouse. - Ability to design a data warehouse. - Knowledge of the SQL statements for OLAP queries in a data warehouse. - Ability to write OLAP queries in the SQL language. - Knowledge of the major data mining algorithms for classification, clustering, and association rule mining.
Programma
The course is taught in English. The course, compulsory for the Master degree in Computer Engineering, is offered on the 1st semester of the 1st year. The course addresses the fundamental issues in the technology of database management systems and introduces database management techniques for data warehouses (database systems specialized in strategic decision support), typically characterized by the need of managing very large databases. Both traditional OLAP (On Line Analytical Processing) analysis techniques and complex data mining techniques will be addressed. Laboratory sessions allow experimental activities, both on technological characteristics and data analysis, on the most widespread commercial and open-source products.
- Technological characteristics of a database management system: concurrent data access management, reliability, physical level structures, data access optimization (1.8 cr.) - Active database systems and SQL statements for trigger definition (0.4 cr.) - Distributed database system architecture and replication management (0.4 cr.) - Data warehouses: architecture, methodology for conceptual, logical, and physical design, SQL statements for OLAP queries (1.4 cr.) - Data mining algorithms: classification, clustering, and association rule mining (1.6 cr.)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Reference books: - Atzeni, Ceri, Paraboschi, Torlone, 'Database systems', 1 ed., McGraw Hill, 1999. - Golfarelli, Rizzi, 'Data warehouse: teoria e pratica della progettazione', 2 ed., McGraw Hill, 2006. - Tan, Steinbach, Kumar, 'An introduction to data mining', Addison Wesley, 2005. Copies of the slides used during the lectures, examples of written exams and exercises, and manuals for the activities in the laboratory will be made available. All teaching material is downloadable from the course website or the Portal.
Codice insegnamento 01SQJYG
Data Science e Tecnologie per le Basi di Dati
1° anno · 1° semestre · 8 CFU · ING-INF/05 · 0 file
Conoscenza delle caratteristiche tecnologiche di un sistema per la gestione di basi di dati: gestione dell'accesso concorrente ai dati, affidabilità , strutture del livello fisico, ottimizzazione dell'accesso ai dati.…
Scheda dell'insegnamento
Obiettivi formativi
- Conoscenza delle caratteristiche tecnologiche di un sistema per la gestione di basi di dati: gestione dell'accesso concorrente ai dati, affidabilità , strutture del livello fisico, ottimizzazione dell'accesso ai dati. - Capacità di eseguire la progettazione fisica di una base di dati relazionale. - Conoscenza dell'architettura delle basi di dati distribuite e della gestione della replicazione. - Conoscenza delle basi di dati non relazionali (NoSQL) - Capacità di scrivere interrogazioni su basi di dati non relazionali - Conoscenza dell'architettura dei sistemi per l'analisi dei dati (data warehouse) e delle metodologie di progettazione concettuale, logica e fisica di un data warehouse. - Capacità di progettare un data warehouse. - Conoscenza dei costrutti del linguaggio SQL per la formulazione di interrogazioni OLAP per data warehouse. - Capacità di scrivere interrogazioni OLAP nel linguaggio SQL. - Conoscenza dei principali algoritmi di machine learning per la classificazione, il clustering e l'estrazione di regole di associazione
Programma
Insegnamento obbligatorio per la Laurea Magistrale in Ingegneria Informatica, collocato al I pd del I anno: descrive gli aspetti fondamentali della tecnologia dei sistemi per la gestione delle basi di dati e le modalità di gestione delle basi di dati destinate all'analisi dei dati (normalmente denominate data warehouse), tipicamente caratterizzate dalla necessità di gestire grandi volumi di dati. Sono considerate sia le tecniche più tradizionali di analisi OLAP (On Line Analytical Processing) dei dati, sia le analisi complesse basate su tecniche di data mining. Le attività di laboratorio permettono di valutare le caratteristiche tecnologiche dei prodotti commerciali più diffusi e di sperimentare vari strumenti per l'analisi dei dati.
Argomenti trattati nell’insegnamento e relativo peso in crediti: - Caratteristiche tecnologiche di un sistema per la gestione di basi di dati: gestione dell'accesso concorrente, affidabilità , strutture del livello fisico, ottimizzazione dell'accesso (1.6 cfu) - Basi di dati NoSQL (MongoDB, Elastic): modello dei dati e linguaggi di interrogazione (0.6 cfu). - Architettura delle basi di dati distribuite e gestione della replicazione (0.4 cfu) - Data warehouse: architettura, metodologie di progettazione concettuale, logica e fisica, preparazione dei dati, istruzioni in linguaggio SQL per la formulazione di interrogazioni OLAP (1.4 cfu) - Processo di data science (0.4 cfu) - Algoritmi di machine learning: classificazione, clustering ed estrazione di regole di associazione (1.2 cfu) - Analisi di casi di studio mediante esercitazioni in aula e in laboratorio sugli argomenti trattati a lezione (2.4 cfu)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
I testi, scelti tra quelli elencati, saranno comunicati a lezione dal docente titolare dell'insegnamento: - Atzeni, Ceri, Fraternali, Paraboschi, Torlone, 'Basi di dati ', 6 ed., McGraw Hill, 2023. - Golfarelli, Rizzi, 'Data warehouse: teoria e pratica della progettazione', 2 ed., McGraw Hill, 2006. - Tan, Steinbach, Karpatne, Kumar, 'Introduction to data mining', 2 ed., Pearson, 2019. - Raghu Ramakrishnan and Johannes Gehrke. Database Management Systems. Third edition, McGraw Hill, 2003 - Dan Sullivan, NoSQL for Mere Mortals, Addison-Wesley Professional, 2015 - Kristina Chodorow, Shannon Bradshaw, MongoDB: The Definitive Guide (Powerful and Scalable Data Storage), 3 ed. O'Reilly Media, 2018 - Gormley, Tong, Elastic Search: The Definitive Guide, O’Reilly, 2015 Sono disponibili copie dei lucidi utilizzati nelle lezioni, esempi di prove scritte d'esame ed esercizi, e i manuali per le esercitazioni di laboratorio. Tutto il materiale didattico è scaricabile da un sito web o attraverso il portale.
Codice insegnamento 01SQMYG
Electronics for embedded systems
1° anno · 1° semestre · 10 CFU · ING-INF/01 · 0 file
Knowledge of various types of amplifier stages and their applications; analysis and circuit design capabilities, with selection of components to evaluate the effects of various design choices. • Knowledge of existing…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of various types of amplifier stages and their applications; analysis and circuit design capabilities, with selection of components to evaluate the effects of various design choices. • Knowledge of existing memory types: type, access methods, physical model, interfaces, hierarchy; ability to choose based on cost / area / performance. • Knowledge of the architecture of high performance PLDs and FPGAs: internal architecture, design flow, optimizations for power consumption, size, speed. • Capacity to design digital operational units, to describe them in VHDL language, to simulate the behaviour and to implement them according to specifications (synthesis on programmable device, high-level programming on microprocessors, ...). • Knowledge of the structure of the main peripherals used: digital I/O, buffering strategies, timing systems, synchronous and asynchronous communication systems; ability to choose appropriate methodologies for implementation and interfacing. • Capacity to define the necessary blocks in an embedded system starting from a specification and to define the design constraints (microprocessor/microcontroller, memories, programmable devices, power systems, conversion systems, peripherals, bus) and their interfacing. • Knowledge of issues relating to interconnections: technologies, synchronous and asynchronous protocols, performance evaluation. • Knowledge of various types of A/D and D/A converters, their characteristics and associated circuits; ability to choose analog integrated components and design of the required circuits for their use and interfacing. • Knowledge of the characteristics of different types of voltage regulators, switching and dissipative, and criteria for selection of active and passive components; ability to design low power regulators.
Programma
Required course for the Embedded System curriculum, jointly held between Electronics Engineering and Computer Science master degree programs, in the first didactic period of the first academic year. The course aims to describe and test the major digital and analog blocks on a board and to identify key issues relating to their communication. In particular, it describes the main micro-architectural structures for the processing, control and storage of data and will make a practical description in the laboratory. Problems related to communication between blocks on the board (use of interfaces for complex communications systems, communication standards, etc…) are analysed and experimented in the laboratory. It outlines issues and will explore the use of different complex programmable and embedded systems on boards based on microprocessor or microcontrollers, FPGAs and current peripheral devices.
1) Embedded systems (0,5 CFU) a) Definition, classification and examples b) Design metrics (costs, performance, time to market) c) Anatomy of an embedded system and summary of course topics 2) Operational amplifier with feedback reminders (0,5 CFU) a) Amplifiers and filters b) Comparators 3) Memories (1 CFU) a) ROM, OTPROM, EPROM, EEPROM, Flash b) Static and dynamic RAMs c) Timing diagrams d) Memory composition and microprocessor interfacing e) Memory hierarchies and caches 4) Programmable logic (1,5 CFU) a) Programmable devices: PAL, PLA, CPLD b) Field Programmable Gate Array (FPGA) c) Technologies for FPGA d) Design flow e) FPGA resources (memories, multipliers, PLL, clock) f) IP selection, use and applications 5) Input/Output (1,5 CFU) a) Reminders on serial and parallel protocols, delays, skew b) Synchronous transmission and clock data recovery c) Examples: UART, SPI, I2C, CAN, USB d) Interconnection and signal integrity problems 6) Processor peripherals (2 CFU) a) General introduction to embedded processors and their peripherals b) Internal structure, address decoders, configuration registers c) Microprocessor interfacing: polling, interrupt, DMA d) Communication bus: AMBA 7) A/D and D/A conversion (1,5 CFU) a) Reminders on A/D and D/A conversion systems, sampling, aliasing, quantization, errors, ENOB b) D/A converters (classification, parameters, linear and non-linear errors) c) D/A converter circuits d) A/D converters (classification, static and dynamic parameters, linear and non-linear errors) e) A/D converter circuits (Flash, SAR, pipeline, staircase, tracking) f) Signal conditioning, anti-aliasing filter design g) Advanced converters (delta, sigma/delta) 8) Power electronics (1,5 CFU) a) Linear and PWM driving of loads b) Basic design principles of a voltage regulator c) Linear regulators (drop-out, ripple, currents) d) Switching regulators (Buck, Boost, Buck-Boost) e) Voltage references
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Prova orale facoltativa; Elaborato progettuale individuale;
Exam: Written test; Optional oral exam; Individual project;
... Written exam (3 hours time) with theoretical questions and numerical exercises and/or design, with a total of 5 questions/exercises, possibly with an optional oral discussion. With the written exam only it is possible to get 30/30 with honors. The optional oral exam can increase or decrease the final grade. During the written exam it is not possible to use books, notes or other material. Questions and exercises evaluate the theoretical knowledge and the capacity to apply it to practical cases. Reports for the laboratory sessions contribute to the final evaluation (up to 2 points). Individual projects can be considered in place of the written exam.
Testi di riferimento
C. Passerone, "Analog and Digital Electronics for Embedded Systems", CLUT, 2015 (reference text) F.Vahid, T. Givargis, "Embedded System Design: A Unified Hardware/Software Introduction", John Wiley and Sons Jan Rabaey, "Digital Integrated Circuits. A Design Perspective", Pearson Education, 2003 W. Dally, J. Poulton, " Digital Systems Engineering", Cambridge University Press. Course slides and solutions of past exams will be uploaded on the course web site.
Codice insegnamento 01NWMYG
Embedded operating systems and architectures
1° anno · 1° semestre · 8 CFU · ING-INF/05 · 0 file
Students will acquire knowledge, varying in depth depending on the specific topic, as well as skills and a profound comprehension of the mechanisms and motivations underlying the following technologies and solutions: -…
Scheda dell'insegnamento
Obiettivi formativi
Students will acquire knowledge, varying in depth depending on the specific topic, as well as skills and a profound comprehension of the mechanisms and motivations underlying the following technologies and solutions: - Concept of an embedded system. - Understanding of the development tools for embedded systems: cross-compiler, emulator, debug tools, profiling tools, and virtualization tools. - Concept of real-time embedded systems. - Understanding of examples of operating systems for embedded systems. - Skill for developing modules for communication with ad-hoc hardware components. - Understanding security issues in the embedded domain.
Programma
The course combines traditional classroom lectures with supervised exercise sessions, providing students with the opportunity to apply the concepts learned in practical scenarios and engage in discussions with the instructor. Additionally, certain topics within the course include dedicated lab sessions, allowing students to observe the practical implementation of related technologies and reinforce their understanding of the concepts covered in the lectures. The course is divided into two main components: classroom lectures and exercises, which account for 6 CFU (Crediti Formativi Universitari), and laboratory sessions, which contribute 2 CFU. Additionally, students will have the opportunity to be tutored for a total of 2 CFU.
Introduction to Embedded Systems (0.5 CFU) - Classification with respect to desktop systems. - Memory technology device. Development tools (0.5 CFU) - Cross-compiler. - Emulator. - Debugger. - Profiler. - Virtual platforms. Operating Systems for Embedded Systems (3 CFU) - Real-time and process scheduling. - Analysis of the architecture and services offered by operating systems for embedded: process scheduler, micriumOS, OSEK/VDX, Embedded Linux. - Anatomy of an operating system for embedded systems. Operating System Security (1 CFU) - HW/SW attack models - Countermeasures Programming of an embedded OS (2 CFU): - I/O management and device drivers. - Use of an evaluation board. - Building an OS for embedded systems: how to use development tools. - Design and development of device drivers for custom devices. Advanced tools for debugging and profiling embedded systems (1 CFU)
Modalità d'esame
Modalita di esame: Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Group project; Computer-based written test in class using POLITO platform;
... The examination consists of the following two components: PART 1.1: This part consists of a written test covering all class topics. The test may include various question types, such as open-ended and multiple-choice questions, exercises focusing on specific topics, and the development of small programs. Each question is assigned a score, which is announced during the exam. The exam is delivered on a computer. The maximum score achievable in this part is 18/30, and the test duration is 60 minutes. The threshold to pass this part is 10/30. PART 1.2 (required for students who do not opt for the group project): This part consists of programming exercises on the topics covered during the course. The exam is delivered on a computer and requires the use of the open-source development tools explained in class. The maximum score achievable in this part is 12/30, and the test duration is 60 minutes. PROJECT — optional and substituting PART 1.2 The project emphasizes the application of concepts learned in class and enhances students’ ability to independently find documentation and acquire new skills beyond the scope of the course. Each year, a set of topics will be assigned. Projects MUST be carried out in teams. Once the project is completed, students must present it during an oral exam session, highlighting each team member’s contribution to the results. The oral exam consists of a 20-minute presentation, during which all team members must participate and contribute to the work presented. The presentation will be followed by questions about the developed work, aimed at assessing the contributions of all team members to the project. Finally, a live demo of the developed project will be possible whenever applicable. The project aims to assess: - The student’s proficiency in implementing and developing embedded applications. - The efficiency of the implementation. - The student’s ability to work effectively in a team. - The student’s presentation skills. - The individual contribution of each student to the project. The maximum score in this part is 14/30. The final grade is determined as follows: OPTION 1: exam without project Final grade = PART 1.1 + PART 1.2 OPTION 2: exam with project Final grade = PART 1.1 + PROJECT The highest distinction, “Laude,� is awarded if the total grade equals 32. PART 1.1 and PART 1.2 must be completed in the same attempt, while the project can be discussed at a different time. However, the project must be completed within one year, before the start of the next course edition. The project is assigned during the first academic year in which the student attends the course and cannot be attempted again in subsequent years. If the project is not delivered on time, the student must retake the entire exam under OPTION 1. Any minor changes to these policies or procedures will be communicated to the students in a timely manner.
Testi di riferimento
Notes provided by the teacher. Additional reading: A. Berger Embedded Systems Design: An Introduction to Processes, Tools, and Techniques CMP Books, 2001, ISBN-10: 1-57-820073-3 Silbershatz A., Galvin. P., Gagne G. Operating Systems 8th Edition, Wiley, 2009, ISBN: 978-0-470-12872-5
Codice insegnamento 01WMQYG
Enterprise Network Technologies
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Conoscenza degli standard di livello fisico e dei criteri di progettazione (cablaggio strutturato). - Conoscenza degli standard di livello data-link, con particolare riferimento alla tecnologia Ethernet e alle sue…
Scheda dell'insegnamento
Obiettivi formativi
- Conoscenza degli standard di livello fisico e dei criteri di progettazione (cablaggio strutturato). - Conoscenza degli standard di livello data-link, con particolare riferimento alla tecnologia Ethernet e alle sue evoluzioni. - Conoscenza delle tecnologie di internetworking a livello 2 (spanning tree e sue evoluzioni); capacità di analisi del comportamento dinamico di tali standard sia in condizioni normali che in caso di guasto. - Conoscenza della tecnologia delle reti virtuali (VLAN). - Conoscenza delle tecnologie di switching a livello 2-7; capacità di progettazione di una rete switched multilivello. - Conoscenza delle principali tecnologie di rete presenti in un Data Center. - Principi di virtualizzazione di computing e storage.
Programma
Insegnamento facoltativo per la Laurea Magistrale in Ingegneria Informatica, collocato al II PD del I anno. Il corso riprende ed approfondisce argomenti relativi alla struttura e alle principali tecnologie utilizzate nelle reti locali, con particolare enfasi alle tecnologie di livello data-link e alla loro interazione con i livelli superiori, uniti ai principali criteri di progettazione e ricerca guasti. Nella seconda parte si introdurranno le principali tecnologie di rete in ambito datacenter quali storage area networks, switch software, nonché le tecnologie di virtualizzazione di computing e storage, con il supporto di esercitazioni in laboratorio.
- La tecnologia Ethernet e le sue evolusioni (0.6 cfu) - Le tecnologie di bridging: Spanning Tree, Rapid Spanning Tree e sue evoluzioni (0.8 cfu) - Funzionalità avanzate degli switch a livello 2: priorità di traffico, controllo di flusso, link aggregation, IGMP snooping (0.2 cfu) - Reti virtuali (VLAN) (0.4 cfu) - Switching e progettazione di rete a livello 2/3 (1 cfu) - Switching di livello applicativo (0.2 cfu) - Tecnologie di data-center e virtualizzazione (0.8 cfu) - Storage area Networks (0.4 cfu) - Networking virtuale in ambito datacenter (0.4 cfu) - Esercitazioni di laboratorio (1.2 cfu)
Modalità d'esame
Modalita di esame: Prova orale facoltativa; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Optional oral exam; Computer-based written test in class using POLITO platform;
... Risultati di apprendimento attesi Comprensione degli argomenti trattati a lezione e abilità nella soluzione di esercizi focalizzati sui singoli argomenti. Capacità di affrontare esercizi di progettazione più complessi che richiedono l’utilizzo combinato di più tecnologie tra quelle presentate a lezione. Criteri, regole e procedure per l'esame L'esame finale è scritto, comprendente quattro esercizi e/o domande con risposta aperta, ognuna avente punteggio pari a 5 punti, più 10 domande con risposta a scelta multipla. I primi concorrono al voto finale per 5/30 ciascuno, le seconde con 1/30 ciascuna. Gli studenti che totalizzano nella prova scritta un punteggio pari ad almeno 26 punti avranno diritto ad un orale comprendente una domanda che concorrerà al voto finale per 3/30. L'orale potrà essere richiesto per libera decisione del docente nel caso in cui sia opportuno un approfondimento, oppure nel caso in vi sia un numero ridotto di studenti prenotati all'esame. Il tempo assegnato per l'esame è al massimo di 2 ore. La prova scritta non prevede l’utilizzo di alcun materiale di supporto (libri, appunti, etc.).
Testi di riferimento
Il testo di riferimento, che copre buona parte degli argomenti, è il seguente: Sean Riley, Robert Breyer, “Switched, Fast, and Gigabit Ethernet� (3rd Edition). December 1998, pages 650, ISBN 978-1578700738 Sono disponibili copie dei lucidi utilizzati nelle lezioni, esempi di scritti di esame ed esercizi, e i manuali per le esercitazioni di laboratorio. Tutto il materiale didattico è scaricabile da un sito web o attraverso il portale.
Codice insegnamento 01HFRYG
Formal languages and compilers
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of the properties of the different classes of formal languages (phrase-structure, context-sensitive, context-free, regular languages) - Knowledge of the properties of the different formalisms (grammars and…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of the properties of the different classes of formal languages (phrase-structure, context-sensitive, context-free, regular languages) - Knowledge of the properties of the different formalisms (grammars and automata) used to represent languages - Skill to represent a given language by means of grammars and automata - Knowledge of the phases composing the translation process of a programming language: lexical analysis, syntax analysis, semantic analysis, intermediate code generation, generation and optimization of the target code - Knowledge of the design techniques and tools available for the implementation of scanners (lexical analyzers), parsers (syntax analyzers), and syntax-directed translators - Skill to design and implement syntax-directed translators for formal languages, by means of scanner and parser generators
Programma
The course is taught in English. This course is characterizing for the Software curriculum of the Master of Science in Computer Engineering, and it is held at the second semester of the first year. Its objectives are to introduce the basic elements of the theory of formal languages and to discuss their main application in the Computer field, that is the design of translators for formal languages (compilers).
Formal Languages (15 hours): - Classification - Regular languages (Regular grammars, Regular expressions, Finite state automata) - Context-free languages (Context-free grammars, Pushdown automata, LR(k) grammars, LL(k) grammars) - Turing machines Compilers (45 hours): - Compiler structure - Lexical analysis - Syntax analysis (Bottom-up analysis, Top-down analysis) - Syntax-directed translation (Attribute definitions, Bottom-up translators) - Semantic analysis and intermediate code generation (Type control, Intermediate languages, Analysis of declarations and instructions)
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Prova orale facoltativa; Prova pratica di laboratorio;
Exam: Written test; Optional oral exam; Practical lab skills test;
... Two written examinations have to be passed, also in different calls of the same academic year. The first test, lasting 40 minutes, is about the topics presented in the lectures. Its aim is to check that the student has acquired the expected knowledge (see expected learning outcomes). It consists of open and close questions as well as short exercises. No material can be consulted during this test. The second test, lasting 80 minutes, aims at checking that the student has acquired the expected skills (see expected learning outcomes). It consists in the development of a translator using JFlex and Cup in the Lab. Any kind of material can be consulted during this test, but access to the internet is forbidden during the test. Students must produce a complete and running version of their program after the second test, and send it to the lecturer within 3 working days. The final mark is the arithmetic mean of the marks of both tests. The students have the possibility to request the assignment of a project which substitutes the second test.
Testi di riferimento
Books: - J.E. Hopcroft, R. Motwani, J.D. Ullman - Introduction to Automata Theory, Languages, and Computation 3rd Edition, Pearson - Addison-Wesley, 2007 - A.V. Aho, M.S. Lam, R. Sethi, J.D. Ullman - Compilers: Principles, Techniques, and Tools, 2nd Edition, Pearson - Addison-Wesley, 2007 Materials available on the teaching Web site Slides used in classroom Video-recording of lectures and practice.
Codice insegnamento 02JEUYG
HCI Fundamentals
1° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge: - Understand and be able to apply the concepts of usability and user experience. - Know the human-centered design processes and their application. - Learn advantages and disadvantages of interaction…
Scheda dell'insegnamento
Obiettivi formativi
Knowledge: - Understand and be able to apply the concepts of usability and user experience. - Know the human-centered design processes and their application. - Learn advantages and disadvantages of interaction technologies. Skills: - Develop a working prototype according to a human-centered design process. - Master some novel interaction techniques. - Experience joint development of a project within a group of engineers.
Programma
Nowadays, computing devices are ubiquitously present and integrated into our daily life. Indeed, sensors and actuators are embedded in home appliances, lights, or cars; wearable devices like smartwatches provide information at a glance and act as always-on personal digital extensions; smartphones and tablets are widely spread. People communicate with them using various interaction paradigms, ranging from "click", to "touch", to gestures, speech, and tangible manipulation. As the technology improves, however, we are challenged with designing suitable interfaces and interactions so that people can use such technologies with "joy" rather than "frustration". This course provides a solid foundation to address this challenge. It will give students hands-on practice to master this complexity and develop innovative solutions by adopting a modern human-centered design process while building a prototype application to serve a set of target users. In the end, students will learn how to design and create technologies that are usable, useful, and used.
Course topics will cover three areas: - Introduction to Human-Computer Interaction. - Building interactive applications with a human-centered process. The main tasks and methods to design, develop, and evaluate an interactive application: needfinding strategies, low- and high-fidelity prototypes, mental models and visual design, heuristic evaluation, and basic concepts and methods for user studies (3 credits of lectures and exercises). This part will focus, in general, on the design process. Students will apply these concepts to a specific application domain by developing a group project, which they will carry on during the lab hours (2 credits). - "Beyond WIMP" paradigms, such as interaction with AI-powered systems, tangible interaction, voice user interfaces, and gestures. We will discuss selected paradigms from different perspectives, ranging from rationale and vision to contemporary examples (1 credit).
Modalità d'esame
Modalita di esame: Prova orale obbligatoria; Elaborato scritto individuale; Elaborato progettuale in gruppo;
Exam: Compulsory oral exam; Individual essay; Group project;
... The exam consists of submitting and presenting the group project within the same academic year. Projects will be discussed and revised along the course with teachers (see the "Course structure" section). Groups will submit their project seven days before the official exam date, and they will discuss their final work through an oral session, where all group members must be present and present their part. In addition to the group project, students will submit an individual assignment, which is related to the project and part of the human-centered process followed during the course. The material to be submitted for the exam includes a) a report summarizing the group assignments, b) the individual report describing the individual assignment, and c) the source code of the final project's prototype. Students will demonstrate the skills and knowledge acquired during the course with the development of the project and the individual assignment, and they will further deepen them during the oral discussion. The assessment is expressed on a scale of 30 points, with the project accounting for 20 points, the individual assignment up to 6, and the oral discussion for the other 4 points. Additional points (up to 2) can be assigned for the project (significant originality, complexity, and richness of the work), the effort invested during the course (labs and received feedback), and for the oral discussion (quality and richness of the discussion). These additional points will allow students to reach 30L. Overall, the evaluation criteria will include the following: - Invested effort in the project activity. - Originality, complexity, and richness of the work. - Methodological and technical correctness of the entire process. - Completeness and communication quality of the deliverables. - Quality of the presentation and oral discussion. - Individual contribution.
Testi di riferimento
- Course slides and related materials (e.g., links, readings, …) * Selected chapters of: - Alan Dix, Janet Finlay, Gregory Abowd, Russell Beale: Human Computer Interaction, 3rd Edition, Prentice Hall, 2004, ISBN 0130461091 - Shneiderman, Plaisant, Cohen, Jacobs, Elmqvist and Diakopoulos: Designing the User Interface: Strategies for Effective Human-Computer Interaction, 6th Edition, Pearson, 2016, ISBN 013438038X / 9780134380384 - Kasper Hornbæk, Per Ola Kristensson, Antti Oulasvirta: Introduction to Human-Computer Interaction, Oxford University Press, 2025, ISBN 9780191959363 / 9780192864543
Codice insegnamento 01WMRYG
Human-AI Interaction
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
By the end of the course, students will be able to: - Articulate what makes human-AI interaction different from traditional human-computer interaction, recognising the design challenges introduced by non-deterministic…
Scheda dell'insegnamento
Obiettivi formativi
By the end of the course, students will be able to: - Articulate what makes human-AI interaction different from traditional human-computer interaction, recognising the design challenges introduced by non-deterministic and probabilistic systems. - Apply established human-AI interaction guidelines to analyse and evaluate AI-powered interactive systems. - Design and prototype AI-augmented interactive systems through a human-centred process, including identifying whether and where AI is an appropriate fit for a domain. - Evaluate AI-powered systems with attention to AI-specific concerns, including calibrated trust, appropriate reliance, error recovery, and explainability. - Critically reflect on the ethical, societal, and second-order implications of AI-powered systems. - Use AI tools effectively and reflectively as part of their own design and development process.
Programma
Artificial Intelligence (AI) has become increasingly present and integrated in our daily lives, with complex and often unpredictable solutions. This complexity and unpredictability make it difficult for users to understand, trust, and adopt such solutions with success. The course aims at introducing methodologies and techniques to design and build intelligent interactive systems that are usable, useful, and trustworthy, also reflecting on the impact that AI applications have and will have on their users. Building on prior knowledge of Human-Computer Interaction, the course adopts a hands-on, project-based approach: students design, prototype, and evaluate an AI-powered interactive system through a human-centred process, while critically using AI tools as part of their own design and development workflow. The course sits at the intersection of HCI and AI, with attention to both the practical design of usable AI systems and the broader societal and ethical implications of deploying them.
The course is organized in five modules: 1. Foundations of Human-AI Interaction: what makes it different from Human-Computer Interaction, basic concepts and principles (1 credit). 2. Designing for and with AI: HCI methods reframed under an AI lens and guidelines, prototyping AI, real-world evaluation, AI-specific challenges, critical and ethical aspects (2 credits). 3. LLMs, prompting, and agentic systems: prompt engineering as interaction design, tools and patterns for building interactive systems (1.5 credits). 4. Human-AI Interaction in specific domains, such as education, writing, health, creativity, accessibility (1 credit). 5. Speculative design and futures for Human-AI Interaction: extrapolating consequences of AI-powered systems (0.5 credits).
Modalità d'esame
Modalita di esame: Prova orale obbligatoria; Elaborato scritto individuale; Elaborato progettuale in gruppo;
Exam: Compulsory oral exam; Individual essay; Group project;
... The exam assesses the theoretical knowledge and practical skills described in the previous fields through a group project, the three practical exercises, and an oral discussion. The group project is developed during the lab hours and consists of a prototypical human-centred AI system, accompanied by its supporting documentation. The project is assessed on: (i) the soundness of the human-centred process followed, including the explicit AI-fit analysis; (ii) the quality of the prototype as an interactive AI-powered system, with attention to the chosen interaction pattern and to the application of human-AI interaction guidelines; (iii) the quality and rigour of the in-context evaluation, with attention to AI-specific concerns such as calibrated trust, appropriate reliance, error recovery, and explainability; and (iv) the documented and reflective use of AI tools throughout the design and development process. Each group delivers a final presentation and a written report, and a single grade is assigned to the group. Individual contributions may be considered when there is clear evidence of unequal participation. The three practical exercises are the one completed in class, during the semester, which will need to be delivered at specific deadlines during the semester. The oral exam lasts approximately 20-30 minutes per group and takes place in a classroom or laboratory. The oral exam takes the form of a group presentation and demonstration of the project, followed by individual questions to each student. The goal is to assess the students understanding of course concepts, the ability to connect them to the work produced during the course, and the ability to reason about current human-AI interaction research and practice. Grading is expressed on a scale from 0 to 30, distributed as follows: up to 15 points for the group project (a single grade is assigned to the group, with individual adjustments where there is clear evidence of unequal participation); up to 9 points for the three practical exercises, completed and graded individually (3 points each); and up to 6 points for the oral exam, which takes the form of a group presentation and demonstration of the project followed by individual questions, with each student receiving their own oral grade. Up to 2 additional points may be awarded for particular quality and richness across the three components, allowing a grade of 30 cum laude.
Testi di riferimento
Course slides and related materials (e.g., links, readings, …) will be available in a dedicated webpage on https://elite.polito.it. Additional resources are available on the web and will be pointed out during lectures (https://www.microsoft.com/en-us/haxtoolkit/, https://pair.withgoogle.com/guidebook, etc.).
Codice insegnamento 02UJUYG
Image Processing and Computer vision
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Lo studente acquisirà le conoscenze fondamentali relative a: - sensori e sistemi per l'acquisizione dell'immagine - modellazione dei sistemi ottici e loro funzioni di trasferimento - analisi in frequenza delle immagini -…
Scheda dell'insegnamento
Obiettivi formativi
Lo studente acquisirà le conoscenze fondamentali relative a: - sensori e sistemi per l'acquisizione dell'immagine - modellazione dei sistemi ottici e loro funzioni di trasferimento - analisi in frequenza delle immagini - tecniche per il miglioramento e la ricostruzione di immagini affette da vari tipi di rumore ed alterazioni (rumore termico dei sensori, imperfezioni dell'ottica, movimento relativo, etc) - tecniche per la segmentazione e l'estrazione di elementi caratteristici di un'immagine - tecniche per il riconoscimento di oggetti 2D e 3D - tecniche per l'analisi del movimento - machine learning e reti neurali per il trattamento delle immagini Tramite queste conoscenze e numerosi esempi applicativi, lo studente verrà messo in grado di progettare un sistema di visione mediante calcolatore.
Programma
La cattura, l’elaborazione e la comprensione delle immagini sono necessarie in molte applicazioni pratiche. In particolare, la Computer Vision consiste nel calcolare proprietà del mondo tridimensionale (3D) a partire da immagini bidimensionali (2D). Tra le principali applicazioni possiamo citare l’ispezione industriale, la sorveglianza, l’identificazione biometrica, la cattura del movimento del corpo umano per l’intrattenimento, la medicina o il miglioramento delle prestazioni sportive, l’analisi di immagini satellitari e di droni, la scansione 3D e la navigazione robotica. Il corso fornirà gli elementi delle tecniche più utilizzate per l’elaborazione e l’analisi delle immagini e illustrerà alcune applicazioni diffuse. Il corso implementerà il nuovo modello didattico, come proposto da PoliTO nell'anno accademico 2025/2026.
Argomenti principali e peso in crediti - Sistemi di acquisizione immagini (1 cr) - Elaborazione immagini. Trasformate 2D e funzioni di trasferimento (1 cr) - Miglioramento e ricostruzione immagine (0.5 cr) - Segmentazione ed estrazione dati significativi (0.5 cr) - Riconoscimento 2D e 3D (1 cr) - Analisi movimento (0.5 cr) - Casi di studio (1.5 cr)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Slide del corso ed altro materiale presso: http://didattica.polito.it Testi suggeriti: - R.C. Gonzales and R.E. Woods: Digital Image Processing, Pearson International Edition, 2008 - C. Steger, M. Ulrich, C. Wiedermann: Machine Vision Algorithms and Applications, Wiley-VCH, 2008 - G.C. Holst and T.S. Lomheim: CMOS/CCD Sensors and Camera Systems, SPIE Press, 2007 - E.R. Davies, Machine Vision: Elsevier, 2005 - A. Bellini e A. Guidi: Python e machine learning, McGrawHill, 2022
Codice insegnamento 01TUJYG
Information systems
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge acquired: issues in the development of information systems to support business processes in organizations. Languages to model processes and organizations. Classification of information systems. Technologies…
Scheda dell'insegnamento
Obiettivi formativi
Knowledge acquired: issues in the development of information systems to support business processes in organizations. Languages to model processes and organizations. Classification of information systems. Technologies to implement information systems. Methods to evaluate costs and benefits of information systems. Reference models (COBIT, ITIL). Skills acquired: ability to formalize and analyze a business process in terms of activities, roles and responsibilities, information. Ability to evaluate an information system in terms of costs, performance, effectiveness and efficiency. Ability to design and evaluate alternatives for a business process and supporting information system. Ability to identify, classify and evaluate technologies and commercial packages to implement information systems.
Programma
Goal of the course is to teach the issues, technologies and methodologies to design, operate and evaluate information systems supporting business processes.
1.Introduction (0.5 CFU) Organizations, resources, processes Processes and organizational structures Classification of processes, hierarchical levels, decisions 2. Modeling and analysis of processes and organizations (3 CFU) UML class diagram, BPMN Business Process Reengineering Evaluation of costs and benefits KPI, CSF, BSC 3. Classes of information systems (1.5 CFU) Enterprise Resource Planning Customer Relationship Management Supply Chain Management Information systems for utilities, telecoms, public administration 4 Reference models (0.5 CFU) COBIT, ITIL 5 Technologies (0.5 CFU) Workflow Management Systems
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Written test; Computer-based written test in class using POLITO platform;
... The exam is made of a one simplified case study , (accounting for 80% of the evaluation) and a few open questions. The case study evaluates the capability of the student to: --formalize and analyze a business process in terms of activities, roles and responsibilities, using a specialized language (ex BPMN) --define the conceptual model of information used by an organization, defining the relevant conceptual model using a specialized language (ex UML class diagram) --analyze a change in the information system of an organization, defining pros and cons of the change both in terms of high level (ex Critical Success Factors, Balanced Score Cards) and low level indicators (Key Process Indicators) The open questions (free text answers) cover the remaining parts of the course The exam lasts 2 hours, the use of books or notes is forbidden. Past exams with solutions are available on the course web site.
Testi di riferimento
O’Brien, Marakas, "Management Information Systems", 10ed., McGraw Hill Dumas, LaRosa, "Fundamentals of Business Process Management", 2013 Osterwalder Pigneur, "Business Model Generation" Daft, "Organizational theory and design". Slides, exercices and case studies on the course web site.
Codice insegnamento 01PDWYG
Ingegneria del software
1° anno · 2° semestre · 8 CFU · ING-INF/05 · 0 file
Al termine dell’insegnamento, gli studenti saranno in grado di: • discutere i problemi associati allo sviluppo e alla manutenzione di grandi programmi, incluso l'importanza economica dei software, e di identificare le…
Scheda dell'insegnamento
Obiettivi formativi
Al termine dell’insegnamento, gli studenti saranno in grado di: • discutere i problemi associati allo sviluppo e alla manutenzione di grandi programmi, incluso l'importanza economica dei software, e di identificare le diverse qualità del software (funzionalità , correttezza, efficienza, usabilità , portabilità , ecc.). • gestire la configurazione del software, tra cui l'identificazione degli elementi di configurazione, il controllo delle versioni, la gestione delle modifiche e il controllo della configurazione. • confrontare e contrapporre i diversi approcci ai processi software (waterfall, prototyping, iterative - agile methodologies) • analizzare e formalizzare requisiti funzionali e non funzionali di un sistema software, utilizzando UML per formalizzare i requisiti e • verificare e validare i requisiti attraverso ispezioni, prototipi e modelli formali. • utilizzare UML per la progettazione, creare diagrammi di progettazione e architetturali e verificare e convalidare i progetti. • condurre diversi tipi di test sul codice sorgente (test white e black box, unitario, di integrazione, di sistema), utilizzare tecniche e strumenti di ispezione e revisione, e discutere l'importanza della testabilità , correttezza e affidabilità nel processo di sviluppo software. • conoscere strumenti di gestione del progetto come WBS, Gantt, Pert, milestone, deliverables e gestire efficacemente un progetto software. • collaborare e contribuire efficacemente in un ambiente di gruppo, come dimostrato dalla loro capacità di completare un progetto di gruppo utilizzando un team assegnato in base a un sondaggio che riflette il loro background e l'impegno previsto.
Programma
L'obiettivo dell'insegnamento è fornire una comprensione approfondita dei principi, metodologie e strumenti necessari per la programmazione su larga scala. Gli studenti saranno guidati nell'analisi e formalizzazione dei requisiti del software, nella progettazione utilizzando UML, nella gestione dei progetti software e nel testing del codice. Si darà enfasi allo sviluppo di abilità di lavoro in team, preparando gli studenti a collaborare efficacemente in un contesto di sviluppo software su larga scala.
Introduzione • Problemi nello sviluppo e manutenzione di grandi programmi • Qualità del software: funzionalità , correttezza, efficienza, usabilità , portabilità ecc • Valore economico, diretto e indiretto, dei programmi • Tipologie di programmi Processi software • waterfall, • prototyping, • iterative - agile methodologies Gestione della configurazione • Identificazione degli elementi di configurazione • Controllo delle versioni, gestione delle modifiche, controllo della configurazione • Esempi pratici con GIT UML • diagrammi strutturali (diagramma delle classi, diagramma di distribuzione) • diagrammi dinamici (diagramma delle sequenze) • diagrammi funzionali (diagramma dei casi d'uso) Analisi e modellazione dei requisiti • Requisiti funzionali e non funzionali • Stakeholder • Schema di un documento di specifica dei requisiti • Uso di UML per formalizzare i requisiti • Verifica e validazione dei requisiti: ispezioni, prototipi, modelli formali Progettazione software • Uso di UML per la progettazione • Diagrammi di progettazione e architetturali • Verifica e validazione dei progetti Verifica e Validazione • Testabilità , correttezza, affidabilità • Test: test white e black box, unitario, di integrazione, di sistema; tecniche e strumenti • Ispezioni, walkthrough, revisioni, lettura Gestione del progetto software • Strumenti: WBS, Gantt, Pert, milestone, deliverables • Attività : stima, pianificazione, tracking, post mortem
Modalità d'esame
Modalita di esame: Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Computer-based written test in class using POLITO platform;
... Esame scritto, individuale, di 1 ora di durata, in aula, senza accesso a libri o appunti attraverso la piattaforma exam con domande aperte e a scelta multipla. La prova consiste in alcuni esercizi e alcune domande di teoria. Esami passati con soluzioni sono disponibili sul sito web dell'insegnamento. Progetto, in team di 5 persone, da svolgersi solo durante l'insegnamento. Consiste nella documentazione e validazione di un piccolo progetto software in linguaggio Typescript, che prevede la consegna di: • documento di requisiti, • documento di progetto, • codice, • casi di test (unitario, di integrazione, di accettazione), • documento di stima effort, • manuale utente. Il progetto è gestito attraverso uno strumento di gestione della configurazione (GitLab) e utilizza strumenti di sviluppo (aka Visual Studio Code,, Jest, PlantUmL, Cypress e simili). Il progetto è valutato considerando la qualità dei deliverable. Sono organizzati laboratori settimanali per supportare gli studenti nell'esecuzione del progetto. Regole d’esame: • È possibile sostenere solo l’esame scritto. In questo caso la valutazione massima è di 23/33. • Se si svolge il progetto è necessario ottenere una valutazione minima di 14/23 nello scritto per poter sommare il voto del lavoro di gruppo. •. Il progetto può ricevere una valutazione compresa tra 0 e 10 punti • Il progetto va svolto in parallelo nel periodo delle lezioni e dovrà essere consegnato entro una date specifiche comunicate durante l’insegnamento • La lode si ottiene da un punteggio strettamente maggiore di 32 punti
Testi di riferimento
Sul portale della didattica sono disponibili le slide e i case study utilizzate dai docenti. Testo consigliato: M. Camilli, E. Di Nitto, A. Fuggetta, A. Margara, M. G. Rossi, D. A. Tamburri: Software Engineering. A Structured Journey from Inception to Delivery
Codice insegnamento 05BIDYG
Insegnamento a scelta (vedi Piano di studi completo )
1° anno · 2° semestre · 6 CFU · 0 file
Internet Architecture and Technologies
1° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Students will build up knowledge (at a different level of depth depending on the specific topic) and deep understanding of mechanisms and motivations underlying the following technologies and solutions: - IPv4 network…
Scheda dell'insegnamento
Obiettivi formativi
Students will build up knowledge (at a different level of depth depending on the specific topic) and deep understanding of mechanisms and motivations underlying the following technologies and solutions: - IPv4 network design - IPv6 protocol and techniques to support its co-existence with IPv4. - IPv6 network design - Ethernet local area network design - The most popular techniques and protocols used to implement Virtual Private Networks (VPN), both customer-provisioned and provider-provisioned. - MPLS protocol architecture - Protocols and techniques for quality of service on IP networks - Optical networks
Programma
The course delves into the design principles of basic technologies underlying modern computer networks (Ethernet, IPv4 and IPv6), addresses advanced topics related to the workings of the Internet, such as routing architecture and protocols, and presents a number of technological solutions that play a key role in services commonly offered through the Internet.
- IPv4 network design (0.8 CFU) - IPv6 protocol, coexistence with IPv4, and IPv6 network design (1.8 CFU) - Routing in the Internet (0.8 CFU) - Virtual Private Networks (1 CFU) - Techniques for quality of service (QoS) support (0.2 CFU) - MPLS (0.6 CFU) - Optical networks (0.2 CFU)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Due to the advanced nature of the topics addressed by the course, they are not covered by a single textbook or a limited number of textbooks. The course website provides, besides the overheads used during lectures, a list of links to documents publicly available over the Internet and references to book chapters that address the various topics discussed during lectures.
Codice insegnamento 01HFQYG
Machine learning and pattern recognition
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
At the end of the course the students will - know and understand the basic principles of statistical machine learning applied to pattern recognition and classification; - know the principal techniques for classification,…
Scheda dell'insegnamento
Obiettivi formativi
At the end of the course the students will - know and understand the basic principles of statistical machine learning applied to pattern recognition and classification; - know the principal techniques for classification, including generative linear Gaussian models and discriminative approaches based on logistic regression and support vector machines, among others; - understand the theoretical motivations behind different classification approaches, their main properties and domain of application, and their limitations; - be able to implement the different algorithms using wide-spread programming frameworks (Python) - be able to apply different methods to real tasks, to critically evaluate their effectiveness and to analyze which strategies are better suited to different applications; - be able to transfer the acquired knowledge and capabilities to solve novel classification problems, developing novel methods based on the frameworks that will be discussed during classes
Programma
The course aims at providing a solid introduction to machine learning, a branch of artificial intelligence that deals with the development of algorithms able to extract knowledge from data, with a focus on pattern recognition and classification problems. The course will cover the basic concepts of statistical machine learning, both from the frequentist and the Bayesian perspectives, and will be focused on the broad class of generative linear Gaussian models and discriminative classifiers based on logistic regression and support vector machines. The objective of the course is to provide the students with solid theoretical bases that will allow them to select, apply and evaluate different classification methods on real tasks. The students will also acquire the required competencies to devise novel approaches based on the frameworks that will be presented during the classes. The course will include laboratory activities that will allow the students to practice the theoretical notions on real data using modern programming frameworks that are widely employed both by research communities and companies.
Machine learning and pattern recognition - Introduction and definitions Probability theory concepts - Random Variables - Estimators - The Bayesian framework Introduction to Python - The language - Main numerical libraries Decision Theory - Inference, expected loss - Model taxonomy: generative and discriminative approaches - Model optimization, hyperparameter selection, cross-validation Model evaluation - Classification scores and log-likelihood ratios - Detection Cost Functions and optimal Bayes decisions Dimensionality reduction - Principal Component Analysis (PCA) - Linear Discriminant Analysis (LDA) Generative Gaussian models - Generative Gaussian classifiers: univariate Gaussian, Naive Bayes, multivariate Gaussian (MVG) - Tied covariance MVG and LDA Logistic Regression (LR) - From Tied MVG to LR - LR as ML solution for class labels - Binary and multiclass cross-entropy - From MVG to Quadratic LR - LR as empirical risk minimization - Overfitting and regularization Support Vector Machines (SVM) - Optimal classification hyperplane: the maximum margin definition - Margin maximization and L2 regularization - SVM as minimization of classification errors - Primal and dual SVM formulation - Non linear extension: brief introduction to kernels Density estimation and latent variable models - Gaussian mixture models (GMM) - The Expectation Maximization algorithm Continuous latent variable models: Linear-Gaussian Models - Linear regression - Linear regression and Tied MVG - MVG with unknown class means: Probabilistic LDA (PLDA) - Bayesian MVG - Factor Analysis: PLDA, Probabilistic PCA Approximated inference basics - Variational Bayes
Modalità d'esame
Modalita di esame: Prova scritta (in aula);
Exam: Written test;
... The exam will assess the knowledge of the course topics, and the ability of the candidate to apply such knowledge and the developed skills to solve specific problems. The exam will consist in two parts: - A project to be developed during the course. The students will be able to choose individual or (small) group projects among a set of possible choices (max. 10 points). - A written examination (max. 20 points). The final mark will be the sum of the report and written exam marks. To pass the exam, the report mark must be at least 5/10, the written exam mark must be at least 10/20, and the final mark must be at least 18/30. The projects will address specific classification tasks. For each project, a dataset will be provided, and the students will have to develop suitable models based on the topics presented during lectures. Each candidate will have to provide a technical report detailing the employed methodology and a critical analysis of the obtained results. The report will assess: - The degree of understanding of the theoretical principles of statistical machine learning for pattern recognition - The ability of the student to analyze a specific problem, assessing which approaches, among those that have been presented, are more suited to solve the task - The ability of the student to implement, apply and possibly extend the studied methods to devise suitable classifiers for the specific case study - The ability of the student to critically evaluate the effectiveness of the proposed approaches. The written examination will consists of open questions covering the topics presented during the lectures. The written examination will assess: - The theoretical understanding of the basic principles of statistical machine learning for pattern recognition - The knowledge and understanding of the different approaches that have been presented during the lectures - The ability of the student to critically analyze and evaluate the different approaches.
Testi di riferimento
[1] Christopher M. Bishop. 2006. Pattern Recognition and Machine Learning (Information Science and Statistics). Springer-Verlag, Berlin, Heidelberg. [2] Kevin P. Murphy. 2012. Machine Learning: A Probabilistic Perspective. The MIT Press. Additional material, including slides and code fragments, will be made available on the course website.
Codice insegnamento 01URTYG
Microelectronic systems
1° anno · 2° semestre · 6 CFU · ING-INF/01 · 0 file
Knowledge of MOS based topologies and of its technology, of the related digital gates of their description at different level of abstraction and of their performance (standard cell libraries) - Knowledge of problems…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of MOS based topologies and of its technology, of the related digital gates of their description at different level of abstraction and of their performance (standard cell libraries) - Knowledge of problems related to signal and power supply interconnects in integrated circuits and of the related design aspects - Ability to design microarchitectural structures to be used as foundamental block in a digital integrated system for signal processing, as arithmetical blocks, hardwired and microprogrammed control systems and memory systems - Knowledge of the manyfold techniques for describing, simulating and designing at circuit, architecture and system level, aiming at performance optimization (area, frequency, throughput, power consumption) - Ability in using CAD tools aiding the design of integrated circuits on scaled technologies: HDL simulators, synthesizer, place&router, layout editors, physical level simulators - Ability in analyzing specifications and contraints when designing complex digital systems and choosing the correct algorithm - Ability in evaluating computational complexity, interconnect bandwidth and numerical choices (number precision and data representation) for complex elaboration circuits - Knowledges on derivation of constraints on architecture, on resources allocation and scheduling - Skill in the design of multi clock regimes - Knowledge on control systems as hardwired and microprogrammed control units - Basic knowledges on parallel integrated architectures
Programma
The course is taught in English. The course is optional for the MSc-level programme in both Electronic Engineering and Computer Engineering. It will be offered in the second period of the first academic year. It aims at analyzing the design methodologies of complex microelectronic systems based on scalded MOS devices, considering the constraints and critical issues in designing architectural and microarchitectural blocks and detailing the technological aspects native to the design of structures based on devices and interconnections that are the state of the art od digital electronics. The analyzed aspects will be applied to some cases of study in laboratory sessions based on the use of specific CAD tools like HDL simulators, synthesizers, place&routers, layout editors, physical level simulators.
Case study of complex architectures as examples of microelectronic system: multithreading structure (T2 Ultrasparc), CISC/RISC structure (Pentium 4), structure for embedded systems (ARM 11). (0,5 CFU) Case study of internal microarchitecture for each of the systems mentioned (P4 adder, multiplier and logic block T2, ARM divider, windowed register file for multithreading from T2). Control units based on FSM, Hardwired and microprogrammed. (1,2 CFU) Digital MOS gates both combinational ads sequential based on different topologies (CMOS, domino, DCVSL, transmission gate, C2MOS, TSPC) analyzed for what concerns figures of merit used during the design of a integrated digital circuit (function, area, timing, power): abstraction levels of a library of gates, for low level simulation, physical design, synthesis and high level simulations. (1,5 CFU) Description of interconnects and their parasitic parameters; modeling and design criteria; Temporization and clock domains, technological phases. (1 CFU) Top down design of microelectronic systems based on previously described blocks: basics on architectural and topological solutions for performance optimization, synthesis techniques, physical design and post-layout verification (mainly in laboratory). (1,8 CFU).
Modalità d'esame
Modalita di esame: Prova orale obbligatoria; Elaborato progettuale in gruppo;
Exam: Compulsory oral exam; Group project;
... The final examination consists in three part: E1 oral exam, E2, laboratory exercises, E3: a final project. E1: The oral exam is related to the whole program and is related to all the subjects analyzed during classes and laboratories. E2: The laboratory execises are evaluated for completeness, correctness and accuracy and timeliness. E3: The project will consist in the development of an architecture as a case of study, in its simulation and top-down design and optimization of the typical criticalities related to a medium-high complex architecture based on a scaled technology. The project must be completed within the starting date of the academic year following the one of the attended course. The student can choose among three different combinations: Choice 1: the exam can be completed with part E1 (weight 60%) and part E2 (weight 40%), but the final evaluation will be saturated to a maximum of 26/30. Choice 2: the exam can be completed with part E1 (weight 45%), part E2 (weight 15%), where the project (E3) is developed as a basic version based on several elements already developed during the lab. The final evaluation will be saturated to a maximum of 26/30. Choice 3: the exam can be completed with part E1 (weight 45%), part E2 (weight 15%), where the project (E3) is developed as a more evolved versione enriched of innovative and more complex and challenging elements. The final evaluation will be saturated to a maximum of 30/30 cum laude. Overall the E1, E2 and E3 parts aim at evaluating not only the knowledges related to the subjects analyzed, but especially the capability to observe the problems arising during the design of a microelectronics system, to understand the trade off among the possible design choices, to define a creative strategy and to find a solution in order to optimize a design, being aware of the consequences, risks and possible future improvements.
Testi di riferimento
Lectures notes of all the lectures ara available as well as laboratory guide. Books suggested are: 1) M. Rabaey, Anantha Chandrakasan, and Borivoje Nikolic´: Digital Integrated CircuitsSecond Edition, Prentice-Hall, 2) N.Weste D. Harris, CMOS VLSI Design: A Circuits and Systems Perspective, Addison-Wesley 3) J.hennessy, d.Patterson, Computer Architecture: a Quantitative Approach, Addison-Wesley Some suggested readings are in the form of research papers related to the most up-to-date subject analyzed. The learning material is available through the official course website.
Codice insegnamento 01NOYYG
Modeling and control of cyberphysical systems
1° anno · 2° semestre · 6 CFU · ING-INF/04 · 0 file
At the end of the course, the student will know the main paradigms of CPSs and will be able to design and control a basic CPS. Specifically, she/he will learn how to: - mathematically model a CPS; - describe and…
Scheda dell'insegnamento
Obiettivi formativi
At the end of the course, the student will know the main paradigms of CPSs and will be able to design and control a basic CPS. Specifically, she/he will learn how to: - mathematically model a CPS; - describe and predict the behavior of a CPS; - control the behavior of a CPS; - implement the theoretical notions in real-world CPS applications.
Programma
Cyber-Physical Systems (CPS) are complex engineering systems integrating physical processes with computation, communication and control. CPS are typically composed by a number of spatially distributed system components and/or subsystems exchanging information through communication networks. The inherent distributed and networked structure of CPS poses new control design challenges. As a matter of fact, the designed feedback control loops has to guarantee robustness against (i) uncertainty in the mathematical model of the physical process, (ii) adversarial network attacks and (iii) networked-induced delays and perturbations. Furthermore, decentralized control design techniques has to exploited in order to fulfill global performance requirements of CPSs by exploiting sensor information locally available in each subsystem. The aim of the proposed course is to provide the students with tools for modeling and control of CPSs.
- Introduction to CPSs: general definition and motivations. Real-world examples of CPSs. - Modeling paradigm for CPSs: introduction to distributed networked dynamical systems. - Modeling of the physical process part of CPSs by means of Set-membership system identification techniques. Characterization of model uncertainty. - Analysis of critical aspects of distributed networked dynamical systems: adversarial network attacks, networked-induced delays and perturbations. - Review of observer design for linear systems. - Review of observer-based output feedback regulation of linear systems. - Sparse signal recovery. - Distributed/decentralized control (DC): observer-based decentralized control structure. - Networked control systems: stability in presence of networked-induced delays and perturbations. - Secure estimation and control of CPS in presence of sensor and actuator networks signals attacks: motivation and problem formulation. - Output regulation approach to secure estimation and control of CPS based on sparse signal recovery.
Modalità d'esame
Modalita di esame: Prova orale obbligatoria; Elaborato progettuale in gruppo;
Exam: Compulsory oral exam; Group project;
... The exam consists of two parts. The first part is an oral interview where students are required to answer questions about the entire content of the course. The duration of the oral interview is about 1 hour; students are not allowed to use neither books nor lecture notes. The oral interview mainly focusses on the theoretical aspects of the course. The maximum score for this part is 20 points. In the second part a group project activity is assigned in order to check the ability of the students to apply the tools and results presented in the lectures to real-world case studies. The maximum score for this part is 10 points.
Testi di riferimento
Since the considered topics are quite recent, main learning resources are: - Slides and lectures notes provided by the teachers - Selected scientific papers Supplementary material: - some parts of the course refer to the book Cyber-Physical Systems: From Theory to Practice, D. B. Rawat, J. J.P.C. Rodrigues, I. Stojmenovic, 1st ed. 2016, CRC Press - for a gentle introduction to CPSs: Industry 4.0: The Industrial Internet of Things, A. Gilchrist, 2016, Apress
Codice insegnamento 01UDSYG
Nonlinear control and aerospace applications
1° anno · 2° semestre · 6 CFU · ING-INF/04 · 0 file
The knowledge acquired during the course will regard the following subjects: properties of nonlinear systems; properties of feedback systems; modern control design methods for nonlinear systems; coordinate reference…
Scheda dell'insegnamento
Obiettivi formativi
The knowledge acquired during the course will regard the following subjects: properties of nonlinear systems; properties of feedback systems; modern control design methods for nonlinear systems; coordinate reference systems, rotations and translations; spacecraft/aircraft attitude kinematics and dynamics; spacecraft orbital dynamics; spacecraft/aircraft control design. The skills acquired during the course will be the following: understanding and analyzing the behavior of a dynamic system; developing advanced control algorithms for nonlinear systems; understanding and analyzing the behavior of a spacecraft/aircraft; developing advanced control algorithms for spacecraft/aircraft systems; developing simulation and control software in Matlab/Simulink. The student will learn how to use in a comprehensive way the acquired knowledge and skills in order to deal with new problems, without being limited to a small set of applications/case studies.
Programma
Control is a multi-disciplinary area, involving theoretical, numerical and hardware tools, finalized at modifying the behavior of real-world systems. Due to its nature, control is nowadays fundamental in most fields of science and technology, ranging from the "classical" aerospace, automotive, robotics and energy fields, to less "traditional" fields, e.g., related to biomedical, data analytics, communication and network applications. Starting from the observation that the majority of real-world dynamic systems are nonlinear, the first objective of the course is to provide the basic methodologies for analyzing the properties of a nonlinear system and for designing effective control algorithms, aimed at obtaining the desired behavior for the system variables of interest. The second objective of the course is to show how these methodologies can be applied to aerospace systems, allowing the accomplishment of the most challenging missions.
Nonlinear system analysis: basic notions on dynamic systems; state equations; basic stability concepts; Lyapunov stability. Control design for nonlinear systems. Overview on different approaches: linearization and gain scheduling; feedback linearization; embedded model control; sliding-mode control; nonlinear model predictive control. Observer design for nonlinear systems: extended Kalman filter. Aerospace topics: coordinate reference systems; rotations and translations; rigid body attitude kinematics and dynamics; orbital dynamics. Aerospace applications/case studies will be about spacecraft orbit/trajectory control; spacecraft attitude control; aircraft flight control.
Modalità d'esame
Modalita di esame: Test informatizzato in laboratorio;
Exam: Computer lab-based test;
... Written examination (carried out in lab with the help of the PC and the Matlab/Simulink software) with multiple choice questions and design problems. The number of questions will range between 7 and 11, depending on the average difficulty. A (small) negative score will be assigned to wrong answers. The duration of the exam will be 2.30 hours. The following material will be available during the exam: lecture slides (without students' notes), Matlab libraries. No other material will be allowed (in particular, no solved exercises). No oral examinations will be held.
Testi di riferimento
[1] C. Novara, Nonlinear Control and Aerospace Applications: lecture notes. Politecnico di Torino, 2017. [2] J-J. E. Slotine and W. Li, Applied Nonlinear Control, Prentice Hall, 1991. [3] S. Sastry, Nonlinear Systems: Analysis, Stability, and Control, Springer, 1999. [4] M. H. Kaplan, Modern Spacecraft Dynamics and Control, I. John Wiley and Sons, 1976. [5] B. Wie, Space Vehicle Dynamics and Control. Aiaa, 1998. [6] F. Markley and J. Crassidis, Fundamentals of Spacecraft Attitude Determination and Control. Cambridge University Press, 2014. [7] D. G. Hull, Fundamentals of Airplane Flight Mechanics, Springer, 2007. [8] A. Tewari, Atmospheric and Space Flight Dynamics: Modeling and Simulation with Matlab and Simulink, Birkhauser, 2007. [9] E. Canuto, C. Novara, L. Massotti, C. Perez Montenegro and D. Carlucci, Spacecraft dynamics and control. The embedded model control approach, Butterworth-Heinemann (Elsevier), 2018.
Codice insegnamento 01RKXYG
Programmazione di sistema
1° anno · 2° semestre · 10 CFU · ING-INF/05 · 0 file
Programmazione di sistema (Progetto di sistemi operativi)- Conoscenza dell'architettura dei sistemi operativi come insieme di gestori di risorse - Conoscenza dei moduli del nucleo del sistema operativo, e capacità di…
Scheda dell'insegnamento
Obiettivi formativi
Programmazione di sistema (Progetto di sistemi operativi)- Conoscenza dell'architettura dei sistemi operativi come insieme di gestori di risorse - Conoscenza dei moduli del nucleo del sistema operativo, e capacità di implementare nuovi moduli - Capacità di usare system call per la creazione, sincronizzazione e terminazione di processi e thread - Conoscenza del meccanismo della memoria virtuale - Capacità di analizzare e implementare algoritmi di gestione della memoria virtuale - Conoscenza delle tecniche di gestione dei dispositivi periferici - Capacità di analizzare ed implementare device drivers - Conoscenza dell'organizzazione dei moderni file system e capacità di gestione degli stessi Programmazione di sistema (Progetto di software di sistema)Al termine del corso, lo/la studente dovrà conoscere i principi fondamentali dell'organizzazione della memoria nei programmi di sistema, il modello di possesso, prestito e tempo di vita di Rust e le garanzie che esso fornisce in termini di sicurezza della memoria, i meccanismi di polimorfismo basati su tratti e programmazione generica, le principali strutture dati della libreria standard e le loro proprietà computazionali, e i modelli di concorrenza e programmazione asincrona supportati dal linguaggio. Lo/la studente dovrà essere in grado di progettare e implementare programmi Rust completi e modulari, applicando le regole del sistema dei tipi per garantire la correttezza della gestione della memoria; di utilizzare i meccanismi di gestione degli errori, i tratti e le strutture dati generiche per sviluppare componenti riusabili; di scrivere test automatici per verificare la correttezza del codice prodotto; e di realizzare applicazioni concorrenti e asincrone corrette ed efficienti mediante i costrutti e le librerie offerti dall'ecosistema Rust. Il corso contribuisce a sviluppare la capacità di affrontare con autonomia e senso critico problemi complessi di progettazione del software di sistema, valutando consapevolmente i compromessi tra correttezza, prestazioni e manutenibilità .
Programma
Programmazione di sistema (Progetto di sistemi operativi)L'insegnamento si articola in due parti (moduli), di cui questa affronta gli aspetti interni di un sistema operativo, illustrandone l'architettura e la progettazione dei sotto-sistemi, mentre nella parte API programming si trattano le interfacce di programmazione per l'utilizzo delle risorse di sistema e per la programmazione concorrente. La parte "progettazione di sistemi operativi" affronta i moduli di un sistema operativo, e si approfondiscono i concetti e le tecniche di gestione efficiente delle risorse di un sistema di elaborazione (processori, memorie, dispositivi periferici, file, ecc.). Programmazione di sistema (Progetto di software di sistema)L'insegnamento si propone di fornire agli studenti le competenze necessarie per progettare e sviluppare software di sistema robusto, sicuro ed efficiente, con particolare riferimento al linguaggio Rust come strumento paradigmatico della programmazione di sistema moderna. Partendo dalla comprensione approfondita dell'architettura della memoria e dei meccanismi di esecuzione dei programmi, il corso guida gli studenti verso la padronanza dei concetti fondamentali di possesso, prestito e tempo di vita dei riferimenti alla memoria, che costituiscono la risposta strutturale di Rust alle vulnerabilità tipiche di C e C++. Vengono inoltre sviluppate competenze nella progettazione di strutture dati composite, nella gestione degli errori, nella modularità del codice e nel polimorfismo tramite tratti. La seconda parte del corso affronta le sfide della programmazione concorrente e asincrona, preparando gli studenti a realizzare sistemi in grado di sfruttare appieno le architetture multicore e di gestire efficientemente operazioni di I/O non bloccante. Tali competenze rispondono ai profili professionali di ingegnere del software di sistema, sviluppatore di infrastrutture e middleware, e progettista di applicazioni ad alte prestazioni, figure di crescente rilevanza nel mercato del lavoro in ambito industriale, embedded e cloud.
Programmazione di sistema (Progetto di sistemi operativi)Richiami di Architettura del Sistema Operativo (3 ore) - moduli di gestione delle risorse di un sistema di elaborazione - gestione di processi e thread (richiami) Gestione della memoria (9 ore) - indirizzi fisici e logici, MMU, TLB - paginazione - memoria virtuale e paginazione a richiesta Gestione delle unità periferiche (3 ore) - driver e gestione dispositivi - gestione degli accessi a disco Gestione dei file (6 ore) - organizzazione di un file system, - organizzazione e operazioni su file e direttori Sistema operativo didattico OS161 (9 ore) - architettura del sistema, struttura dei sogenti, compilazione, esecuzione, debug - creazione si semplici system calls per input/output - gestione di thread e processi user - implementazione di primitive di sincronizzazione - implementazione di semplice supporto per I/O su file - gestione di semplici operazioni di IO per dispositivo a caratteri Programmazione di sistema (Progetto di software di sistema)Il corso si articola nei seguenti blocchi tematici: - Fondamenti della programmazione di sistema (0.5 cfu) - Possesso e sicurezza degli accessi in memoria (0.75 cfu) - Tipi composti, errori e modularità (0.75 cfu) - Polimorfismo e testing (0.75 cfu) - Strutture dati avanzate (0.75 cfu) - Programmazione concorrente e asincrona (1.5 cfu)
Modalità d'esame
Programmazione di sistema (Progetto di sistemi operativi)Modalita di esame: Prova scritta (in aula); Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo; Programmazione di sistema (Progetto di software di sistema)Modalita di esame: Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Programmazione di sistema (Progetto di sistemi operativi)Exam: Written test; Group project; Computer-based written test in class using POLITO platform; Programmazione di sistema (Progetto di software di sistema)Exam: Computer-based written test in class using POLITO platform;
... Programmazione di sistema (Progetto di sistemi operativi)L'esame, per il modulo "progettazione di sistemi operativi", è costituito da una prova scritta, della durata complessiva di 80 minuti, con esercizi e/o domande sugli argomenti svolti a lezione Le domande si propongono di accertare tutti i relativi obiettivi formativi, sia in termini di conoscenze che di capacità acquisite. L'esame viene svolto su PC con l'utilizzo della piattaforma di ateneo. Nel caso di problemi tecnici si passa all'esame scritto su carta, con schema e contenuti immutati. Durante lo svolgimento dell’esame non è possibile consultare testi o appunti. Regole comuni ai due moduli. Gli esami delle due parti possono essere sostenuti in appelli diversi, all'interno di una finestra temporale di 4 appelli, che corrispondono a circa un anno solare. Il punteggio finale si ottiene sommando quello delle due parti, che ricevono ognuna un punteggio massimo di 15. Gli scritti possono quindi ottenere un punteggio massimo di 30. L'esame non è superato se il punteggio relativo ad una delle due parti (moduli) è inferiore a 7, oppure se la somma non raggiunge 18. Allo scritto si aggiunge un progetto (lavoro di gruppo) facoltativo su uno dei due moduli, con punteggio fino a un massimo di 6. Un voto complessivo maggiore o uguale a 31 porta a 30 con Lode. Il progetto accerta prevalentemente gli obiettivi formativi in termini di capacità acquisite. Modalità e scadenze per i progetti sono indicate dai docenti. Programmazione di sistema (Progetto di software di sistema)La prova è scritta e si svolge in presenza su PC, con l'utilizzo della piattaforma di ateneo. La durata della prova è di 90 minuti. Non è consentito consultare libri, appunti o materiale didattico di alcun tipo, né utilizzare strumenti di intelligenza artificiale o risorse esterne alla piattaforma. È consentito l'uso dell'ambiente di sviluppo Rust installato sulla macchina, limitatamente alla verifica della compilabilità del codice prodotto. La prova è composta da tre tipologie di esercizi, volti ad accertare progressivamente i diversi livelli di apprendimento attesi: - Comprensione e analisi del codice: agli studenti viene presentato un frammento di codice Rust e viene chiesto di descriverne il comportamento, di identificare eventuali errori di compilazione o di esecuzione, di spiegarne le cause e di motivare le scelte progettuali adottate. Questa tipologia di esercizi accerta la conoscenza del modello di possesso, del sistema dei tipi, dei meccanismi di concorrenza e degli altri costrutti del linguaggio. - Correzione e miglioramento del codice: agli studenti viene presentato un frammento di codice Rust contenente uno o più errori o inefficienze e viene chiesto di correggerlo, giustificando le modifiche apportate. Questa tipologia accerta la capacità di applicare le regole del linguaggio per garantire la correttezza della gestione della memoria, la robustezza della gestione degli errori e la sicurezza degli accessi concorrenti. - Progettazione e implementazione: agli studenti viene assegnato un problema di programmazione di sistema e viene chiesto di progettare e implementare una soluzione in Rust, rispettando i requisiti funzionali indicati e applicando i costrutti più appropriati tra quelli studiati nel corso. Questa tipologia accerta la capacità di integrare le competenze acquisite per affrontare problemi di complessità realistica.
Testi di riferimento
Programmazione di sistema (Progetto di sistemi operativi)Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5 - Materiale didattico a disposizione su Web - Trasparenze proiettate in aula - Esercizi e soluzioni Programmazione di sistema (Progetto di software di sistema)Steve Klabnik, Carol Nichols, The Rust Programming Language, 2nd edition, No Starch Press, 2023, ISBN 978-1-7185-0313-1 Mara Bos, Rust Atomics and Locks: Low-Level Concurrency in Practice, O'Reilly Media, 2023, ISBN 978-1-098-11944-7
Codice insegnamento 01GRSYG
Reinforcement learning methods for control
1° anno · 2° semestre · 6 CFU · ING-INF/04 · 0 file
knowledge of the fundamental concepts of machine learning and reinforcement learning; - knowledge of neural networks and deep learning techniques relevant to reinforcement learning applications; - learn to model…
Scheda dell'insegnamento
Obiettivi formativi
- knowledge of the fundamental concepts of machine learning and reinforcement learning; - knowledge of neural networks and deep learning techniques relevant to reinforcement learning applications; - learn to model control and decision-making problems within the reinforcement learning framework; - understand the principles of agent-environment interaction, reward design, and policy optimization; - develop the ability to apply reinforcement learning techniques to simple control problems and interpret the obtained results
Programma
This course provides an introduction to reinforcement learning methods for control, beginning with an overview of the fundamental concepts of machine learning. Particular emphasis will be placed on neural networks and deep learning techniques, which constitute the core of many modern reinforcement learning approaches. Building on these foundations, the course will introduce the main principles and algorithms of reinforcement learning, with a focus on their application to control and decision-making problems.
The course is subdivided in two main modules: Part 1 -- Introduction to Machine Learning (approx. 20h) - Overview of machine learning paradigms (supervised, unsupervised, and reinforcement learning) - General concepts of machine learning (data representation, loss functions, dataset partitioning) - Fundamentals of neural networks - Convolutional Neural Networks basic algorithms (backpropagation, Stochastic Gradient Descent) - Overview of deep learning architectures - Training a neural network (data preprocessing, weight initialization and hyperparameter optimization) Part 2 --Introduction to Reinforcement Learning (approx. 40h) - Basic concepts of reinforcement learning (the reinforcement learning problem: state, actions, rewards, and policies) - Multi-arm Bandits - Markov Decision Processes - Dynamic programming - Model-free prediction (Monte-Carlo methods, temporal difference learning) - Value function approximation - Policy gradient methods - Model-based reinforcement learning
Modalità d'esame
Modalita di esame: Prova orale obbligatoria;
Exam: Compulsory oral exam;
... The exam aims at assessing students' knowledge and understanding of the topics covered in the course, as well as their ability to critically discuss such topics. The exam is oral, and students are required to answer questions covering the entire course content. Students are not allowed to use neither books nor lecture notes during the exam. The oral exam is divided in two parts. The first part focuses on the theoretical aspects of the course and contributes up to 24 points to the final score. The second part focuses on the experiments conducted during the in-class labs and contributes up to 8 points. The maximum achievable score is 32. Honors (lode) will be awarded to students who achieve a final score of 31 points or higher.
Testi di riferimento
The main learning resources are slides and supplementary material provided by the teachers. Supplementary material: - Reinforcement Learning: An Introduction, Richard S. Sutton, Andrew G. Barto
Codice insegnamento 01WMVYG
Software Design and Architecture
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Understanding and applying design principles: students will know how to recognize and apply key design principles which are essential for creating flexible and maintainable software. • Understanding and applying…
Scheda dell'insegnamento
Obiettivi formativi
- Understanding and applying design principles: students will know how to recognize and apply key design principles which are essential for creating flexible and maintainable software. • Understanding and applying architectural patterns: students will gain knowledge of different architectural patterns that support the evolution of components over time. • How to document software architecture: Students will develop skills in using visual notations to document and communicate software architecture and design. These outcomes should enable students to design and architect robust, adaptable and high-quality software systems.
Programma
Key software stakeholders often focus on correctness of expected behavior rather than future adaptability, but this approach is short-sighted: a program that works perfectly but it is not reliable, or it cannot be changed will become obsolete as requirements evolve. On the other hand, a non-functional but easily adaptable program can be continuously refined to meet new needs. In essence, while immediate functionality is vital, the ability to adapt to future changes and to satisfy other non-functional quality characteristics is essential to the long-term life of a software system. The main pedagogical goal of this course is to teach design and architectural patterns that help balancing functionality, adaptability and other non-functional quality characteristics to ensure that software remains valuable to end users over time.
- Design principles and patterns • Software design qualities • Component principles • Architectural patterns • Notations and languages for describing architectures
Modalità d'esame
Modalita di esame: Prova orale obbligatoria; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Compulsory oral exam; Computer-based written test in class using POLITO platform;
... The 50% percent of the mark will be based on a practical project, allowing students to apply the techniques discussed in the course and develop relevant skills. The remaining 50% will come from a final oral examination, which will focus on a critical discussion of the student's project experience and the knowledge gained throughout the course
Testi di riferimento
The main bibliographic references of the course are: • Robert C. Martin, Clean Architecture, 2017 • Chris Richardson, Mircroservices Patterns, 2018
Codice insegnamento 01VRZYG
Software Engineering I
1° anno · 1° semestre · 8 CFU · ING-INF/05 · 0 file
Knowledge acquired: issues in the development of large software systems (communication and coordination between contractors and developers, evolution, correctness, reliability, usability). Software life cycles. The UML…
Scheda dell'insegnamento
Obiettivi formativi
Knowledge acquired: issues in the development of large software systems (communication and coordination between contractors and developers, evolution, correctness, reliability, usability). Software life cycles. The UML language. Operational modeling and prototyping. Verification and validation. Management and support of software projects. Skills acquired: ability to analyze and formalize functional and non functional requirements of a software system. Ability to define an operational model of a software system. Ability to validate and verify a software system (through test, prototyping and inspection). Ability to define the organizational support of a software project (project management, configuration management, lifecycle).
Programma
The aim of the course is to provide a comprehensive understanding of the principles, methodologies, and tools needed for large-scale software development. Students will be guided in the analysis and formalization of software requirements, in the design using UML, in software project management, and in code testing. Emphasis will be placed on the development of teamwork skills, preparing students to collaborate effectively in a large-scale software development context. Programming capability (aka coding in an object oriented language) is a prerequisite.
Introduction (0.5 CFU) -issues in the development and maintenance of large programs -software qualities: functionality, correctness, efficiency, usability, portability etc -economic value, direct and indirect, of programs -program types Configuration management (0.5 CFU) - identification of configuration items - version control, change management, configuration control - practice with a CM tool (aka Git) Software processes (0.5 CFU) -waterfall, prototyping, iterative - agile methodologies UML (1.5 CFU) -structural diagrams (class diagram, deployment diagram) -dynamic diagrams (sequence diagram) -functional diagrams (use case diagram) Requirements Analysis and modelling (1.5 CFU) - Functional and non functional requirements - Stakeholders - Outline of a requirement specification document - use of UML to formalize requirements - Validation and verification of requirements: inspections, prototypes, formal models Software design(0.5 CFU) - use of UML for design -design and architectural diagrams -Validation and verification of designs Verification and Validation (2.5 CFU) - testability, correctness, reliability a - test: test white and black box, unit, integration, system; techniques and tools - inspections, walkthrough, reviews, reading Software project management(0.5 CFU) - tools:WBS, Gantt, Pert, milestones, deliverables. - activities: estimation, planning, tracking, post mortem
Modalità d'esame
Modalita di esame: Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Computer-based written test in class using POLITO platform;
... The final exam is made of two parts: Written exam (mandatory) + Project (optional) ---Project, in 4 people teams, developed only during the course: consists in developing a small project in Typescript or Python, delivering: requirement document, design document, code, test cases (unit, integration, acceptance), estimation document. The project is developed using a configuration management tool (aka GitLab) and open source tools (aka Jest, Mocha, PlantUmL, Jacoco, Cypress and similar). The project is graded considering the quality of the deliverables. Weekly labs are organized to support the students in the execution of the project. ---Written exam, individual, 1 hour duration, no access to books or notes. The exam is made of exercices and open questions. Past exams with solutions are available on the course web site. ---The final grade (max 33) depends on the grade of the project (max 14 points) + grade of the written exam (max 20 points). -- The project grade must be at least 8/14 -- The written exam grade must be at least 11/20 -- 30cum laude requires >= 32.5 points In case the project is not done, max possible grade is 20/33, the written exam grade must be at least 14/20
Testi di riferimento
M. Camilli, E. Di Nitto, A. Fuggetta, A. Margara, M. G. Rossi, D. A. Tamburri: Software Engineering. A Structured Journey from Inception to Delivery. M. Fowler. UML distilled, Pearson, 2018
Codice insegnamento 01VRYYG
Software engineering
1° anno · 2° semestre · 8 CFU · ING-INF/05 · 0 file
By the end of the course, students will be able to: • discuss the challenges associated with the development and maintenance of large software systems, including the economic significance of software, and identify…
Scheda dell'insegnamento
Obiettivi formativi
By the end of the course, students will be able to: • discuss the challenges associated with the development and maintenance of large software systems, including the economic significance of software, and identify various software quality attributes (functionality, correctness, efficiency, usability, portability, etc.); • manage software configuration, including identifying configuration items, version control, change management, and configuration control; • compare and contrast different software process approaches (waterfall, prototyping, iterative – agile methodologies); • analyze and formalize functional and non-functional requirements of a software system, use UML to formalize requirements, and verify and validate requirements through inspections, prototypes, and formal models; • use UML for software design, create design and architectural diagrams, and verify and validate designs; • perform various types of testing on source code (white-box and black-box testing, unit, integration, and system testing), use inspection and review techniques and tools, and discuss the importance of testability, correctness, and reliability in the software development process; • understand project management tools such as WBS, Gantt, PERT, milestones, and deliverables, and effectively manage a software project; • collaborate and contribute effectively in a group environment, as demonstrated by their ability to complete a group project using a team assigned based on a survey reflecting their background and expected commitment.
Programma
The aim of the course is to provide a comprehensive understanding of the principles, methodologies, and tools needed for large-scale programming. Students will be guided in the analysis and formalization of software requirements, in the design using UML, in software project management, and in code testing. Emphasis will be placed on the development of teamwork skills, preparing students to collaborate effectively in a large-scale software development context.
Introduction • Challenges in the development and maintenance of large software systems • Software quality attributes: functionality, correctness, efficiency, usability, portability, etc. • The economic value—both direct and indirect—of software • Types of software systems Configuration Management • Identification of configuration items • Version control, change management, configuration control • Practical examples using GIT Software Processes • Waterfall • Prototyping • Iterative – Agile methodologies UML • Structural diagrams (class diagrams, deployment diagrams) • Behavioral diagrams (sequence diagrams) • Functional diagrams (use case diagrams) Requirements Analysis and Modeling • Functional and non-functional requirements • Stakeholders • Structure of a software requirements specification (SRS) document • Use of UML to formalize requirements • Requirements verification and validation: inspections, prototypes, formal models Software Design • Use of UML for design • Design and architectural diagrams • Design verification and validation Verification and Validation • Testability, correctness, reliability • Testing: white-box and black-box testing, unit testing, integration testing, system testing; techniques and tools • Inspections, walkthroughs, reviews, reading techniques Software Project Management • Tools: WBS, Gantt, PERT, milestones, deliverables • Activities: estimation, planning, tracking, post-mortem analysis
Modalità d'esame
Modalita di esame: Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Group project; Computer-based written test in class using POLITO platform;
... The exam is a written, individual test lasting 1 hour, conducted in class without access to books or notes, and delivered through the university's exam platform. It includes multiple-choice questions as well as some exercises and theory questions. Project work in teams of 5 students, developed exclusively during the course The project consists of documenting and validating a small software project in the TypeScript language. Deliverables include: - Requirements document - Use Case document - Class diagram and glossary - Docker container - Unit tests (black box, white box) - E2E tests The project is managed through a configuration management tool (GitLab) and makes use of open-source tools (e.g., Visual Studio Code, Jest, PlantUML, Cypress). Project evaluation is based on the quality of the deliverables. Weekly lab sessions are organized to support students in carrying out the project. Exam rules - Students may choose to take only the written exam. In this case, the maximum achievable score is 23 out of 33. - If the project is completed, a minimum score of 14/23 is required in the written exam to add the group project grade. - The project will receive a grade between 0 and 10. - The project must be carried out in parallel with the course and delivered at a fixed deadline that will be communicated during the course. - Honors (cum laude) are awarded starting from a total score > 32 points (project points included).
Testi di riferimento
M. Camille, E. Di Nitto, A. Fuggetta, A. Margara, M. G. Rossi, D. A. Tamburri - Software Engineering - A Structured Journey from Inception to Delivery Slides, exercises and case studies on the course web site.
Codice insegnamento 04GSPYG
Specification and simulation of digital systems
1° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of the syntax and semantics of VHDL • Ability to describe complex digital systems in VHDL at various levels of abstraction • Basic knowledge of the Verilog language by difference w.r.t. VHDL • Knowledge of…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of the syntax and semantics of VHDL • Ability to describe complex digital systems in VHDL at various levels of abstraction • Basic knowledge of the Verilog language by difference w.r.t. VHDL • Knowledge of the fundamental features of embedded systems • Knowledge of the metrics to evaluate designs • Knowledge of the design methodologies for register-transfer level systems • Ability to design complex digital systems at the register-transfer level with CAD tools • Ability to verify by simulation complex digital system designs • Knowledge of the main formal verification techniques with particular emphasis on combinational and sequential equivalence check and model checking
Programma
Course appearing in the tracks Embedded Systems and Software and Digital Systems). Students acquire the skills to describe digital systems at various levels of abstraction with the VHDL language. The Verilog language is introduced by difference. The course completes the design methodologies acquired in previous basic digital design courses and extends them to the register-transfer level. The course uses simulation-based verification techniques to develop in a lab several RT-level designs and deals with verification techniques based on formal methods, in particular combinational and sequential equivalence check and model checking. The course introduces the basic knowledge on testing digital circuits.
- VHDL: structure of VHDL files: entity/architecture; description styles: behavioral, dataflow, structural; lexical elements; objects: signals, variables and constants; data types: scalar types, composite types; operators and attributes; concurrent statements: concurrent signal assignments, generate statements, concurrent processes, component instantiations; sequential statements: processes, conditional statements, iterative statements; partitioning techniques: blocks, packages, libraries, components, configurations. Examples of combinational, synchronous and basic register-transfer level designs in VHDL. • Register Transfer-level embedded systems design: design metrics and their optimization; key technologies for embedded systems: processor technology, IC technology, design technology; single-purpose processor design: High-Level State Machines, the FSM-D model, from the algorithm to the FSM-D, synthesis of the datapath, synthesis of the control unit, description in VHDL; optimization of single-purpose processors: algorithm, FSM-D, datapath, FSM; optimization of Finite State Machines (FSMs): state minimization (simplified and exact equivalent state detection algorithm), state encoding heuristics. • Formal verification: approaches to design verification: simulation vs. formal verification; theorem proving: propositional logic, first-order logic, higher-order logic; equivalence checking: Binary Decision Diagrams, combinational equivalence check, sequential equivalence check (symbolic reachability analysis, the product machine model); Model Checking: linear-time temporal logic, branching-time temporal logic, liveness and safety properties, model checking algorithms. • Verilog by difference w.r.t. VHDL: descriptions of combinational circuits, sequential circuits and RTL designs.
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Prova orale obbligatoria;
Exam: Written test; Compulsory oral exam;
... The exam consists in a written and in an oral part. Written exam (max 150 minutes): designs on paper of combinational networks, Finite State Machines and RT-level complex systems described in VHDL. Number of exercises varies according to difficulty. No books, slides or any other material allowed, except a VHDL primer. The goal of the written part is to ascertain that the student has acquired the ability to design complex digital systems and to describe them in VHDL at various levels of abstraction. Evaluation criteria: understanding of specifications, functional completeness of solution, correctness of VHDL code. No later than 3 days after the written exam, the student has to upload a simulable VHDL file and its testbench, as well as a short report focusing on the design choices and on the differences between the version handed in at the written exam and the uploaded one. If the VHDL files are uploaded before the deadline, the written exam is corrected and ranked. If the mark is sufficient (>= 15), follows a mandatory oral exam on all the topics dealt with during the course. Questions concern knowledge (definitions, concepts, etc.) and short exercises (in particular related to formal verification and Verilog). The oral exam aims at ascertaining that the student has acquired the notions in Formal Verification and Verilog that are part of the course syllabus. The final mark takes into account the results both in the written and the oral parts as a whole and not as an average. An optional short assignment is available. It is an individual project, assigned mid-December, to be handed in for evaluation before the oral exam and no later than the end of February exam session. It entails max 2/30 bonus on the final mark.
Testi di riferimento
Handouts published on the course site. Additional readings: • F. Vahid, “Digital Design with RTL design, VHDL and Verilog�, 2nd edition, John Wiley, 2010 • D. Pellerin, D. Taylor “VHDL Made easy!�, Prentice Hall 1997 • F. Vahid, T. Givargis “Embedded System Design: a unified hardware/software introduction�, John Wiley, 2002 • M.Ercegovac, T. Lang, J. Moreno “Introduction to digital systems�, John Wiley, 1999 •
Codice insegnamento 02LQDYG
Synthesis and optimization of digital systems
1° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of Electronic Design Automation flows with particular emphasis on synthesis and optimization techniques; - Modeling of digital circuits and abstract data structures used in CAD tools; - Knowledge of behavioral-…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of Electronic Design Automation flows with particular emphasis on synthesis and optimization techniques; - Modeling of digital circuits and abstract data structures used in CAD tools; - Knowledge of behavioral- and logic-level synthesis methodologies; - Understanding of the main optimization techniques and their algorithms for different cost functions (Area, Delay, Power consumption) - Practical skills in commercial synthesis tools, industrial deep-submicron CMOS technologies and TCL scripting language
Programma
The course is taught in English. This course introduces the basic concepts of synthesis and optimization of CMOS digital circuits.
- Introduction to electronic design automation for digital circuits and basic concepts behind synthesis and optimization (1 credit) - Computer-aided design methods, techniques and algorithms at different levels of abstraction (3 credits): o Synthesis and optimizations algorithms at the behavioral level (Scheduling, Sharing and binding algorithms) o Synthesis and optimizations algorithms at the logic level (Boolean and Algebraic methods) o Technology mapping (Boolean and Structural matching) - Computer-aided design for low-power circuits (2 credits): o Power modeling o Low-power design techniques at behavioral and logic level
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Elaborato progettuale in gruppo;
Exam: Written test; Group project;
... The exam consists of two parts. The first one (70% of the final score) is a written test including both numerical exercises and open-answer questions. The time allowed for the test is 2 hours, closed books; the maximum score for this part is 27 points. The second part (30% of the final score) consists of a group project in which some of the techniques described in the course will be implemented on the EDA framework used during the lab sessions; the maximum score for this project is 3 points. The final score is the sum of the score obtained in the two parts.
Testi di riferimento
Class handouts and additional material will be made available on the course webpage. User guides for lab sessions will be made available as well. Main reference book: G. De Micheli, Synthesis and Optimization of Digital Circuits, McGraw-Hill, 1994.
Codice insegnamento 02LVNYG
System and device programming
1° anno · 2° semestre · 10 CFU · ING-INF/05 · 0 file
System and device programming (API Programming)Part I • Knowledge of the operating systems architecture as a collection of resource managers • Knowledge of operating system kernel modules, and new module implementation…
Scheda dell'insegnamento
Obiettivi formativi
System and device programming (API Programming)Part I • Knowledge of the operating systems architecture as a collection of resource managers • Knowledge of operating system kernel modules, and new module implementation skills • Skill to use system calls for creation, synchronization and termination of processes and threads • Knowledge of virtual memory mechanisms • Skill to understand and implement virtual memory management algorithms • Knowledge of peripheral device management techniques • Skill to understand and implement device drivers Part II • Knowledge of modern file system organizations and skill to manage file systems and file locking • Knowledge of system programming APIs (system calls) • Skill to understand and implement programs based on system calls • Skill to understand and implement programs with advanced file system interactions, such as sequential, random and/or shared file access, and directory manipulation • Skill to understand and implement reliable/robust programs exploiting exception and signal handling • Skill to understand and implement programs with advanced memory management tachniques, such as dynamic allocation, memory mapping of files, dynamic libraries • Skill to understand and implement concurrent programs based on processes/threads • Skill to understand and implement concurrent programs exploiging • Advanced synchronization, message passing, and data sharing techniques System and device programming (OS Internals)- Knowledge of operating system architecture as a set of resource managers - Knowledge of operating system core modules, and ability to implement new modules - Ability to use system calls for the creation, synchronization, and termination of processes and threads - Knowledge of the virtual memory mechanism - Ability to analyze and implement virtual memory management algorithms - Knowledge of peripheral device management techniques - Ability to analyze and implement device drivers - Knowledge of the organization of modern file systems and ability to manage them
Programma
System and device programming (API Programming)This course is held at the second semester of the first year of the Master of Computer Engineering, and it is organized in two parts. The first part introduces the architecture and the design principles of an operating system. More specifically, it deals with internal operating system modules, together with the main techniques and strategies for efficient management of resources such as processors, memories, peripheral devices, files, etc. The second part describes programming interfaces for system programming and resource management, as well as concurrent programming. It introduces system programming techniques, within the framework of state-of-the-art operating systems, such as Unix/Linux and Windows. Advances concurrend programming techniques are introduced and used.System and device programming (OS Internals)This course is organized into two parts (modules): this part ("OS internals") introduces the architecture and design principles of an operating system, while the "API programming" section describes programming interfaces for system programming and resource management, as well as concurrent programming. The "OS internals" section deals with internal operating system modules, along with the main techniques and strategies for efficiently managing resources such as processors, memories, peripheral devices, files, etc.
System and device programming (API Programming)Part I • Review of operating system architecture (3.0 hours) o Modules for the management of the resources of a computer system o Process and thread management synchronization (recalls) • Memory management (10.0 hours) o Physical and logical address spaces, MMU, TLB o Paging o Virtual memory and demand paging • Peripheral Device management (3.0 hours) o Drivers and IO device management o Disk management • File system management (6.0 hours) o File system organization and protection o Management an operations on files and directories • Teaching operating system OS161 (10.0 hours) o System level architecture, source files, compilation, execution, debug o Implementation of simple system calls for standard I/O o Thread and user process management o Implementation of synchronization primitives o Implementation of simple support for file I/O • Laboratory practice on all previous topics (18.0 hours). Part II • Review of basic system and concurrent programming (6.0 hours) o Processes o Threads o Concurrent programming and synchronization in POSIX • Introduction to concurrent programming in C11 (2.0 hours) • Introduction to the Windows API (6.0 hours) • Introduction to the C++ language (10.0 hours) o Classes, inheritance and polymorphism o Exception handling and runtime support o Generic programming o Concurrent programming • Win32 and Linux system programming and concurrent programming (4.0 hours) o File and directory management o Process and thread management o Synchronization o Exception and signal handling o Memory management o Synchronous and asynchronous I/O o Inter-process communication • Examples of Windows and Linux application development (4.0 hours) o General principles o Reactive programming • Laboratory practice on all previous topics (18.0 hours).System and device programming (OS Internals)Operating System Architecture Review (3 hours) - Resource management modules of a processing system - Management of processes and threads (reviews) Memory Management (9 hours) - Physical and logical addresses, MMU, TLB - Paging - Virtual memory and paging on demand Management of peripheral units (3 hours) - Drivers and device management - Management of disk accesses File Management (6 hours) - Organization of a file system, - Organization and operations on files and directories Educational Operating System OS161 (9 hours) - System architecture, structure of sources, compilation, execution, debugging - Creation of simple system calls for input/output - Management of threads and user processes - Implementation of synchronization primitives - Implementation of simple support for file I/O - Management of simple IO operations for character devices
Modalità d'esame
System and device programming (API Programming)Modalita di esame: Test informatizzato in laboratorio; Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo; System and device programming (OS Internals)Modalita di esame: Prova scritta (in aula); Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
System and device programming (API Programming)Exam: Computer lab-based test; Group project; Computer-based written test in class using POLITO platform; System and device programming (OS Internals)Exam: Written test; Group project; Computer-based written test in class using POLITO platform;
... System and device programming (API Programming)The exam consists of a written test and an optional group project. The course does not include any oral examination, but the optional group project will be openly presented by the students belonging to the same group during one of the examination sessions. The target of the written test is to check the acquire theoretical knowledge in the area and to verify the ability of the candidate to solve medium-size problems in the operating system and device programming area (such as device management, system resource management, concurrent programming, etc.). The target of the project is to force the student to work and to coordinate his/her effort with his/her peers, and to face more complex and complete problems in the same area. The Written Test The written test includes questions and exercises on both theoretical and practical aspects of the entire course. Theoretical questions may include open and closed puzzles. These are formulated to test the candidate’s knowledge on all topics presented during the course and his/her ability to solve problems related to theoretical aspects. Practical questions and exercises test the ability of the candidate to solve system, device and concurrency problems writing programs in different environments and programming languages (UNIX/Linux, Windows, C, C++, etc.). The written test is divided into two sessions following the previously described parts of the course. Both parts may include theoretical and practical aspect, involving respectively: • Operating system internal topics • System, device and concurrent programming aspects. Both parts amount up to 13 points on the final evaluation mark. Each part has a passing threshold of 7 points. Thus, to pass the exam, a pass grade (larger or equal than 7) is required on both parts. The final mark is the sum of the two evaluations. As a consequence, the maximum grade that can be reached with the written test is equal to 13+13=26 out of 30. The exam is considered as passed only if the written mark is larger or equal to 18. The time allowed for each written part may vary from 60 to 120 minutes, depending on the examination text. No books, notes, portable devices, or other material is allowed during the written text. The two written parts can be taken during different examination sessions, but these sessions must be placed within a period corresponding to one academic year (e.g., if one take the first written text in September the second one must be taken at most in the summer session, i.e., June/July of the next year). It is possible to reject a written mark only when the mark is delivered or when it is coupled with a previous mark. In other words, as soon as both parts have been passed, and their sum is larger or equal to 18, the written marks are considered as final, i.e., they can be improved only with the mark eventually obtained with the project. Moreover, any final mark will be registered as soon as possible, i.e., as soon as the mark of the project (if the project has been taken by the student) will be available. On the contrary, when the validity of one written part expires, it will be automatically lost. In this case the candidate will have to retake the corresponding written test. The Optional Project An optional project, on either one of the two course parts, may be taken to improve the candidate’s knowledge on the course’s topics and eventually amend the final mark. Anyway, the exam is considered as “passed� only if the written test is passed. Projects are specified yearly before then end of May, and must be selected by all students who want to apply for it before the end of June. Projects are usually taken by group of candidates (from 2 to 4). To balance the teachers’ load during each academic year, there is a limit on the number of projects that are delivered on each one of the course parts. Project will be assigned to group of students on a first-come-first-served basis. It must be noticed that each candidate is entitle to take a project at most once in his/her studying career at Politecnico, either during the first year he/she is enrolled in the course or in one of the following year. The project mark will follow a short presentation given by the group of candidates. The purpose of this presentation is to present the main algorithmic flow, the main criteria and ideas used to solve the problem. To enroll for a project presentation the group of student must upload the entire project kit on the portal web page (at the “Materiale� session) before the written test date of that examination session. This has to be done within the same academic year the project has been offered and more specifically in one of the 4 examination sessions following each course. The beginning of the course of the following academic year will automatically erase all pending projects (i.e., projects without a final mark). Once that the final mark for a project has been obtained there is no time limit to its validity. Each project can add from -2.0 to +6.0 marks to the final written evaluation. Marks can be different for different students within the same group, depending on the effort they put into the project and on the final presentation delivered. The maximum mark which can be obtained with both the written test and the group project amount to 26+6 = 32 out of 30. Marks equal to 31 or 32 will be automatically converted into 30 with honor. System and device programming (OS Internals)The exam for the "OS internals" module consists of a written exam, lasting a total of 80 minutes, with exercises and/or questions on topics covered in class. The questions are designed to assess all related learning objectives, both in terms of knowledge and skills acquired. The exam is administered on a PC using the university platform. In the event of technical problems, the exam will be a paper-based exam, with the same outline and content. It is not possible to consult texts or notes during the exam. The rules are the same for both modules. The exams for both parts can be taken in different exam sessions, within a time frame of four exam sessions, which corresponds to approximately one calendar year. The final score is obtained by adding the two parts, each of which receives a maximum score of 15. Written exams can therefore receive a maximum score of 30. The exam is failed if the score for one of the two parts (modules) is less than 7, or if the sum does not reach 18. An optional project (group work) on one of the two modules is added to the written exam, with a maximum score of 6. An overall grade of 31 or higher earns a 30 with honors. The project primarily assesses the learning objectives in terms of acquired skills. The methods and deadlines for the projects are indicated by the instructors.
Testi di riferimento
System and device programming (API Programming)Handouts and slides used during the classroom lessons are available on the teacher or course WEB site. The World Wide Web is also an excellent source of material for almost all topics introduced in the class (see Wikipedia, for example). Among the printed material, during the class, we make explicit usage of the following books: • J. M. Hart, "Windows System Programming", Addison-Wesley Publishing Company • A. Silberschatz, P. B. Galvin, G. Gagne, "Operating System Concepts", John Wiley & son • W. R. Stevens, "Advanced programming in the UNIX Environment", Addison-Wesley System and device programming (OS Internals)- Teaching materials available on the Web - Slides projected in the classroom - Exercises and solutions
Codice insegnamento 03NYHYG
Tecnologie e servizi di rete
1° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Lo studente acquisirà una conoscenza, più o meno approfondita, a seconda dello specifico argomento, e una profonda comprensione dei meccanismi e delle motivazioni delle seguenti tecnologie e soluzioni - Progettazione…
Scheda dell'insegnamento
Obiettivi formativi
Lo studente acquisirà una conoscenza, più o meno approfondita, a seconda dello specifico argomento, e una profonda comprensione dei meccanismi e delle motivazioni delle seguenti tecnologie e soluzioni - Progettazione di reti IPv4 - Protocollo IPv6 e delle tecniche che permettono la sua convivenza con IPv4. - Progettazione di reti IPv6 - Progettazione di reti locali Ethernet - Architettura di routing in Internet e principi di funzionamento dei protocolli utilizzati per il routing - Principali tecniche e protocolli per la realizzazione di Virtual Private Networks (VPN), sia di tipo customer-provisioned, sia di tipo provider-provisioned - Architettura protocollare MPLS - Problemi e protocolli per la qualità del servizio sulle reti IP - Reti ottiche - Principi fondamentali delle reti cellulari, dal GSM al 5G - Analisi e predizione di pattern di traffico
Programma
Il corso approfondisce i principi di progettazione delle tecnologie alla base delle moderne reti di calcolatori (Ethernet e i protocolli IPv4 e IPv6), affronta tematiche avanzate legate al funzionamento della rete Internet, quali l'architettura e i protocolli di routing, e presenta una serie di soluzioni tecnologiche che giocano un ruolo chiave nella realizzazione di servizi comunemente fruiti tramite Internet. Il corso si propone anche di fornire strumenti per analizzare e predire pattern di traffico di rete.
- Progettazione di reti IPv4 (0,8 CFU) - Protocollo IPv6, convivenza con IPv4, e progettazione di reti IPv6 (1,3 CFU) - Routing in Internet (0,5 CFU) - Progettazione di reti locali Ethernet (0,6 CFU) - Virtual Private Networks (1 CFU) - Tecniche per il supporto alla qualità del servizio. (0,2 CFU) - MPLS (0,6 CFU) - Reti ottiche (0,2 CFU) - Reti cellulari (0,6 CFU) - Analisi di pattern di traffico (0,2 CFU)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Vista la natura avanzata degli argomenti non esiste un singolo o limitato numero di testi disponibili. Il sito web del corso, oltre a contenere le trasparenze utilizzate a lezione, fornisce una lista di documenti disponibili su Internet o capitoli di libro relativi ai vari argomenti trattati a lezione.
Codice insegnamento 02KPNYG
Advanced Machine Learning
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of the main characteristics of artificial intelligence: historical overview and modern definition - Knowledge of how to formalize a learning problem from the mathematical foundations of the optimization…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of the main characteristics of artificial intelligence: historical overview and modern definition - Knowledge of how to formalize a learning problem from the mathematical foundations of the optimization objectives to the composition of a deep architecture - Knowledge of the main characteristics of modern deep learning techniques with practical engineering tricks for end-to-end training and fine-tuning the networks - Basic knowledge about how to deal with research questions, how to organize a project and prepare a scientific conference report
Programma
The course, optional for the Master degree in computer engineering, is offered in the I semester of the II year. The course is taught in English. The course addresses the core issues in modern Artificial intelligence and machine learning, with a special focus on advanced algorithms and theory of shallow and deep machine learning with applications in Computer Vision and Natural Language Processing. Lab activities will equip students with first-hand experience on modern optimization methods and programming framework most used in advanced research and companies as of today, and to have first hand experiences on the properties of such algorithms on specific case studies.
- Artificial Intelligence: historical definition, brief overview, modern definition and current role of machine and deep learning - Overview of fundamental knowledge of probability - Overview of decision theory: loss, risk, Probably Approximately Correct (PAC) Learning - Perceptron and Support Vector Machines beyond classification - Artificial Neural Networks - Convolutional Neural Networks basic algorithms: Backpropagation and Stochastic Gradient Descent - Training a CNN (data preprocessing, weight initialization and hyperparameter optimization) - Visualizing and Understanding the CNN inner working - Multi-Task and Structured Output Learning (Semantic Segmentation and Detection) - Unsupervised and Metric Learning (Siamese networks and Contrastive Learning for Retrieval) - Generative Networks (Autoencoders and GANs) - Recurrent Neural Networks - Learning with few samples and across domains - Active and Incremental learning - Basic concepts and networks for Reinforcement Learning Besides the lectures, the course will include selected topic-dedicated reading group sessions where the students will actively participate by presenting and discussing recent research papers.
Modalità d'esame
Modalita di esame: Prova orale obbligatoria; Elaborato progettuale in gruppo;
Exam: Compulsory oral exam; Group project;
... - paper presentation during the course: the students are asked to read, present and discuss a recent research paper - final group (3 students) project. It consists in reproducing and extending a current state of the art deep learning method. The students will elaborate a pdf report of about 8 pages in ieee paper format and will present the work in a 15 minutes talk during the oral exam. - oral exam on project presentation (group) and on the theory topics presented during lectures (individual questions).
Testi di riferimento
Slides + State of the art deep learning top conference and journal papers. Optional: specific pointers to chapters of the following books will be indicated during the lectures. Artificial Intelligence: A Modern Approach S. Russell, P.Norvig Deep Learning by I. Goodfellow, Y. Bengio, A. Courville. Understanding Machine Learning: From Theory to Algorithms by Shai Shalev-Shwartz and Shai Ben-David Machine Learning: a Probabilistic Perspective by Kevin P. Murphy The Elements of Statistical Learning, T. Hastie, R. Tibshirani, and J. Friedman Pattern Recognition and Machine Learning, Christopher M. Bishop Machine Learning, Tom M. Mitchell A Course in Machine Learning, Hal Daumé III Neural Networks - a Systematic Introduction, Raul Rojas
Codice insegnamento 01URWYG
Applicazioni Web I
2° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Conoscere i principali aspetti delle ultime versioni di HTML, CSS e JavaScript. - Aver acquisito la capacità di usare JavaScript in modo avanzato per la realizzazione di applicazioni web a livello di front-end. -…
Scheda dell'insegnamento
Obiettivi formativi
- Conoscere i principali aspetti delle ultime versioni di HTML, CSS e JavaScript. - Aver acquisito la capacità di usare JavaScript in modo avanzato per la realizzazione di applicazioni web a livello di front-end. - Conoscere le basi di React, un framework per la realizzazione di applicazioni web. - Essere pienamente capaci di realizzare applicazioni web complete, in modalità "single page application", con l'utilizzo di un semplice backend come server API. - Aver acquisito la capacità di progettare un'architettura client-server, le API e organizzare adeguatamente il client. - Conoscere e riconoscere le principali problematiche di robustezza, sicurezza, interoperabilità e prestazioni delle applicazioni studiate e relative best practice.
Programma
L'insegnamento, erogato in italiano nel secondo semestre del primo anno per la Laurea Magistrale in Ingegneria Informatica, presenta le principali tecniche per la realizzazione di applicazioni web, concentrandosi in particolare sulla programmazione front-end, utilizzando il linguaggio JavaScript e React come framework di programmazione lato client. Saranno trattati i principali paradigmi di programmazione necessari per realizzare il front-end di una moderna applicazione web, approfondendo le problematiche a livello di codice JavaScript e studiando gli approcci utilizzati da React, un framework ampiamente utilizzato. L'insegnamento permetterà allo studente/ssa di acquisire le competenze di base necessarie ad affrontare le principali scelte progettuali nell'ambito degli argomenti svolti.
- Richiami di architetture web, HTML e CSS (studio autonomo). - Layout complessi, framework CSS. Cenni di web design. - Il linguaggio JavaScript. Variabili e oggetti. Esecuzione nel browser e in Node.js. - Programmazione asincrona (async/await, Promise, fetch). - Eventi. Callback. - Interazione con un database SQLite in applicazioni Node.js. - Web server e il framework Express. - JSON. HTTP API. - Single Page Application. Introduzione a React. - Applicazioni React. Componenti. JSX. - Gestione di form e di tabelle. DOM. - Architettura di un'applicazione complessa. Routing di eventi. Gestione dello stato. - Cenni di autenticazione e autorizzazione di API. - Esempi di applicazioni.
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Il docente fornirà il materiale (slide e link a risorse disponibili online) in una pagina dedicata sul sito https://elite.polito.it e su GitHub (https://github.com/polito-webapp1). Ulteriori risorse sono liberamente disponibili su web e saranno richiamate durante le lezioni (https://developer.mozilla.org, https://react.dev, https://javascript.info/, ecc).
Codice insegnamento 01UDFYG
Challenge
2° anno · Annuale · 8 CFU · 0 file
Crediti liberi (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Crediti liberi (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Crediti liberi (vedi Piano di studi completo )
2° anno · 2° semestre · 6 CFU · 0 file
Crediti liberi (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Crediti liberi (vedi Piano di studi completo )
2° anno · 2° semestre · 6 CFU · 0 file
Crediti liberi (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Crediti liberi (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Digital control technologies and architectures
2° anno · 1° semestre · 6 CFU · ING-INF/04 · 0 file
By the end of this course, students will gain the following knowledge and skill: - Skill in analyzing the dynamics of discrete-time, sampled-data, digital systems by means of models in the discrete-time and/or…
Scheda dell'insegnamento
Obiettivi formativi
By the end of this course, students will gain the following knowledge and skill: - Skill in analyzing the dynamics of discrete-time, sampled-data, digital systems by means of models in the discrete-time and/or frequency domains. - Knowledge of the digital control system requirements. - Knowledge of the basic digital control approaches and of the related design methodologies. - Skill in designing digital controller through basic methodologies. - Knowledge of the main technological and numeric problems in the sampled-data control systems. - Knowledge of advanced digital control methodologies such as adaptive control and model predictive control. - Skill in designing digital control systems by means of adaptive control and model predictive control techniques. - Skill in evaluating control performance by numerical simulation.
Programma
The course is taught in English. The course provides tools for analysis and design of digital control systems. Both standard and advanced digital control design methodologies and architectures are introduced.
- Analysis of discrete time, sampled data and digital systems (15 hr) - Control requirements, structures and architectures of digital control systems (6 hr) - Digital controller design through analytic approaches (15 hr) - Realization of digital controllers (3 hr) - Adaptive control fundamentals (6 hr) - Model Predictive Control fundamentals(15 hr)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
The main reference textbooks are: (1) K.J. Åström, B. Wittenmark, 'Computer-controlled systems', Prentice-Hall, 1997. (2) G.F. Franklin, J.D. Franklin and M. Workman, Digital control of dynamic systems, Addison Wesley,1997. (3) K.J. Åström, B. Wittenmark, 'Adaptive control', Addison-Wesley, 1995. (4) J.B. Rawlings, D.Q. Mayne, Model Predictive Control: Theory and Design, Nob-Hill Publishing, 2009. (5) F. Borrelli, A Bemporad, M. Morari, Predictive Control for Linear and Hybrid systems, Cambridge University Press, 2017. Lecture slides will be available on “Portale della didattica� as well as laboratory practice handouts.
Codice insegnamento 01PDCYG
Energy management for IoT
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Understanding of the energetic issues of IoT devices and systems; - Ability in the analysis of the energy consumption sources; - Ability in the characterization of workloads for the dynamic analysis of IoT systems; -…
Scheda dell'insegnamento
Obiettivi formativi
- Understanding of the energetic issues of IoT devices and systems; - Ability in the analysis of the energy consumption sources; - Ability in the characterization of workloads for the dynamic analysis of IoT systems; - Skills in the design of energy-efficient solutions. - Ability in the quantitative evaluation of the effectiveness of the design solutions; - Understanding of the fundamental features of non-fixed power supply sources such as energy storage devices or power generation sources. - Skills in the design of power supply systems (battery sizing, lifetime of a system).
Programma
This is a course of the “Embedded System� track of the Master in Computer Engineering, held in the 1st term of the 2nd year. This course studies the issues related to the modeling, design and simulation of resource-constrained embedded systems used in the Internet-of-things (IoT) world, where constraints concerns especially energy and computational power. The emphasis of the course will be on the hardware architecture side of the problem using model- and simulation-based approaches.
1. Energy Management [2.5 CFU] o Technological and architectural trends and relative energetic implications o Characterization of the various sources of power consumption and their interaction with other metrics o Dynamic power management (DPM); concepts and implementations: shutdown, voltage/frequency scaling, threshold voltage scaling and their relative quantitative analysis; o Application of dynamic power management to the various sub-components of an embedded system and their relative peculiarities (computational units, memories, peripherals); o Other non-DPM based optimizations: information compression and coding; o Quality/energy tradeoff in IoT systems: approximate and error-resilient computations; solutions for non-computing components (e.g., display and other interfaces) 2. Energy Generation and Storage: [1.5 CFU] o Storage: types of energy storage devices (batteries, fuel cell, photovoltaic cells) and their relation with power management o Generation: energy scavenging solutions and their energetic implications o Conversion: types of converters and their efficiency. o Simulation and design of the energy distribution sub-systems in an embedded device.
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Elaborato scritto prodotto in gruppo;
Exam: Written test; Group essay;
... Expected learning outcomes: - Understanding of the topics covered in the course - Skills in the design of the power supply system of an embedded or mobile device based on its functionalities - Skills in the design of power management solutions and their quantitative evaluation Exam criteria and rules: The exam aims at assessing the skills and knowledge described above by means of a two-part evaluation: The first part consists of a closed-book written test including both numerical exercises and open-answer questions. The time allowed for the test is 2 hours and the maximum score is 24 points. The second part consists of the evaluation of the reports on the lab exercises. Reports have to be delivered by the end of the winter exam session. Each lab will get a different score depending on its quality. The total maximum score for the lab reports is 9 points. The sum of the test score and the lab evaluations will yield the final score (maximum 33 points corresponding to 30 cum laude). Student can also integrate the final evaluation up to a maximum of 6 points with an individual project proposed by the instructor to be delivered by the end of the exam session. The project represents an additional element to assess the student's skills in solving problems that cover the entire context of energy-constrained embedded systems, unlike the more specific cases covered in the labs; moreover, projects allow the instructor to assess the autonomy of the student in building the knowledge base required to carry out the project itself.
Testi di riferimento
There is no official textbook. Class handouts will be made available on the course webpage. Additional material such as papers, links to websites, software and manuals, will be also made available on the course webpage.
Codice insegnamento 01UDGYG
Estimation, filtering, and system identification
2° anno · 2° semestre · 6 CFU · ING-INF/04 · 0 file
The student shall acquire the following knowledge and develop the following abilities: 1) Knowledge of main methods and software tools for building mathematical models (based on physical-laws or in form of difference…
Scheda dell'insegnamento
Obiettivi formativi
The student shall acquire the following knowledge and develop the following abilities: 1) Knowledge of main methods and software tools for building mathematical models (based on physical-laws or in form of difference equations, input-state-output equations or transfer functions) of linear and nonlinear (static or dynamic) systems 2) Knowledge of main methods and software tools for evaluating estimate reliability and model quality 3) Knowledge of basic theoretical properties of main methods for building mathematical models of static or dynamic systems 4) Skill in building mathematical models of linear and nonlinear systems exploiting both physical information and experimental data 5) Skill in evaluating estimate reliability and model quality
Programma
The course is taught in English. The purpose of this course is to provide basic theoretical methodologies and software tools for building mathematical models of linear and nonlinear (static or dynamic) systems from experimental data.
Course topics and relative devoted time: - Introduction to estimation and prediction problems. Main statistical estimation methods (least squares, weighted least-squares, maximum likelihood estimators, Bayesian estimators) and their basic properties (correctness, consistency, efficiency), with evaluation of parametric estimation error (18 hours) - Set-membership estimation theory for different norm assumptions on noise, with evaluation of Estimate Uncertainty Sets and Intervals. Optimal and Central estimates, with evaluation of Feasible Parameter Sets and Parameter Uncertainty Intervals (7 hours) - Introduction to Kalman filtering problem: dynamic one-step and multi-step predictors, dynamic optimal filter, steady-state one-step predictor and filter, nonlinear predictors and filters (11 hours) - Identification of linear dynamic systems from input-output measurements: FIR, ARX, ARMAX and OE models. Predictive approach and models in predictor form. Asymptotic analysis of prediction-error identification methods. Least-squares method: probabilistic analysis, persistence of excitation, practical procedure. Recursive least-squares methods. Model structure selection and validation (whiteness test and residual analysis; FPE, AIC and MDL criteria) (18 hours) - Identification of nonlinear dynamic systems from input-output measurements: statistical and set-membership methods. Neural networks: approximation properties, learning (6 hours)
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Prova pratica di laboratorio; Elaborato scritto individuale;
Exam: Written test; Practical lab skills test; Individual essay;
... The final assessment consists of an individual written test, about three hours long, to be performed in the computer laboratory using the MATLAB software tools, and it is aimed at evaluating the competencies of the student with reference to all the subjects of the course program. The examination aims at verifying the knowledge and the abilities listed as items from 1) to 5) in the "Expected Learning Outcomes" section: the proposed problems not only require to choose and apply the most suitable instruments, but also make indispensable the logical concatenation of the theoretical topics investigated during the course to correctly interpret and understand the numerical results provided by the software tools. The examination is typically made of a model building practice of an unknown system starting from given data and a second exercise on Kalman predictor and/or filter design and simulation for a given linear dynamic system. The candidate has to provide a clear report that includes the reasoning behind the computations, the main numerical results and their possible critical analysis. The maximum score of the exam is 32/30; about 60 per cent of this score depends on the evaluation of the model building practice. The test is closed books; the candidate is not allowed to use textbooks or notes, except the official formulary, directly provided by the teacher during the exam as .pdf file (and downloadable before the exam from the course web page). No other material is allowed, i.e., no personal notes, exercises, portions of MATLAB code or solutions of specific exercises, in complete or partial form, anyway coded.
Testi di riferimento
The following textbooks have been mainly addressed in the organization of the course: - S. Bittanti, "Teoria della Predizione e del Filtraggio", VII edition, Pitagora Editrice Bologna, 2004 (in Italian) - S. Bittanti, "Identificazione dei Modelli e Sistemi Adattativi", VI edition, Pitagora Editrice Bologna, 2004 (in Italian) - T. Kailath, A. H. Sayed, B. Hassibi, "Linear Estimation", Prentice Hall, Upper Saddle River, N.J. (U.S.A.), 2000 - L. Ljung, "System Identification: Theory for the User", II edition, Prentice Hall PTR, Upper Saddle River, N.J. (U.S.A.), 1999 - L. Ljung, "System Identification Toolbox User’s Guide", The MathWorks Inc., Natick, MA (U.S.A.), 1988-1997 On the course web page www.ladispe.polito.it/corsi/MIC/ , teaching material is available about specific issues addressed in the course, like: lecture slides, laboratory exercises with proposed solutions, official formulary.
Codice insegnamento 01RKYYG
Final project work
2° anno · 2° semestre · 30 CFU · 0 file
Scheda dell'insegnamento
Modalità d'esame
Modalita di esame: Accertamento (esame senza voto);
Exam: Check;
... Il voto di Laurea verrà calcolato a partire dalla media degli esami sostenuti dal laureando a cui potranno essere sommati fino ad un massimo di 8 punti addizionali. Punti a disposizione della commissione (max 6): - max 4 punti per la Tesi; - max 2 punti per la Presentazione della Tesi. Punti per la carriera (max 2): - max 1 punto in base al numero di lodi (0.5 punti ogni 5 crediti di esami con lode) - max 1 punto in base alla durata degli studi * 1 punto per una laurea conseguita entro la sessione di laurea di Dicembre del 2° anno di iscrizione; * 0,5 punti per una laurea conseguita entro la sessione di laurea di Marzo del 3° anno di iscrizione; * 0 punti da Luglio del 3° anno in poi [Studenti con un percorso che preveda obbligatoriamente un semestre in più: 3° anno Marzo/Aprile e Luglio - 1 punto 3° anno Ottobre e Novembre/Dicembre - 0,5 punti Studenti con iscrizione iniziale a Marzo senza anticipi: 3° anno Marzo/Aprile e Luglio - 1 punto 3° anno Ottobre e Novembre/Dicembre - 0,5 punti] Qualora il voto finale sia uguale o superiore a 112,51 verrà assegnata la votazione massima di 110L.
Codice insegnamento 02KSDYG
Final project work
2° anno · 2° semestre · 18 CFU · 0 file
Scheda dell'insegnamento
Modalità d'esame
Modalita di esame: Accertamento (esame senza voto);
Exam: Check;
... Il voto di Laurea verrà calcolato a partire dalla media degli esami sostenuti dal laureando a cui potranno essere sommati fino ad un massimo di 8 punti addizionali. Punti a disposizione della commissione (max 6): - max 4 punti per la Tesi; - max 2 punti per la Presentazione della Tesi. Punti per la carriera (max 2): - max 1 punto in base al numero di lodi (0.5 punti ogni 5 crediti di esami con lode) - max 1 punto in base alla durata degli studi * 1 punto per una laurea conseguita entro la sessione di laurea di Dicembre del 2° anno di iscrizione; * 0,5 punti per una laurea conseguita entro la sessione di laurea di Marzo del 3° anno di iscrizione; * 0 punti da Luglio del 3° anno in poi [Studenti con un percorso che preveda obbligatoriamente un semestre in più: 3° anno Marzo/Aprile e Luglio - 1 punto 3° anno Ottobre e Novembre/Dicembre - 0,5 punti Studenti con iscrizione iniziale a Marzo senza anticipi: 3° anno Marzo/Aprile e Luglio - 1 punto 3° anno Ottobre e Novembre/Dicembre - 0,5 punti] Qualora il voto finale sia uguale o superiore a 112,51 verrà assegnata la votazione massima di 110L.
Codice insegnamento 03KSDYG
Future Interfaces
2° anno · 1° semestre · 6 CFU · 0 file
Generative artificial intelligence for graphics and multimedia
2° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
At the end of the course, the students will achieve basic knowledge pertaining: - principles of autoregressive models, VAEs, GANs, normalizing flows and diffusion models; - generative reinforcement learning techniques; -…
Scheda dell'insegnamento
Obiettivi formativi
At the end of the course, the students will achieve basic knowledge pertaining: - principles of autoregressive models, VAEs, GANs, normalizing flows and diffusion models; - generative reinforcement learning techniques; - state-of-the-art tools and frameworks for implementing generative architectures; - applications of generative AI in multimedia, animation, and computer graphics; - methods for combining learning-based generation with simulation and interactivity. The student will be able to: - understand the differences between different generative models and select the optimal models based on application requirements; - train or finetune a deep generative model on a custom dataset for conditional and unconditional synthesis of images and graphics content; - integrate generative models into creative and interactive pipelines; - use reinforcement learning to drive generative processes and simulations.
Programma
Generative AI is rapidly reshaping how interactive digital content is created, making it an essential skill for professionals in information engineering working with graphics, multimedia, and simulations. From realistic digital humans to procedurally generated virtual worlds, generative models are becoming the creative engine behind next-generation media pipelines. The course goal is to provide the student with both practical and theoretical content on generative models and their application in the context of computer graphics, multimedia, and interactive simulations. The course introduces modern deep generative models such as autoregressive networks, GANs, diffusion models, and reinforcement learning applied to generative tasks. The course will provide the student with the ability to understand and implement modern generative models, and to apply them in real-world scenarios such as digital human generation, procedural content creation, and interactive simulations.
The tentative course program will be articulated in in-class theoretical lessons and lab exercises, as reported below. - Autoregressive models (in-class lessons 3h + lab exercises 3h) - Generative Adversarial Networks (GANs) (in-class lessons 3h + lab exercises 3h) - Variational Autoencoders (VAEs), Normalizing flows and latent diffusion models (in-class lessons 12h + lab exercises 3h) - Reinforcement Learning for generative AI (in-class lessons 9h + lab exercises 4h) * Use of RL for generative sequences, behaviors, and animation * ML Agents and interactive environment simulation - Virtual humans and generative character design (in-class lessons 4h + lab exercises 3h) * Generation of faces, bodies, and expressions using VAEs and GANs * Custom digital humans for graphics and simulation - Generative AI for procedural environment creation (in-class lessons 3h + lab exercises 4h) * Procedural generation of 3D layouts, terrains, and textures * Use of generative models for scenario design * Scene representations with neural fields and Gaussian Splatting - Final project (6h)
Modalità d'esame
Modalita di esame: Prova orale obbligatoria; Elaborato progettuale in gruppo;
Exam: Compulsory oral exam; Group project;
... The assessment will consist of a group project (25/30) and an oral exam (5/30), as detailed below. Group project. This part focuses on the design and implementation of a solution to a practical problem in the domain of generative AI for computer graphics and multimedia. Example topics include the generation of 3D environments, digital humans, expressive avatars, textures, or interactive behaviors for agents and NPCs. Students will work in groups (2-3 students) to select or define a problem and then reproduce and adapt a deep learning method to address it effectively. Each group will submit an 8-page PDF report in IEEE paper format, due 10 days before the oral exam. This part of the exam is intended to evaluate the students' ability to implement and experimentally validate a deep learning model, as well as to report and critically discuss the obtained results. The evaluation includes an assessment of the submitted report. Extra points (for honors, "lode") will be awarded to projects that propose original extensions, that tackle particularly challenging problem settings, or that include well-justified and carefully executed experiments. Oral Presentation and Theory questions. This part of the exam aims to verify the equal contribution of all the authors to the project work. The students are asked to present the work done. The content and timing of the presentation will be evaluated, as well as the answers to individual questions. Students are also asked one question about more general theory topics presented in class. Linee guida Up to +4 points can be awarded for the submission of labs/homeworks or for extra activities organized in the context of the Master's Degree, pertaining to the course content.
Testi di riferimento
Slides and supplementary material, including lab exercises and solutions, are provided by the teachers.
Codice insegnamento 01VRWYG
Information systems security
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of the main categories of attack against IT systems. Knowledge and critical evaluation of the main concepts (encryption and digest) and technologies (PKI, firewall, VPN, TLS, S/MIME, e-documents) for IT…
Scheda dell'insegnamento
Obiettivi formativi
Knowledge of the main categories of attack against IT systems. Knowledge and critical evaluation of the main concepts (encryption and digest) and technologies (PKI, firewall, VPN, TLS, S/MIME, e-documents) for IT security. Knowledge and critical evaluation of the security architectures for authentication and access control and ability to tailor them to the protection of IT systems. Ability to analyse the risks of a network application and design a solution for its protection.
Programma
This course deals with security issues in modern networked computer systems, paying special attention to data security and protection of computer networks and networked computer applications, in a closed (Intranet) or open (Internet) environment. The course aims to teach the skills needed to perform both the analysis and the high-level design of the security features of IT components and systems.
(1 CFU) Computer systems (in)security: problems and attacks (sniffing, spoofing, DOS, …), risk analysis. (1 CFU) Basic protection techniques: steganography, cryptography, digest, X.509 certificates, certification authorities (CA) and public-key infrastructures (PKI). (1 CFU) Authentication techniques (password, challenges, Kerberos) and related hardware devices (token and smart-card). (1 CFU) Network security: the IPsec standard to protect IP networks; security of the network configuration and management protocols; firewall and IDS to create protected subnets; virtual private networks (VPN); security of wireless networks. (1 CFU) Application security: e-mail protection (PGP, S/MIME), web security (SSL, TLS) and remote access protection (SSH, TLS), securing web applications. (1 CFU) Secure document workflow and e-commerce; national and international legislation about IT security; digital signature, electronic documents, GDPR (General Data Protection Regulation), forensic analysis.
Modalità d'esame
Modalita di esame: Prova scritta (in aula); Elaborato scritto individuale;
Exam: Written test; Individual essay;
... Written test (2 hours) with up to 10 open questions about the analysis and design of security solutions. The written test is a “closed book� one and the maximum grade is 30/30. Alternatively, the student can develop an individual homework about one of the course's topics, delivering a written report, optionally followed by an oral presentation. The report is evaluated up to 27/30 while the oral presentation is worth up to 3/30, for a total grade up to 30/30.
Testi di riferimento
Handouts of the instructor’s foils and manuals for laboratory coursework. All learning stuff is available at the instructor’s web site. An auxiliary textbook, covering many but not all the topics, is: - W. Stallings, 'Cryptography and Network Security - principles and practice', Prentice-Hall
Codice insegnamento 01TYMYG
Insegnamento a scelta 1 (vedi Piano di studi completo )
2° anno · 1° semestre · 6 CFU · 0 file
Insegnamento a scelta 1 (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Insegnamento a scelta 1 (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Insegnamento a scelta 1 (vedi Piano di studi completo )
2° anno · 1° semestre · 6 CFU · 0 file
Insegnamento a scelta 1 (vedi Piano di studi completo )
2° anno · 1° semestre · 6 CFU · 0 file
Insegnamento a scelta 1 (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Insegnamento a scelta 1 (vedi Piano di studi completo )
2° anno · 1° semestre · 6 CFU · 0 file
Insegnamento a scelta 2 (vedi Piano di studi completo )
2° anno · 2° semestre · 6 CFU · 0 file
Insegnamento a scelta 2 (vedi Piano di studi completo )
2° anno · 2° semestre · 6 CFU · 0 file
Insegnamento a scelta 2 (vedi Piano di studi completo )
2° anno · Annuale · 6 CFU · 0 file
Insegnamento a scelta 2 (vedi Piano di studi completo )
2° anno · 2° semestre · 6 CFU · 0 file
Laboratory of robust identification and control
2° anno · 1° semestre · 6 CFU · ING-INF/04 · 0 file
The aim of the course is to make available to the students the knowledge of the following topics: - Methods and algorithms for building mathematical models of real-world dynamical systems from sets of noise-corrupted…
Scheda dell'insegnamento
Obiettivi formativi
The aim of the course is to make available to the students the knowledge of the following topics: - Methods and algorithms for building mathematical models of real-world dynamical systems from sets of noise-corrupted experimental data focusing in particular on system identification techniques devoted to the quantification of the model uncertainty (set-membership identification). - Methods and algorithms for the data-based feedback control system design. - Software and Hardware tools and methods for rapid prototyping of control systems. Students are expected to develop the following skills: - Ability to derive the mathematical model of a dynamical system from sets of noise-corrupted data collected by performing suitable experiments on a real plant, though the application of modeling and identification tools/algorithms. - Ability to design a feedback control system able to guarantee fulfillment of the prescribed performance requirements on the real plant, through the application of data-based control methods and algorithms. - Ability to practically implement and test on a real plant the designed robust control system by exploiting suitable software/hardware tools for rapid prototyping.
Programma
The aim of this course is to develop students’ ability to apply advanced methods for robust system identification and data-based control of uncertain systems. Proposed system identification and data-based control techiques are applied to a set of carefully selected laboratory processes. Theoretical results in robust system identification and control are introduced/reviewed in the first part of the course. In the second part, students will be offered the opportunity to face a number of problems arising while applying robust system identification and data-based control theory and algorithms to experimental setups and data.
The course will focus on the following main subjects: - Fundamental principles of set-membership identification theory [about 20 hours] - Fundamental principles of data-based controller design [about 20 hours] - Fundamental notions about hardware/software tools for rapid prototyping of control systems (MATLAB real-time toolbox, LAbview, National Instrument PXI) [about 5 hours] - Application of set-membership identification and robust control methods and algorithms to real-world case studies and/or laboratory processes [about 15 hours].
Modalità d'esame
Modalita di esame: Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Computer-based written test in class using POLITO platform;
... The assessment will be performed through a written exam that will take place directly in the lab in order to check students’ ability to apply robust identification and data-based control techniques. Written examination in computer laboratory. The aim is to check the ability of the students to perform system modeling, identification and feedback control design based on a set of input-output data collected on the plant. A detailed written report describing the proposed solution is required. More precisely, the students is required to perform: (i) analysis of the provided input-output data (4 points) (ii) estimation of a plant model by means of system identfication techniques (12 points) (ii) design a data-based controller able to satify a set of performance specifications (12 points) (iii) write a summary report where (i) and (ii) are suitably documented (8 points) The exam will last 3 hours. During the exam, the students are only allowed to use MATLAB software and related user manuals.
Testi di riferimento
The subject of the course is almost entirely based on the research activity of the teacher and collaborators. Therefore, reading materials is made by: - Selected chapters from the book "System Identification: Theory for the User (2nd Edition)" (author: Lennart Ljung; publisher: Prentice Hall, year: 1999)" - Lecture slides and notes provided by the teacher - Scientific publications by the teacher and co-workers - Laboratory practice handouts
Codice insegnamento 01QYEYG
Machine learning for vision and multimedia
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Obiettivo dell'insegnamento è quello di mettere lo studente in condizione di comprendere il funzionamento di applicazioni basate su tecniche di machine learning, con particolare riferimento alle reti neurali profonde,…
Scheda dell'insegnamento
Obiettivi formativi
Obiettivo dell'insegnamento è quello di mettere lo studente in condizione di comprendere il funzionamento di applicazioni basate su tecniche di machine learning, con particolare riferimento alle reti neurali profonde, e di conoscere le principali librerie per la loro implementazione. Inoltre, lo studente imparerà ad analizzare, progettare e valutare diverse tipologie di applicazioni nel campo della visione artificiale e in generale nell’elaborazione di dati complessi, quali ad esempio segnali, audio, video, e nuvole di punti. In particolare, lo studente acquisirà le conoscenze fondamentali relative a: - fondamenti teorici sulle reti neurali artificiali e algoritmi di addestramento (back-propagation); - principali architetture di reti profonde; - librerie hardware e software per l’addestramento di reti neurali; - applicazioni del machine learning e deep learning per la visione artificiale; - applicazioni del machine learning e deep learning per l’elaborazione e la generazione di contenuti multimediali. Lo studente svilupperà quindi abilità collegate alla: - analisi e progettazione di reti neurali profonde, scegliendo l’architettura più appropriate in relazione allo specifico problema; - analisi, test ed integrazione di componenti di machine learning all’interno di applicazioni complesse; - implementazione di una rete neurale profonda con librerie allo stato dell’arte; - impostazione dei principali hyper-parameter ed addestramento di una rete neurale; - risoluzione di problemi pratici legati allo sviluppo di un componente di machine learning.
Programma
Il corso si pone l’obiettivo di fornire allo studente una preparazione pratico-teorica sull’applicazione delle tecniche di machine e deep learning nell’ambito della visione artificiale, dell’elaborazione di informazioni multimediali e nella creazione di contenuti digitali e grafica tridimensionale. Nella parte iniziale del corso, verranno introdotti i fondamenti teorici delle reti neurali profonde. Particolare attenzione verrà data all’analisi delle architetture disponibili allo stato dell’arte per la visione artificiale. Attraverso laboratori e attività progettuali, si acquisirà esperienza pratica con i principali framework di programmazione e con le tecniche di addestramento e ottimizzazione necessarie per implementare soluzioni applicate a casi d’uso rappresentativi per gli orientamenti coinvolti.
Il programma di massima del corso sarà articolato in lezioni teoriche in aula ed esercitazioni in laboratorio, come riportato di seguito. Introduzione al corso Fondamenti di machine learning (lezioni in aula 1 CFU) - Elementi base di probabilità - Reti neurali shallow e deep - Reti feed forward e reti ricorrenti - Statistical machine learning (supervised learning, overfitting, regularization) - Back-propagation e stochastic gradient descent Metodi per l’implementazione di reti profonde (laboratori 1 CFU) - Differenziazione automatica, elementi di programmazione per reti neurali profonde - Addestramento di reti profonde: hyperparameter tuning, data augmentation, batch normalization e transfer learning Applicazioni per la visione artificiale (lezioni 1.5 CFU + laboratori 0.7 CFU) - Panoramica e tassonomia delle principali applicazioni - Reti neurali convoluzionali (definizione e principali architetture) - Reti neurali per object detection e tracking - Reti neurali per la segmentazione di immagini (encoder-decoder) - Analisi del movimento umano: stima della posa ed action recognition Applicazioni per l’elaborazione di dati multimediali (lezioni 0.7 CFU + laboratori 0.3 CFU) - Audio/Speech processing: audio identification/fingerprinting e sound classification - Analisi ed elaborazione video: image/video recognition/labeling Cenni a tecniche di deep learning avanzate (lezioni o seminari, 0.8 CFU) - Rappresentazione e analisi di dati 3D (point cloud e mesh) - Analisi e sintesi di rappresentazioni 3D: applicazioni in ambito grafico e industriale - Modelli generativi e reti GAN
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Libri di testo (da selezionare in base agli strumenti software utilizzati): - I. Goodfellow, Y. Bengio, A. Courville. Deep Learning. MIT press - Aurelie Geron, Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems, O’Reilly - F. Cholet, Deep Learning with Python, Manning Publications, oppure - Eli Stevens, Luca Antiga, and Thomas Viehmann, Deep Learning with Pytorch Ulteriori riferimenti bibliografici specifici potranno essere forniti all'inizio e durante il corso. Altro materiale fornito: - lucidi delle lezioni, dispense di laboratorio, temi d’esame ed altri contenuti sul Portale della Didattica; - videoregistrazione delle lezioni (e dei laboratori, ove possibile) - tutorial disponibili sul web.
Codice insegnamento 01URPYG
Network Dynamics and Learning
2° anno · 1° semestre · 6 CFU · MAT/05 · 0 file
Knowledge of: - Elements of algebraic and topological graph theory with special emphasis on connectivity, centrality, and network flows. - Elements of non-negative matrix theory (stochastic and substochastic matrices),…
Scheda dell'insegnamento
Obiettivi formativi
Knowledge of: - Elements of algebraic and topological graph theory with special emphasis on connectivity, centrality, and network flows. - Elements of non-negative matrix theory (stochastic and substochastic matrices), their spectral properties, and their use in the mathematical modelling of deterministic and stochastic network dynamics. - Elements of Markov processes over networks (random walks, epidemic spreading, randomized algorithms) - Convex optimization problems over large scale network (flow optimization, inference, learning). Distributed algorithms. - Elements of game theory and learning dynamics. Mechanism design. - Basics of probabilistic graphical models: Bayesan networks and random Markov fields. - Basics of models of random graphs and their fundamental properties Ability to: - Construct and compare mathematical models for interconnected systems arising in information, social, economic, biological, and infrastructure networks. - Apply basics notions of algebraic and topological graph theory, Markov processes, game theory, and dynamical systems in order to analyze networks and interconnected dynamical systems. - Critically identify and evaluate network properties such as centrality, connectivity, emerging behaviors, and scalability. - Design and propose cooperative distributed algorithms on networks, to evaluate their asymptotics, speed of convergence, and complexity, and to implement them on modern platforms for numerical simulation.
Programma
This course aims at presenting the mathematical foundations of networks with special emphasis on dynamical models both of deterministic and stochastic nature, as well to illustrate their main engineering applications. The course covers the basics of: graph theory, non-negative matrices, Markov probabilistic models, game theory, distributed optimization. It introduces the student to several applications: distributed optimization and inference algorithms, opinion dynamics, epidemics models, learning in games.
1. Topological and algebraic graph theory - Basics of graph theory. Directed acyclic graphs, undirected graphs: properties and examples. Combinatorial properties of trees and bipartite graphs. Eulerian circuits. Connected components and condensation graph. Cliques, independent sets, coverings, matchings, and colorings. - Matrices associated to a graph: weight, adjacency, stochastic, and Laplacian matrices. Perron-Frobenius theorem and spectral properties of nonnegative matrices. - Network centrality (degree, eigenvector, Bonacich, Page-rank, Katz). - Network connectivity and flows: Menger’s theorem, max-flow/min-cut theorem. - Applications: constraints satisfaction problems (e.g., scheduling, allocation), social and economic networks, resilience of infrastructure networks. 2. Distributed averaging and linear flow dynamics - Distributed averaging and compartmental systems for closed networks. Convergence theorems, role of centrality. - Dynamics with exogeneous inputs. Properties of sub-stochastic matrices, convergence results. - Applications: distributed estimation and computation on a network, opinion dynamics, wisdom of crowds, social influence, flow diffusion. 3. Distributed optimization - Optimization of convex separable functions with linear coupling constraints. - Network flow optimization: duality, Lagrange multipliers as marginal costs. - Electrical networks: effective resistance, Rayleigh’s variational principle. - Network flow optimization: system optimum traffic assignment, Wardrop equilibrium, price of anarchy, marginal cost mechanisms. -Applications: energy and transportation systems. 4. Markov chains - Discrete- and continuous-time Markov chains: stationary distributions, convergence, ergodic theorem, reversibility, hitting and return times, absorbing probabilities. - Notable examples: birth-and-death chains, random walks on graphs. - Mixing time, conductance, rapid mixing, coupling, - Applications: Markov Chain Monte Carlo, Metropolis-Hastings algorithm, Gibbs sampling. 5. Contagion and diffusion over networks - Pairwise interacting models: general definition and properties. - Epidemic models (SI, SIS, SIR), voter model, evolutionary dynamics. - Computation of the absorbing times and absorbing probabilities for simple topologies (complete, line, star). - Detection and control policies. - Applications: diffusion of innovations, evolutionary competition, spread of rumors and fake news, network security. 6. Game theory and learning - Non-cooperative games in strategic form, best response, dominant strategies, Nash equilibria. mixed strategies, correlated strategies. - Classical examples. Symmetric games. Potential and congestion games. - Network games. Examples: coordination and anti-coordination, graph coloring, quadratic games. - Learning: best response dynamics, log-linear learning, fictitious play. - Mechanism design. - Applications: behavior of social and economic networks, pricing mechanisms in markets, algorithms for combinatorial optimization. 7. Probabilistic graphical models - Bayesian networks - Markov random fields. Ising model and Glauber dynamics. Boltzmann machines. - Distributed inference: computation of marginal and posterior distributions, likelihood maximization, 8. Random graphs - Branching processes. - Erdos-Renyi random graph: phase transitions for connectivity and for the existence of a giant component. - Random graphs with preassigned degree distribution (configuration model). - Preferential attachment and small world models.
Modalità d'esame
Modalita di esame: Prova orale obbligatoria; Elaborato progettuale individuale;
Exam: Compulsory oral exam; Individual project;
... Exam: compulsory oral exam; individual essay; The assessment consists of two parts: 1. Three homework assignments (HW1, HW2, HW3) that will be assigned to the students during the course HW1 and HW2 consist of exercises that are aimed at assessing the students’ achieved learning level of the theoretical aspects and their ability to select relevant principles to solve the proposed problems. In addition to an exercise part of the same nature as in HW1 and HW2, the HW3 assignment includes a small project that involves numerical simulations as well as deductive and analytical reasonings and is aimed at testing the mathematical modeling abilities of the students and their ability to present their analyses and results in a proper format of a written report such that a technically qualified person can follow and obtain similar findings. Students will have two weeks each to submit their HW1 and HW2 reports, and three weeks to submit their HW3 report. 2. An oral test consisting of two parts: (2a) a discussion of the submitted HW1, HW2, and HW3 reports, aimed at testing the depth of the students’ understanding of the subjects and their ability to explain, defend, reflect, critically evaluate, and possibly improve their work; (2b) a presentation of a topic studied in the course covering both theoretical aspects and possibly their applications. The topic is chosen by the examination committee and communicated to the student, who has 30 minutes to prepare her/his presentation: during this time the student has access to books, notes, and other learning material. This part of the oral test is aimed at evaluating the breadth and depth of the knowledge acquired by the student, and her/his ability to effectively present and communicate it to a technically qualified audience. Grading: the maximum grade for HW1, HW2, and HW3, upon the discussion detailed at point (2a) above, is of 4,4, and 6 points, respectively. If HW1, HW2, and HW3 are not submitted by their deadline, the maximum grades above are lowered to 3, 3, and 5 points, respectively. The maximum grade for part (2b) of the oral test is 18 points. The final course grade is then obtained by summing up the final grades in HW1, HW2, HW3, and of part (2b) of the oral test: if such sum is less than or equal to 30, the final grade coincides with it, if the sum is strictly larger than 30 the final grade is 30 cum laude.
Testi di riferimento
Part of the course topics are covered by lecture notes that will be made available to the students through the Portale della Didattica. Other material will be suggested in class and made avalaible thorugh the Portale della Didattica.
Codice insegnamento 02TXLYG
Robot Learning
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of the main components of robotics applications, from sensing, control and actuation, to high level action decision and planning; - Knowledge on how to formalize an autonomous learning problem, from the…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of the main components of robotics applications, from sensing, control and actuation, to high level action decision and planning; - Knowledge on how to formalize an autonomous learning problem, from the mathematical foundations of the optimization objectives, to the implementation of specific usecases; - Knowledge of the main characteristics of modern reinforcement learning techniques applied to autonomous robots; - Basic knowledge on how to deal with research questions, how to organize a project and prepare a scientific conference report.
Programma
This course will provide foundational knowledge on robot systems and their control, with the purpose of developing robots with an embodied intelligence, able to learn how to perceive and interact with the surrounding world. Lectures will focus on theoretical and practical knowledge on machine learning solutions for autonomous systems.
The course is organized in three main modules, plus one additional module for labs. Robotics survival kit (approx. 15 h) - Foundations of sensing & actuation - Briefly on kinematics and dynamics of autonomous systems - motor control - introduction to ROS robot programming - Gaussian Filters: Kalman filter, Extended Kalman filter - Non-Parametric Filters: Particle filter Robot learning (approx. 25 h) - Reinforcement Learning Policy Gradients - Reinforcement Learning Off-policy RL - Reinforcement Learning Model-based RL - Sim2Real - Imitation Learning (optional) Applications (approx. 5 h) - Robot manipulation - Visual Servoing - Locomotion - Autonomous vehicles Labs. (15 h) - Manipulator control - State estimate - RL - Sim-to-sim policy transfer - Personal extensions (students’ contribution)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Slides and supplementary material provided by the teachers. Textbooks: - Robotics: Modelling, Planning and Control, Bruno Siciliano, Lorenzo Sciavicco, Luigi Villani, Giuseppe Oriolo - Probabilistic Robotics, Sebastian Thrun, Wolfram Burgard, Dieter Fox. - Reinforcement Learning: An Introduction, Richard S. Sutton, Andrew G. Barto Extra readings: - AI at the Edge: Solving Real-World Problems with Embedded Machine Learning, Daniel Situnayake, Jenny Plunkett - Planning Algorithms, Steven LaValle - Springer Handbook of Robotics, Bruno Siciliano, Oussama Khatib - Applied NonLinear Control, Jean-Jacques Slotine, Weiping Li Useful links: https://docs.ufpr.br/~danielsantos/ProbabilisticRobotics.pdf http://www.probabilistic-robotics.org/ http://people.disim.univaq.it/~costanzo.manes/EDU_stuff/Robotics_Modelling,%20Planning%20and%20Control_Sciavicco_extract.pdf https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf https://bair.berkeley.edu/blog/2019/12/12/mbpo/ http://www.ioe.nchu.edu.tw/Pic/CourseItem/4497_APPLIED%20NONLINEAR%20CONTROL_slotine_Part1.pdf
Codice insegnamento 01HFNYG
Robotic systems
2° anno · 1° semestre · 8 CFU · ING-INF/04 · 0 file
The student must acquire and develop the following knowledge and skills: • Knowledge of the various types of industrial robots and of the characteristics of their kinematic chain (arm and wrist). • Knowledge of…
Scheda dell'insegnamento
Obiettivi formativi
The student must acquire and develop the following knowledge and skills: • Knowledge of the various types of industrial robots and of the characteristics of their kinematic chain (arm and wrist). • Knowledge of three-dimensional geometry, with reference to rigid roto-translation transformations; knowledge of the various methods for representing the configuration of a rigid body; ability to solve simple roto-translation exercises. • Ability to analyze a kinematic chain, to set proper reference frames and solve the forward and inverse position kinematics problems. • Knowledge of the forward and inverse differential kinematics and of the Jacobian of a manipulator; ability to apply these concepts to kinematic chains having different complexities. • Knowledge of the kineto-static relations for a manipulator; ability to apply these concepts to kinematic chains having different complexities. • Knowledge of the dynamic equations of a manipulator, of the physical meaning of their terms, and of their structural characteristics for control purposes. Ability to develop the dynamic model of simple kinematic chains. • Knowledge of the main trajectory planning approaches for manipulators, both in the joint and in the operational space. • Knowledge of the main control schemes for manipulators: joint independent and inverse dynamics approaches. Ability to analyze such schemes and evaluate their properties, pros and cons. Basic knowledge of advanced control schemes. • Basic knowledge of mobile and service robotics topics, with a particular focus on their autonomous navigation capability. • Knowledge of the main locomotion structures for wheeled robots. • Knowledge of the main motion planning approaches for mobile robots, also in presence of obstacles; basic knowledge of localization and mapping approaches. • Knowledge of computer vision elements for robotics. • Basic knowledge of the ROS (Robot Operating System) framework.
Programma
The purpose of this course is to provide basics of modelling, design, planning, and control of industrial robotic systems, as well as an introduction to the fundamental characteristics and concepts of mobile service robots. The most common architectures for robot control are presented. Mobile robots are treated by considering locomotion structures, planning and autonomy issues. Basic concepts about sensors and computer vision for robotics are also provided, as well as about the ROS (Robot Operating System) framework. The knowledge and skills acquired in the course constitute a fundamental professional and cultural background for employment opportunities in the field of intelligent industrial control and automation systems.
Course topics and their weights in hours: • Introduction to robotics; kinematic chains, degrees of freedom and redundancy, types of robotic manipulators (arms and wrists); 3D geometric transformations, rotations and translations, orientation of a rigid body and its representations (12 hrs) • Denavit-Hartenberg convention, position and differential kinematic of a manipulator, Jacobian, statics, kineto-static relations (10 hrs) • Dynamic model of a manipulator and its properties; modeling of the motor-gear-link chain (6 hrs) • Trajectory planning for a manipulator (6 hrs) • Control schemes for rigid manipulators in the joint space and in the operational one, interaction control; sensor for robotics (16 hrs) • Mobile robotics, locomotion structures of wheeled robots, motion planning and autonomous navigation (10 hrs) • Planning in presence of obstacles, introduction to computer vision for robotics and cameras (11 hts) • Introduction to the ROS (Robot Operating System) framework (9 hrs)
Modalità d'esame
Modalita di esame: Prova scritta (in aula);
Exam: Written test;
... The final assessment consists of an individual written test, two hours long; there is no oral exam. The final exam is aimed at assessing the student's preparation in all the topics included in the course program, in order to verify the achievement of the knowledge and skills listed in the "Expected learning outcomes" section, both in the fields of industrial robotics (manipulator structure, kinematics, dynamics, trajectory planning, control) and mobile robotics (kinematic constraints and models, motion planning, autonomous navigation, computer vision for robotics and ROS framework). In particular, the exam includes four multiple-choice questions (theory and exercises), one extended exercise, and three open-ended questions on more strictly theoretical topics. Examples of exam tests are available just from the beginning of the course; additional ones can be provided and solved during the course. During the exam, the student is not allowed to use textbooks or notes, except the official formulary of this course, prepared by the teacher, whose pdf file is available on the teaching portal. Each student must print and bring his/her own personal copy of the formulary. Only purely mathematical personal formularies are possibly allowed in addition. No other material is allowed, i.e., no personal notes, exercises or solutions of specific exercises, in complete or partial form, coded in any way, books, tablets, phones, etc. Students found with forbidden items or caught communicating or attempting to communicate with each other are automatically considered as flunked. The exam grade, expressed out of thirtieths, is calculated from the weighted average of the scores assigned to the questions. For multiple-choice questions, each incorrect answer carries a penalty equal to 25% of the question's weight. The total score for the assignment is 33, of which one-third is assigned to the multiple-choice questions. The weightings for the extended exercise and the three open-ended questions are specified during the exam. Honors are awarded for scores of 32 or higher, without rounding.
Testi di riferimento
Textbooks: B. Siciliano, L. Villani, G. Oriolo, A. De Luca, “Foundations of Robotics�, Springer, 2025 L. Joseph, “Robot Operating System (ROS) for Absolute Beginners�, Apress, New York, 2018 All the teaching material (lectures slides, exercises with solution) used by the teacher in class is made available on the teaching portal.
Codice insegnamento 01WMTYG
Sicurezza dei sistemi informativi
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Il corso si propone di fornire allo studente: • la consapevolezza delle maggiori problematiche di sicurezza e delle sfide più difficili in uno scenario sempre più interconnesso e globalizzato; • la conoscenza delle…
Scheda dell'insegnamento
Obiettivi formativi
Il corso si propone di fornire allo studente: • la consapevolezza delle maggiori problematiche di sicurezza e delle sfide più difficili in uno scenario sempre più interconnesso e globalizzato; • la conoscenza delle principali categorie di attacco contro i sistemi informativi e di vulnerabilità esposte dai sistemi informatici; • la conoscenza dei requisiti di sicurezza, delle proprietà astratte ed i principi fondamentali della sicurezza informatica, l’abilità di riconoscerli, interpretarli e contestualizzarli a livello aziendale; • la comprensione delle metodologie di analisi del rischio informatico, la capacità di identificare minacce e stimare i rischi che incombono sugli asset nei sistemi informativi e, conseguentemente, valutare e scegliere le mitigazioni più appropriate tra quelle offerte dai controlli di sicurezza; • la comprensione dei principali metodi della crittografia e delle sue applicazioni, la valutazione critica dei componenti fondamentali usati ai fini della sicurezza informatica (es. cifratura, firme digitali), e l’abilità di scegliere algoritmi, implementazioni, modalità di uso e parametri appropriati; • la conoscenza e la capacità di classificare ed analizzare i sistemi di autenticazione, di controllo degli accessi e le infrastrutture a chiave pubblica (PKI); • la comprensione del funzionamento e la capacità di classificare le principali tecnologie di difesa preventiva (firewall, VPN, TLS, S/MIME, documenti elettronici), oltre all'abilità di usarle per la protezione dei sistemi informativi; • le conoscenze fondamentali sulle attività , sulle best practice e sulla gestione aziendale della sicurezza informatica e sulle normative vigenti a livello italiano ed europeo.
Programma
Il corso ha l'obiettivo di preparare lo studente ad affrontare le problematiche relative alla sicurezza dei moderni e sempre più complessi sistemi informativi aziendali. Lo studente acquisirà conoscenze su sistemi e protocolli di sicurezza, metodi per la protezione dei dati, delle reti di computer e delle applicazioni, sia in ambiente chiuso (Intranet) che aperto (Internet). Inoltre acquisirà abilità di analisi e progettazione delle misure di protezione di componenti e sistemi informatici. Queste conoscenze e abilità concorrono a formare le competenze indispensabili per lavorare in ambito informatico a livello aziendale.
(1 CFU) Debolezze dei sistemi informativi: problemi e tipologie di attacco (sniffing, spoofing, DDoS, ...), metodologie di analisi dei rischi, minacce, mitigazioni. (1 CFU) Tecniche di protezione di base: steganografia, crittografia, infrastrutture a chiave pubblica e certificati X.509. (1 CFU) tecniche di autenticazione (password, challenge, biometria, multi-fattore,…), dispositivi hardware (token, smart-card). (1 CFU) Sicurezza delle reti: lo standard IPsec per la protezione delle reti IP; virtual private networks (VPN); sicurezza dei principali protocolli per la gestione e la configurazione delle reti IP; firewall e IDS/IPS; sicurezza delle reti wireless. (1 CFU) Sicurezza applicativa: protezione delle e-mail (S/MIME), sicurezza del web (TLS) e degli accessi remoti (SSH), sicurezza delle applicazioni web e del commercio elettronico. (1 CFU) Gestione e legislazione: legislazione nazionale e internazionale relativa alla sicurezza informatica; GDPR (General Data Protection Regulation); firme digitali e documenti elettronici, analisi forense, aspetti di gestione della sicurezza in ambito aziendale.
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Agli studenti verranno forniti gli stampati delle presentazioni mostrate durante le lezioni e le esercitazioni, e i testi, i manuali e i contenuti necessari allo svolgimento dei laboratori. Tutto il materiale del corso sarà reso accessibile tramite il portale della didattica. Il libro di testo suggerito (che copre molti ma non tutti gli argomenti del corso) è: W. Stallings, 'Sicurezza dei computer e delle reti, Pearson Ulteriori riferimenti bibliografici (libri, standard, …) per l’approfondimento di argomenti specifici verranno forniti durante le lezioni.
Codice insegnamento 01UDUYG
Software Engineering II
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
The students will acquire basic knowledge regarding: - software development methods, focusing on agile methods - software quality assurance and process improvement, in particular static analysis and technical debt…
Scheda dell'insegnamento
Obiettivi formativi
The students will acquire basic knowledge regarding: - software development methods, focusing on agile methods - software quality assurance and process improvement, in particular static analysis and technical debt assessment - software evolution dynamics A key component of software development (as it happens in industrial context) is team work. Key skills to be developed include: - coordination of individuals and their interactions, - planning and monitoring the project evolution, - manage stakeholders' collaboration, - set up self-organizing teams.
Programma
The knowledge that students acquired through the fundamental and optional courses mainly concern technologies that can be used to build software systems (e.g. programming languages, web technologies, security, computer architectures) and basic techniques and tools to support development (e.g. deployment, version control, requirements, design). In order to effectively employ such knowledge and skills, it is fundamental to organize the development activities and manage them, curate the quality of the software products, and account for the inevitable characteristic of software: its persistent change. This course has the goal of expanding the knowledge and skills of students in the software engineering, especially concerning: - management of the software development process - organization of development activities - quality assurance and process improvement - software evolution
- Software Process Management (3 cfu) - Agile methods - Software SCRUM - Software Quality Assurance (1.5 cfu) - Quality methods - Technical Debt - Static Analysis - Software Maintenance and Evolution (1.5 cfu) - Principles of Sw Evolution - Maintenance tools and techniques
Modalità d'esame
Modalita di esame: Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Group project; Computer-based written test in class using POLITO platform;
... The 80% of the assessment will be based on a team project work that will let the student apply the techniques illustrated during the course and acquire the relative skills. The remaining 20% of the grade will be based on a final oral exam that will focus on the experience of the student during the project work and on the knowledge acquired during the course.
Testi di riferimento
The main contents of the course are described in detail in the following books: - R.Jeffries "The Nature of Software Development" The Pragmatic Programmers - K.Schwaber, M.Beedle. "Agile Software Development with Scrum", Prentice-Hall, 2001 - M.Cohn. "Succeeding with Agile", Addison-Wesley, 2010. - C.Sims, H.L.Johnson. “The Elements of Scrum� DYMAXICON, 2011. - K.Schwaber and J.Sutherland "The Scrum Guide" (http://www.scrumguides.org) - D.Spinellis. Effective Debugging Addison-Wesley, 2016. - P.Grubb, A.Takang "Software Maintenance: concepts and practice" World Scientific Publishing, 2003 Additional materials will be provided by the teacher during the course, including articles on scientific journal to represent the most advanced state of the art in the field.
Codice insegnamento 01SQNYG
Software Networking
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Conoscenza degli algoritmi di forwarding e di routing unicast. - Conoscenza dei protocolli di routing intra- ed inter-dominio. - Conoscenza delle principali tecnologie di data-plane in un moderno apparato di rete (ASIC…
Scheda dell'insegnamento
Obiettivi formativi
- Conoscenza degli algoritmi di forwarding e di routing unicast. - Conoscenza dei protocolli di routing intra- ed inter-dominio. - Conoscenza delle principali tecnologie di data-plane in un moderno apparato di rete (ASIC custom, OpenFlow, P4). - Conoscenza dell'architettura del networking di Linux e dei principali strumenti di configurazione dei corrispondenti componenti kernel. - Conoscenza dei concetti di Software-Defined Networks e Network Functions Virtualization.
Programma
Insegnamento facoltativo per la Laurea Magistrale in Ingegneria Informatica, collocato al I PD del II anno. Il corso si focalizza sulle tematiche software relativamente al mondo del networking, che rappresenta attualmente un campo in forte evoluzione. Il corso si concentrerà inizialmente sul piano di controllo delle reti, presentando gli algoritmi e i protocolli relativi (es. protocolli di routing), quindi si affronteranno gli aspetti software relativamente al piano dati (forwarding, filtering, dataplane programmabili). Verranno inoltre introdotti i concetti di Software-Defined Networks, Network Functions Virtualization, e verrà approfondita l’architettura del networking del sistema operativo Linux (es., netfilter, iptables, eBPF), diventato ormai lo stato di fatto dei server in un datacenter. Infine verranno presentati alcuni esempi di utilizzo dei concetti precedenti in orchestratori di datacenter, quali OpenStack e Kubernetes. Verranno infine effettuate alcune esercitazioni di laboratorio a supporto dell’apprendimento in aula.
- Data plane vs Control Plane e architettura degli apparati di rete commerciali (0.4 cfu) - Algoritmi di routing unicast (Distance Vector, Path Vector, Link State); routing gerarchico (0.6 cfu) - Principali protocolli di routing intra-dominio (cenni di RIP, IGRP, EIGRP; OSPF) (0.6 cfu) - Protocolli di routing inter-dominio (BGP) (0.4 cfu) - Tecnologie hardware programmabili per dataplane: OpenFlow, P4 (0.6 cfu) - Tecnologie software per dataplane: software di accelerazione quali OpenDataPlane, DPDK, eBPF/Iovisor, eXpress Data Path; packet filtering (1.2 cfu) - Linux networking architecture, NetFilter (0.4 cfu) - Software Defined Networks (0.2 cfu) - Network Functions Virtualization (0.2 cfu) - Network automation: strumenti software principali (es., Ansible, Chef, Puppet) e protocolli (Yang, OpenConfig, Netconf, Restconf) (0.2 cfu) - Orchestratori per ambienti telco e per datacenter; OpenStack, Kubernetes (0.2 cfu) - Esercitazioni di laboratorio (1.2 cfu)
Modalità d'esame
Modalita di esame: Prova orale facoltativa; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Optional oral exam; Computer-based written test in class using POLITO platform;
... Risultati di apprendimento attesi Comprensione degli argomenti trattati a lezione e abilità nella soluzione di esercizi focalizzati sui singoli argomenti. Capacità di affrontare esercizi di progettazione più complessi che richiedono l’utilizzo combinato di più tecnologie tra quelle presentate a lezione. Criteri, regole e procedure per l'esame L'esame finale è scritto, comprendente quattro esercizi e/o domande con risposta aperta, ognuna avente punteggio pari a 5 punti, più 10 domande con risposta a scelta multipla. I primi concorrono al voto finale per 5/30 ciascuno, le seconde con 1/30 ciascuna. Gli studenti che totalizzano nella prova scritta un punteggio pari ad almeno 26 punti avranno diritto ad un orale comprendente una domanda che concorrerà al voto finale per 3/30. L'orale potrà essere richiesto per libera decisione del docente nel caso in cui sia opportuno un approfondimento, oppure nel caso in vi sia un numero ridotto di studenti prenotati all'esame. Il tempo assegnato per l'esame è al massimo di 2 ore. La prova scritta non prevede l’utilizzo di alcun materiale di supporto (libri, appunti, etc.).
Testi di riferimento
Non esiste un testo di riferimento che copra interamente gli argomenti trattati. I testi consigliati sono i seguenti: - J. Doyle, J. Carroll, Routing TCP/IP, Volume 1 (2nd Edition), Cisco Press, 2005, ISBN 978-1587052026 - J. Doyle, J. Carroll, Routing TCP/IP, Volume 2, Cisco Press, 2001, ISBN 978-1578700899 - G. Vargese, Network Algorithmics, Morgan Kaufmann Publishers, 2005, ISBN 978-0120884773 Sono disponibili copie dei lucidi utilizzati nelle lezioni, esempi di scritti di esame ed esercizi, e i manuali per le esercitazioni di laboratorio. Tutto il materiale didattico è scaricabile da un sito web o attraverso il portale.
Codice insegnamento 01SQPYG
System-on-chip architecture
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of the main non-idealities of digital systems caused by technology scaling; - Ability in the analysis of the non-idealities sources and skills in the design of solutions for compensating such non-idealities;…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of the main non-idealities of digital systems caused by technology scaling; - Ability in the analysis of the non-idealities sources and skills in the design of solutions for compensating such non-idealities; - Ability in the quantitative evaluation of the effectiveness of the design solutions; - Knowledge of the main issues related to temperature, aging and process variation in modern embedded systems; - Skills in the design of an embedded system; - Knowledge of virtual platforms for the hardware-software co-simulation of an embedded system and the evaluation of the controlling software.
Programma
The course of “Embedded System� section of the Master in Computer Engineering, positioned at the 1st term of the 2nd year. This course describes and analyzes the main architectural and technological solutions for Embedded Systems automated design, with particular emphasis on multicore systems, hardware-software co-simulations platforms with reference to specific design metrics like temperature, process variability and aging.
- Introduction to Embedded Systems [2h] - Architectural templates (single and multicore platforms) [4h] - Embedded Systems implementation: Single core and multicore [2h] - Overview of ARM and PowerPC processors: Application domains [2h] - Embedded Buses: Parallel and Serial Busses. Most common Standards (AMBA, CoreConnect, STBus, I2C, SPI) [4h] - Embedded Memories and Emerging Technologies Memories [4h] - Overview of Real-Time Systems and RTOS [2h] - Multicore Architectures [4h] - Sensors and actuators [2h] - Wireless Sensor Networks [6h] - Design metrics & Optimization Techniques [8h] o Temperature o Process variability o Aging and reliability o Energy consumption
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
There is no official textbook. Class handouts and additional material (papers, links to websites, software and manuals) will be made available on the course webpage.
Codice insegnamento 01QYHYG
Tesi (vedi Piano di studi completo )
2° anno · Annuale · 30 CFU · 0 file
Testing and fault tolerance
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of the concepts of testing and dependability. - Knowledge of the main techniques used for testing a digital circuit. - Knowledge of the main techniques used for testing an embedded system. - Knowledge of the…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of the concepts of testing and dependability. - Knowledge of the main techniques used for testing a digital circuit. - Knowledge of the main techniques used for testing an embedded system. - Knowledge of the basic techniques used for hardening an electronic products with respect to possible faults. - Knowledge of the main techniques for estimating the reliability of an electronic system. - Capability of developing the test plan for a digital device or embedded system - Capability to use the main software tools for testing an embedded system: fault simulators, automatic test pattern generators, automatic scan chain inserters. - Knowledge of the concept of Built-In Self-Test (BIST) and Boundary Scan (BS). - Knowledge of the concept of Failure Mode and Effect Analysis (FMEA). - Capability of designing BIST hardware modules.
Programma
The usage of electronic systems in applications where failures may results in critical consequences (e.g., in space, aircrafts, automobiles, trains, biomedical equipment) requires ensuring that the probability of a failure does not overcome some maximum threshold. This can be achieved by identifying and removing defective products (test) and by making products resilient to faults (fault tolerance). The course introduces methods and techniques for the design of reliable electronic circuits and systems, with special emphasis on the test performed to identify products affected by hardware faults, and on the solutions to harden electronic products with respect to faults and to the techniques to estimate the probability that possible faults may force them to produce failures.
1. Introduction to test and dependability (1 credit) a. Dependability: definition, attributes b. Fault models (temporary and transient): stuck-at, bridge, open, delay, SEU, SET c. Test of ICs, boards and systems d. Defect level: definition and evaluation e. ATEs 2. Techniques and tools for generating test stimuli for combinational and sequential modules (1 credit) a. Fault simulation b. Automatic Test Pattern Generation 3. Techniques and tools for testing specific modules (1 credit) a. Memory test b. Processor test 4. Design for Testability techniques (1 credit) a. Scan b. BIST c. Boundary Scan d. System on Chip test (IEEE 1500 and 1687) 5. Board test (0.5 credit) a. Main steps in PCB test b. IEEE 1149.1 6. Basics in fault tolerant system design (1.5 credits) a. Basic fault tolerant design solutions (hw redundancy, information redundancy, time redundancy) b. Reliability evaluation (FMEA, radiation experiments, fault injection)
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
Students may benefit of the following textbook: M. Bushnell, V. Agrawal: Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits Kluwer Academic Publisher, 2000 Slides will be provided to students registered to the course through the Student Teaching Portal, as well as any additional non-copyrighted information material that will be used in the course.
Codice insegnamento 01RKZYG
Tirocinio
2° anno · Annuale · 12 CFU · 0 file
Le informazioni dettagliate sull’insegnamento tirocinio sono consultabili sulla GUIDA STUDENTI, sezione TIROCINIO, dell’anno accademico in corso.
Scheda dell'insegnamento
Programma
Le informazioni dettagliate sull’insegnamento tirocinio sono consultabili sulla GUIDA STUDENTI, sezione TIROCINIO, dell’anno accademico in corso.
Modalità d'esame
Modalita di esame: Accertamento (esame senza voto);
Exam: Check;
Codice insegnamento 10CWHYG
Virtual and augmented reality
2° anno · 1° semestre · 6 CFU · ING-INF/05 · 0 file
At the end of the course, students are expected to be able to: - Explain the fundamental principles of Virtual Reality, Augmented Reality, Mixed Reality, and Extended Reality, including their conceptual differences,…
Scheda dell'insegnamento
Obiettivi formativi
At the end of the course, students are expected to be able to: - Explain the fundamental principles of Virtual Reality, Augmented Reality, Mixed Reality, and Extended Reality, including their conceptual differences, technological requirements, and application contexts. - Describe the main hardware components of immersive systems. - Explain the software architectures and development workflows for real-time interactive 3D applications. - Identify the main paradigms of human-computer interaction in immersive environments, including navigation, selection, manipulation, multimodal interaction, and user interface design. - Discuss the opportunities and limitations of VR/AR technologies in relevant application domains. - Design real-time 3D environments for immersive VR/AR applications, taking into account interaction requirements, performance constraints, and user experience. - Implement basic VR/AR interaction techniques using appropriate development environments, libraries, and device-specific tools. - Select suitable VR/AR technologies and interaction techniques based on the requirements of a given application context. - Work effectively in a small team to design, develop, test, and document an immersive application. - Present and discuss the design choices, technical implementation, and user experience of a VR/AR project using appropriate technical terminology. - Use technical documentation, software libraries, and development tools to independently extend the knowledge acquired during the course.
Programma
The course introduces the theoretical, methodological, and practical foundations of eXtended Reality, including Virtual Reality, Augmented Reality, and Mixed Reality. XR systems are presented as both enabling technologies and user-centered interactive experiences, where display technologies, tracking, input and output devices, software architectures, real-time 3D graphics, and interaction techniques contribute to immersion, presence, embodiment, usability, comfort, and overall user experience. The course provides students with the conceptual and technical tools needed to understand how real and synthetic environments can be integrated, perceived, and interacted with in immersive applications. Particular attention is given to the relationship between technological choices, perceptual mechanisms, and interaction design, enabling students to critically analyze and develop XR applications for various professional contexts, including technical training, cultural heritage, healthcare, industrial design, manufacturing, simulation, and education. The course supports the educational objectives of the degree program by providing students with interdisciplinary skills at the intersection of computer graphics, human-computer interaction, 3D content production, immersive experience design in different professional contexts, and user-centered evaluation.
The course covers the following topics. The credit distribution is indicative and may be adjusted according to the development of practical activities. Foundations of Virtual Reality and Extended Reality – definitions, taxonomy of VR/AR/MR/XR systems, immersion, presence, perception, real-time rendering requirements, and application scenarios. 1 credit Input and tracking devices – motion tracking, hand tracking, eye tracking, controllers, body tracking, sensors, calibration, spatial mapping, and interaction data acquisition. 1 credit Output devices and immersive feedback – head-mounted displays, projection-based systems, stereoscopy, field of view, latency, haptics, spatial audio, and multisensory feedback. 1 credit Hardware and software architectures for immersive applications – real-time 3D engines, rendering loop, scene management, XR SDKs, deployment pipelines, device integration, and performance constraints. 0.5 credits Augmented Reality and Mixed Reality – registration between real and virtual content, tracking and mapping, spatial anchors, occlusion, handheld AR, head-worn AR, and interaction with mixed environments. 1 credit Human-computer interaction in immersive environments – navigation, selection, manipulation, multimodal interaction, interaction metaphors, user interface design, cybersickness, usability, and user experience evaluation. 1 credit Applications and case studies of VR/AR technologies – analysis of immersive applications in training, education, cultural heritage, healthcare, retail, manufacturing, simulation, and industrial design; discussion of project-oriented examples. 0.5 credits
Modalità d'esame
Modalita di esame: Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Group project; Computer-based written test in class using POLITO platform;
... The exam is designed to assess both the theoretical knowledge acquired during the course and the ability to apply this knowledge to the design and development of an immersive VR/AR application. The assessment includes the following mandatory components: 1. Computer-based written test – Maximum score: 10/30. The written test is conducted in class using the PoliTo platform. It evaluates the student’s understanding of the theoretical and methodological topics covered in the course, including VR/AR/MR principles, devices, software architectures, interaction techniques, and application scenarios. The test may include multiple-choice, short-answer, and open questions. Duration: approximately 60 minutes. The use of teaching materials, notes, manuals, internet access, or personal devices is not permitted unless explicitly authorized by the instructor. 2. Group project – Maximum score: 18/30. Students develop a VR/AR application in small groups, typically of 2 to 5 students. The project must demonstrate the practical application of the concepts and techniques introduced during the course. The project is evaluated based on: - coherence between the application scenario and the proposed immersive solution; - quality of the 3D environment and real-time content; - correctness and robustness of the technical implementation; - quality of the interaction design; - usability and user experience considerations; - integration of input/output devices or XR development tools; - clarity of the documentation and reproducibility of the submitted material. 3. Additional project-related activities – Maximum 6 bonus points - Individual exercises: maximum 2 points. These exercises consolidate the theoretical and practical topics discussed during the course. They may include short assignments, technical exercises, or individual tasks related to XR concepts, interaction techniques, real-time 3D development, or usability analysis. - Project documentation: maximum 1 point. Documentation is evaluated for clarity, completeness, technical accuracy, description of the design and development process, explanation of implementation choices, and reproducibility of the submitted material. - Intermediate project review: maximum 3 points. The intermediate review assesses project progress during the course, the quality of the proposed concept, the consistency of the development plan, the ability to identify technical and interaction design issues, and the effective use of feedback received. The final score is the sum of the points awarded for the written test, the group project, and the additional project-related activities (for a total of 34 points). To pass the exam, students must achieve a final grade of at least 18/30 and must complete both the individual written test and the group project. Laude may be awarded to students who achieve 31/30 and demonstrate outstanding performance across all assessment components.
Testi di riferimento
Supporting materials - Course slides and lecture notes provided through the teaching portal. - Laboratory instructions, project guidelines and example materials provided during the course. - Official documentation for the software tools and device SDKs used in the practical activities. Additional reference textbooks - Jason Jerald, The VR Book: Human-Centered Design for Virtual Reality, ACM Books / Morgan & Claypool, 2015. - Dieter Schmalstieg and Tobias Höllerer, Augmented Reality: Principles and Practice, Addison-Wesley, 2016. - Joseph J. LaViola Jr., Ernst Kruijff, Ryan P. McMahan, Doug A. Bowman and Ivan Poupyrev, 3D User Interfaces: Theory and Practice, 2nd edition, Addison-Wesley, 2017. - William R. Sherman and Alan B. Craig, Understanding Virtual Reality: Interface, Application, and Design, 2nd edition, Morgan Kaufmann, 2018.
Codice insegnamento 01VRXYG
Web Applications I
2° anno · 2° semestre · 6 CFU · ING-INF/05 · 0 file
Knowledge of the main aspects of HTML, CSS, Javascript - Ability to use a Javascript at an advanced level for creating web applications at the front-end level. - Basic knowledge of a framework for creating web…
Scheda dell'insegnamento
Obiettivi formativi
- Knowledge of the main aspects of HTML, CSS, Javascript - Ability to use a Javascript at an advanced level for creating web applications at the front-end level. - Basic knowledge of a framework for creating web applications in Javascript - Ability to create complete web applications, also in the “single page application� modality, by using a simple back-end server. - Knowledge of the main issues regarding robustness, security, interoperability, usability and performance of the studied applications, and their applicable best practices.
Programma
The course, taught in English in the second semester of the first year of the Master of Science in Computer Engineering, aims at presenting the main techniques for creating distributed web applications, focusing in particular on the front-end programming, using the Javascript language and a client-side programming framework. The main programming paradigms useful for the needs of the front-end of a modern web application will be considered, both by analyzing their impact in term of native Javascript code, and by studying the approaches provided by a dominant framework. The topics presentation will enable the student to gain the basic skill to manage the main design choices within the mentioned topics.
- Recall of web architectures, HTML5, CSS. - Complex layouts, CSS frameworks. Notions of web design. Usability. Accessibility. - Javascript as a language. Variables and objects. Execution in the browser and in nodejs. - Handling forms and tables. DOM. Events. Callbacks. Closures. - Ajax. JSON. REST. Asynchronous programming (async/await, Promise, Fetch). - Introduction to Firebase. CRUD operations. Subscription. - Single Page Applications. Reactive programming. Introduction to ReactJS. - React applications. Web Components. JSX. - Architecture of a complex application. Event routing. State management. - Deployment and publication of applications. - Application examples.
Modalità d'esame
E' possibile sostenere l?esame in anticipo rispetto all?acquisizione della frequenza
Testi di riferimento
The teacher will provide the material (copy of slides and links to on-line resources) on the website of the course. Many useful resources are also freely available on the web (https://developer.mozilla.org, https://reactjs.org/, https://javascript.info/, etc). Some suggested textbooks for personal in-depth study: - M. Haverbeke, Eloquent Javascript (https://eloquentjavascript.net/) - A. Accomazzo, A. Lerner, N. Murray, C. Allsopp, D. Guttman, T. McGinnis, Fullstack React, 2019
Codice insegnamento 01TXYYG