78092 - LABORATORIO DI INGEGNERIA DELL'INFORMAZIONE

Anno Accademico 2023/2024

  • 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 (cod. 5834)

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;

- Analisi spettrale di segnali;

- Generazione di variabili aleatorie.

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. Durante il modulo viene anche 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

Questo modulo introduce lo studente allo sviluppo di progetti utilizzando il linguaggio di programmazione C. La prima fase del modulo consiste nell'approfondimento di diversi aspetti del linguaggio C, con particolare enfasi alle problematiche legate alla rappresentazione dell'informazione e manipolazione dei dati, alla complessità, alla gestione dinamica della memoria. Successivamente, lo studente esegue numerose esperienze di laboratorio inerenti lo sviluppo di progetti completi in linguaggio C.

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.

Modalità di verifica e valutazione dell'apprendimento

Modulo 1

Una prova scritta e pratica. La prova scritta consiste nel rispondere ad una serie di domande a risposta multipla; la prova pratica consiste nella scrittura di codice Matlab per l’elaborazione di segnali e generazione di variabili aleatorie. Le esercitazioni di laboratorio sono fondamentali per poter superare la verifica finale con successo.

Modulo 2

L’apprendimento viene verificato mediante la valutazione di brevi relazioni da consegnare al termine di ciascuna attività svolta in laboratorio durante il modulo. Inoltre alla fine del modulo viene chiesto agli studenti di svolgere autonomamente un’attività sulla base delle competenze acquisite e di documentarla. In quest’ultma relazione gli studenti sono chiamati a chiarire obiettivi e risultati ed essa dovrà 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à infine 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 sugli argomenti svolti a lezione; la prova pratica consiste nella scrittura di codice C. 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 compilatore C.

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

Energia pulita e accessibile Imprese innovazione e infrastrutture Città e comunità sostenibili

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