ELABORAZIONE AUTOMATICA DEI DATI
Secondo Semestre
Frequenza Non obbligatoria
- 6 CFU
- 45 ore
- ITALIANO
- Sede di Trieste
- Obbligatoria
- Orale
- SSD SECS-S/06, INF/01
- Caratterizzante
Structured into the following modules:
Gli obiettivi principali del corso sono i seguenti. Il corso intende fornire alcuni strumenti per un approccio sistematico e scientifico alla programmazione in un linguaggio di calcolo numerico. Durante il corso, per mezzo di alcuni esempi, verrà illustrato come risolvere un modello matematico per mezzo di un tale linguaggio. Durante le lezioni verrà impiegato il linguaggio di programmazione Matlab. Verranno illustrate anche le basi della programmazione ad oggetti in Matlab. CONOSCENZA E CAPACITA'' DI COMPRENSIONE Conoscere i fondamenti di un linguaggio di programmazione orientato al calcolo numerico. Conoscere le principali regole per scrivere un appropriato programma di calcolo numerico e comprenderne l’uso. Capire come affrontare un modello matematico di un problema per poter trovarne la soluzione in un ambiente di calcolo numerico. CONOSCENZA E CAPACITA'' DI COMPRENSIONE APPLICATE Essere capaci di analizzare un semplice problema, trovarne un modello matematico appropriato, costruirne un algoritmo risolutivo e tradurlo in modo efficiente nel linguaggio di programmazione. Essere capaci di impiegare buone regole di programmazione. AUTONOMIA DI GIUDIZIO Analizzare un semplice problema e valutare in autonomia un appropriato modello per la sua risoluzione. Tradurre autonomamente l'analisi effettuata in un appropriato programma. ABILITA'' COMUNICATIVE Saper spiegare le scelte effettuate ed i passi seguiti per risolvere un problema per mezzo della programmazione nel linguaggio di calcolo impiegato. CAPACITA'' DI APPRENDERE Saper impiegare le conoscenze acquisite come base per l'apprendimento di ulteriori argomenti, anche più complessi, sull’uso di modelli matematici e sulla loro risoluzione in un linguaggio di calcolo numerico.
Alcuni esempi presentati nel corso saranno in relazione con argomenti di matematica e statistica illustrati nei corsi di base. E'' richiesta inoltre la conoscenza di concetti di base di programmazione e sugli algoritmi. Il corso di Elementi di Informatica è propedeutico.
a) Definizione di algoritmo. Definizione della complessità media e nel caso peggiore. Classi di complessità e relazione tra complessità e incremento della velocità di esecuzione di un algoritmo. Ricerca sequenziale e calcolo della complessità media e nel caso peggiore. Ricerca dei due elementi più piccoli di un vettore e calcolo della complessità di alcuni algoritmi. Ricerca sequenziale in un vettore ordinato e calcolo delle complessità media e nel caso peggiore. Algoritmo di ricerca binaria e sua complessità. Sort per selezione e calcolo della complessità. Merge di vettori e calcolo della sua complessità nel caso peggiore. Ricorsione. b) Introduzione a Matlab L’ambiente Matlab. Identificatori ed espressioni. Operatori matematici. Arrays. Operazioni vettoriali e puntuali. Stringhe ed array di caratteri. Operatori ed espressioni relazionali. Tipo logico ed espressioni logiche. Casting tra tipi. Principali funzioni numeriche. c) Array in Matlab Array in Matlab. Array casuali. Principali funzioni ed operazioni per la creazione e manipolazione di array. Array come argomenti di funzioni. Operazioni numeriche per array e rispettivi operatori. Array logici. Indicizzazione logica. Principali funzioni logiche. Operatori logici, cortocircuitati e non. Prodotto scalare e funzione dot. Uso di tic e toc e di timeit per valutare la velocità di esecuzione di una funzione. d) Programmazione in Matlab Matlab come interprete. Script Matlab. Funzioni input, fprintf, sprintf, display e disp. Funzioni save e load. Definizione e chiamata di funzioni. Argomenti e variabili locali delle funzioni. Ambito e durata delle variabili locali. Uso di funzioni in modalità comando. Variabili globali e persistenti. Copy on write. Istruzioni condizionali. Principali funzioni di tipo “is” in Matlab. Istruzioni di ciclo. Vettorizzazione. Funzioni di base per leggere e salvare immagini. Tipologie di errori. Tracing, debugger e profiler. e) Array di caratteri e stringhe in Matlab Array di caratteri e stringhe in Matlab: uso e principali differenze. Principali funzioni di manipolazione e conversione delle stringhe e degli array di caratteri. f) Array di celle, variabili strutturate, array categorici e tabelle Array di celle, variabili strutturate, array categorici, tabelle: definizione, modalità di creazione e loro impiego. Comma-separated list. Principali funzioni di manipolazione e conversione tra diverse strutture. g) File in Matlab Uso di save e load per salvare e caricare variabili del workspace. Lettura e scrittura di file di testo. h) Funzioni avanzate in Matlab Numero variabile di argomenti in input ed in output. Funzioni nidificate e loro caratteristiche; funzioni anonime. Riferimenti a funzioni. Passaggio di funzioni come argomenti di funzioni (function functions). Funzioni func2str e str2func, fplot, feval. Timeit e il suo uso con funzioni anonime. i) Ricorsione in Matlab Definizione di ricorsione. Confronto tra algoritmi ricorsivi ed iterativi. I numeri di Fibonacci in modalità iterativa e ricorsiva. l) Grafici e fitting di curve Principali funzioni di disegno di grafici. Funzioni per il fitting di curve. m) Programmazione ad oggetti in Matlab Concetti di base sulla programmazione ad oggetti in Matlab.
Testi principali: Matlab - A Practical Introduction to Programming and Problem Solving - Sixth Edition Stormy Attaway Butterworth-Heinemann ISBN 9780323917506 eBook ISBN: 9780323986113 Per la parte sugli algoritmi: dispensa del docente Altra documentazione utile: Computer Programming with Matlab J. Michael Fitzpatrick and Ákos Lédeczi ISBN 9780615751139 Documentazione disponibile sul sito della MathWorks: https://it.mathworks.com/ Nella pagina Moodle del corso saranno messi a disposizione gli esempi presentati durante le lezioni ed altro materiale.
Lezioni teoriche alternate con esercitazioni pratiche di applicazione delle nozioni illustrate in laboratorio informatico. Il corso ha una pagina web con materiale didattico, esempi ed esercizi su moodle2.units.it.
Il programma dettagliato sarà reso disponibile nel sito Moodle di ateneo.
Gli argomenti richiesti per sostenere l'esame comprendono tutto il programma del corso. Agli studenti si richiede di avere compreso i contenuti del corso e non solo di averli esclusivamente memorizzati, nonché di saperli impiegare.
L'esame avrà forma orale e pratica dinanzi ad un PC. Per verificare il livello di comprensione potrà essere chiesta l'applicazione delle nozioni presentate nel corso a qualche problema di calcolo o in generale di programmazione, di risolvere qualche esercizio e di applicare i concetti teorici ad alcuni esempi, discutendo le proprie scelte.