94001 - LABORATORIO DI INGEGNERIA DELL'INFORMAZIONE A

Anno Accademico 2021/2022

  • Docente: Andrea Giorgetti
  • Crediti formativi: 9
  • SSD: ING-INF/03
  • Lingua di insegnamento: Italiano
  • Moduli: Andrea Giorgetti (Modulo 1) Sergio Callegari (Modulo 2) Enrico Paolini (Modulo 3)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2) Convenzionale - Lezioni in presenza (Modulo 3)
  • Campus: Cesena
  • Corso: Laurea in Ingegneria elettronica per l'energia e l'informazione (cod. 8767)

Conoscenze e abilità da conseguire

Al termine del corso lo studente è in grado di simulare al calcolatore e caratterizzare sperimentalmente sistemi per l'elaborazione e la trasmissione dell'informazione. In particolare, lo studente è in grado di: - elaborare segnali audio e immagini; - applicare elementi di statistica inferenziale e Big Data Analytics a dati sperimentali (web, internet-of-things, sensori); - implementare tecniche Monte Carlo per la simulazione di sistemi; - utilizzare elementi di calcolo numerico per risolvere problemi nell'ambito dell'ingegneria dell'informazione; - sviluppare e programmare applicazioni per dispositivi mobili quali smartphone e tablet; - analizzare e modellare il comportamento di circuiti e sistemi elettronici mediante strumenti software di simulazione circuitale; - utilizzare software scientifico per modellare sistemi elettronici ad alto livello e come supporto alle attività di progetto. Le esercitazioni pratiche in laboratorio rappresentano una parte consistente del corso.

Contenuti

Modulo 1

Questo modulo introduce lo studente allo sviluppo di progetti completi utilizzando la l’ambiente per il calcolo numerico Matlab. La prima fase del modulo consiste nell'approfondimento di diversi aspetti del linguaggio di programmazione Matlab, con particolare enfasi alle problematiche legate alla rappresentazione dell'informazione e manipolazione dei dati, alla complessità, alla gestione dinamica della memoria. Successivamente, lo studente svolge esperienze guidate di laboratorio inerenti lo sviluppo di algoritmi in Matlab. Alcuni esempi di esperienze guidate:

- Implementazione di filtri FIR, filtraggio di segnali audio ed elaborazione di segnali provenienti da sensori;

- Analisi spettrale di segnali mediante FFT;

- Generazione di variabili aleatorie;

- Simulazione di un sistema di trasmissione in presenza di rumore Gaussiano con metodo Monte Carlo.

Modulo 2

Il modulo introduce lo studente alla simulazione circuitale e all’uso di ambienti di programmazione per modeling e simulazione. Viene discussa la differenza tra ambienti basati su un approccio di tipo causale o signal-flow e ambienti che usano un approccio di tipo physical-network e vengono presentati esempi basati su Spice, Simulink e Simulink+Simscape. Successivamente viene approfondito l’uso di Spice con esempi avanzati. Nella seconda parte del modulo viene introdotto il linguaggio di programmazione Python in un ottica orientata al calcolo numerico e alla programmazione scientifica. Viene illustrato l’uso del cosiddetto SciPy-stack, ovvero le librerie di supporto per il calcolo numerico e matriciale (NumPy), per il calcolo scientifico (SciPy), per la visualizzazione (Matplotlib) e per il calcolo simbolico (SymPy). Viene inoltre mostrato come tale ambiente possa in applicazioni appropriate rappresentare un’alternativa a codice aperto ad ambienti di calcolo numerico consolidati come Matlab. In maniera consistente con la natura del corso, il materiale viene presentato facendo ampio uso di esperienze guidate di laboratorio.

Modulo 3

- Introduzione alla programmazione di dispositivi mobili;

- Programmazione «ibrida» di app (in contrapposizione alla programmazione nativa e alle web-app);

- Elementi di HTML5, Javascript, CSS come strumenti per lo sviluppo di app;
- Utilizzo di software open-source (Apache Cordova) per lo sviluppo di app mediante le tecnologie web;

- Utilizzo di plugin che consentono di sfruttare le funzionalità del dispositivo mobile;
- Sviluppo di applicazioni in laboratorio.

Testi/Bibliografia

Il materiale fornito dal docente, sotto forma di file che raccolgono le diapositive usate per la didattica e di dispense e i testi delle esercitazioni di laboratorio (resi disponibili online in formato elettronico sul sito istituzionale Insegnamenti Online) rappresentano uno strumento sufficiente per lo svolgimento del modulo.

Metodi didattici

Il corso consiste in lezioni frontali, per introdurre argomenti specifici e approfondirne gli aspetti più operativi, ed esercitazioni pratiche in laboratorio. Particolare enfasi è data alle esercitazioni, che sono essenziali per poter acquisire una comprensione completa anche degli aspetti pratici relativi alla programmazione di applicazioni per dispositivi mobili. Allo scopo di motivare lo studente e stimolarne l'interesse, ciascuna esercitazione è strutturata in modo da conseguire determinati obiettivi pratici che sono anche funzionali allo svolgimento di quelle successive.

 

In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/] in modalità e-learning.

Modalità di verifica e valutazione dell'apprendimento

Modulo 1

L'apprendimento viene verificato mediante l'assegnazione, da parte del docente, di un progetto che ciascun gruppo di studenti dovrà sviluppare ed implementare in Matlab. Ciascun gruppo di studenti dovrà produrre una relazione, nella quale devono essere chiariti l'obiettivo del progetto, la soluzione identificata, una descrizione dell'algoritmo sviluppato, tutti i file sorgenti sviluppati, e il contributo individuale di ciascun componente del gruppo nell'ambito del progetto. A valle della consegna della relazione al docente, ciascun gruppo verrà chiamato a presentare il proprio progetto, rispondendo a domande inerenti il progetto sviluppato e gli argomenti trattati durante le lezioni frontali. La valutazione del modulo è espressa il trentesimi.

Modulo 2

L’apprendimento viene verificato mediante la predisposizione da parte degli studenti di una relazione in cui si illustra un’attività svolta autonomamente utilizzando le competenze acquisite. La relazione dovrà chiarire obiettivi e risultati e contenere i codici sorgenti e/o i file di Spice utilizzati per affrontare il problema. Il lavoro può essere svolto a gruppi a patto che siano chiaramente distribuite le responsabilità e che diverse sezioni della relazione siano chiaramente attribuibili ai diversi partecipanti. Ci sarà inoltre un breve colloquio orale in cui sarà discusso il lavoro fatto e gli argomenti trattati durante le lezioni frontali.

Modulo 3

Una prova scritta e pratica. La prova scritta consiste nel rispondere ad una serie di domande a risposta multipla sulle tecnologie web; la prova pratica consiste nella scrittura di codice per applicazioni mobili. Le esercitazioni di laboratorio sono fondamentali per poter superare la verifica finale con successo, grazie alle capacità di "problem solving" affinate durante le sessioni pratiche.

Valutazione complessiva

Il voto complessivo dell'esame è ottenuto come media aritmetica dei voti conseguiti nei tre moduli.

Strumenti a supporto della didattica

Materiale didattico, dispense, slides, esercizi ed esempi di codice disponibili in rete. Il modulo 1 prevede l'impiego di Matlab. Il modulo 2 prevede l'uso di un simulator circuitale di tipo Spice (viene suggerito LTSpice XVII), di Simulink con il pacchetto Simscape, e di un ambiente di programmazione Python 3 con lo stack SciPy (viene suggerita la distribuzione Anaconda). Il modulo 3 prevede l’uso del software Apache Cordova per lo sviluppo di applicazioni mobili.

Orario di ricevimento

Consulta il sito web di Andrea Giorgetti

Consulta il sito web di Sergio Callegari

Consulta il sito web di Enrico Paolini

SDGs

Istruzione di qualità Imprese innovazione e infrastrutture

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.