Circuiti e Algoritmi per il Calcolo Distribuito, già Distributed Computing for Circuits and Systems (Laurea Magistrale in Ingegneria Elettronica, Ingegneria delle Comunicazioni)


AVVISOtutti gli studenti interessati al corso per il presente A.A. 2018/2019 sono pregati di inviarmi una e-mail indicando nell'OGGETTO "Distributed Computing Registrazione Corso" e nel testo i seguenti dati: nome, cognome e numero di matricola, corso di laura e anno di iscrizione.

AVVISO: "Circuiti e Algoritmi per il Calcolo Distribuito" è un corso di nuova attivazione che andrà in aula per la prima volta a settembre 2019 (1° semestre) per gli studenti immatricolati nel 2018/2019 e iscritti nel 2019/2020 al 2° anno delle Lauree Magistrali in Ingegneria Elettronica e Ingegneria delle Comunicazioni
Il corso va a sostituire il precedente "Distributed Computing for Circuits and Systems", essenzialmente per il titolo che diventa in italiano, il quale andrà ancora in aula in lingua italiana ma col nome in inglese a settembre 2018 (1° semestre) per gli studenti immatricolati nel 2017/2018 e iscritti nel 2018/2019 al 2° anno della Laurea Magistrale in Ingegneria Elettronica. 
Il corso è comunque aperto anche ad altri studenti della Facoltà e dell'Ateneo che sono interessati alle tematiche trattate, in quanto NON esistono propedeuticità sostanziali.

  • Obiettivi del modulo e capacità acquisite dallo studente. Lo scenario delle tecnologie ICT sta rapidamente evolvendo verso sistemi in cui i dispositivi tecnologici, di diversi tipi e grandezze, costituiscono parte integrante dell’ambiente in cui sono immersi. Scopo dell’insegnamento è fornire le nozioni di base riguardanti le problematiche teoriche, tecniche e pratiche di progettazione e realizzazione di circuiti e algoritmi per la soluzione di problemi avanzati di trattamento dell’informazione, basati sul learning statistico e data-driven, in sistemi di calcolo paralleli e distribuiti. Saranno in tal senso approfondite le tematiche riguardanti le tecnologie basate su sistemi di calcolo GPU e multicore, reti di sensori e attuatori, smart devices, wearable computers, etc. Attraverso un’intensa e sistematica attività pratica e di laboratorio, nel corso saranno considerate le metodologie relative alla progettazione e alla realizzazione di architetture di calcolo parallele e di sistemi di agenti distribuiti, mediante circuiti e algoritmi basati in particolare su intelligenza computazionale, Deep Learning e calcolo quantistico, focalizzando l’attenzione sulla necessità di rendere efficienti tali sistemi sia dal punto di vista della robustezza numerica sia della scalabilità circuitale/computazionale, nonché della fault tolerance e della self-organization.
  • Prerequisiti. Fondamenti di Elettrotecnica, Elettronica, Informatica e Telecomunicazioni.
  • Risultati di apprendimento attesi. Capacità di analisi e soluzione delle problematiche relative a progettazione, realizzazione e test di architetture di calcolo e modelli computazionali, con particolare riferimento allo sviluppo in linguaggio Matlab/Python, per la realizzazione di sistemi di apprendimento in ambienti paralleli e distribuiti.
  • Programma A.A. 2017/2018 (provvisorio)
    • Richiami di circuiti e algoritmi per il trattamento dell’informazione. Generalità sul trattamento dei segnali analogici e digitali, segnali aleatori multi-dimensionali, concetti di teoria della stima, metodo della massima verosimiglianza, stima del minimo errore quadratico medio, metodo della massima probabilità a posteriori, elementi di teoria dell’informazione, metodi di ottimizzazione. Rappresentazione di circuiti digitali mediante grafi e schemi a blocchi, strutture di rete fondamentali per circuiti FIR, IIR e a traliccio. Serie temporali e dinamiche caotiche, circuiti caotici.
    • Introduzione alle tecnologie di calcolo parallele e distribuite. Architetture di calcolo parallelo GPU e multiprocessore nei sistemi a “grana fine”. Virtualizzazione delle risorse in ambienti di calcolo distribuiti, cloud computing. Architetture di comunicazione (WSN, BAN, PAN). Sensori e attuatori: problemi di low-power e low-energy; energy harvesting e self-powering; affidabilità (fault tolerance, fault detection, self-organization). Smart devices per il calcolo distribuito: data loggers e sistemi embedded; smart sensors su dispositivi mobili (smartphones, Tablet PC, etc.); wearable computers.
    • Deep Learning e circuiti quantistici. Sistemi adattivi, stima del gradiente, metodi iterativi, apprendimento Hebbiano, reti di Kohonen e auto-organizzanti, reti dinamiche ricorrenti, reti di Hopfield. Apprendimento e regolarizzazione. Soluzione di problemi di ottimizzazione vincolata multi-obiettivo. Deep Learning. Circuiti analogici e digitali per l’implementazione di reti neurali e per il Deep Learning. Introduzione al calcolo quantistico. Quantum gate e quantum gate array. Algoritmi quantistici per l’ottimizzazione e il trattamento dell’informazione (QFFT, Grover, Schor), Quantum Machine Learning, Quantum Neural Networks. Studi di caso: quantizzazione, classificazione, predizione, approssimazione, interpolazione e filtraggio di dati meccatronici, biologici, energetici, economici e ambientali.
    • Apprendimento su architetture parallele e distribuite. Tecnologie e tecniche di acquisizione dei dati, multiple source data, data pre-processing, circuiti e algoritmi per l’apprendimento scalabile e decentralizzato (consensus learning, ADMM, etc.), Deep Learning distribuito, apprendimento semi-supervisionato distribuito, Machine Learning per l’IoT/IoE, apprendimento multi-agente cooperativo e competitivo,  energy efficient distributed learning, distributed pattern recognition. 
    • Studi di caso in laboratorio. Realizzazione di architetture di filtraggio classiche; implementazione di reti neurali e neurofuzzy; ottimizzazione mediante algoritmi evolutivi; architetture per il Deep Learning; utilizzo di nodi di calcolo e reti di sensori distribuiti basati su tecnologia Raspberry/Arduino/Galileo; programmazione su architetture GPU NVIDIA e multicore Intel.
  • Materiale didattico
    • Appunti e dispense forniti dal docente.
    • Materiale integrativo (lucidi del corso, articoli) disponibili sul sito web.
    • Letture facoltative suggerite:
      • H.T. Kung, R. Sproull, G. Steele, VLSI Systems and Computations, Springer.
      • Principe, N.R. Euliano, W.C. Lefebvre, Neural and Adaptive Systems: Fundamentals Through Simulations, J. Wiley & Sons.
      • B Kosko, Neural Networks and Fuzzy Systems, Prentice-Hall.
      • C. M. Bishop, Neural Network for Pattern Recognition, Oxford University Press.
      • L. Deng, Deep Learning: Methods and Applications, Microsoft Research.
      • E. Ott, Chaos in Dynamical Systems, Cambridge University Press.
      • M. Sipser, Introduction to the Theory of Computation, 3rd Edition.
      • M. Barr, A.J. Massa, Programming embedded systems: with C and GNU development tools, O'Reilly.
      • G. Strang, Linear Algebra and Its Applications, 4th Edition.
                [slide 1-2]           [slide 3-5]                [slide 6-8]
                [slide 9]   [slide 10-11]
        

AVVISOper ogni tipo di comunicazione legata al corso, gli interessati sono pregati di inviarmi una e-mail indicando nell'OGGETTO "Distributed Computing" e nel testo i seguenti dati: nome, cognome e numero di matricola. Cercherò di rispondere al più presto.