Politecnico di Torino | |||||||||||||||||
Anno Accademico 2017/18 | |||||||||||||||||
03NMVMQ Programmazione e calcolo scientifico |
|||||||||||||||||
Corso di Laurea in Matematica Per L'Ingegneria - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
Presentazione
Il corso si propone di approfondire le conoscenze su linguaggi e tecniche di programmazione, algoritmi e struttre dati utili per il calcolo scientifico.
|
Risultati di apprendimento attesi
Il corso si propone di far acquisire agli studenti:
- una conoscenza approfondita di programmazione C/C++ e Matlab, - una conoscenza di base delle problematiche connesse all'utilizzo del calcolatore per eseguire simulazioni accurate ed efficienti, - una conoscenza dei principali algoritmi e delle fondamentali strutture di dati dell'informatica. |
Prerequisiti / Conoscenze pregresse
Buona conoscenza di un linguaggio di programmazione e del funzionamento del calcolatore.
Buona conoscenza degli argomenti dei corsi di base di analisi matematica e geometria. |
Programma
- Approfondimenti su aritmetica del calcolatore e problematiche connesse al calcolo scientifico: affidabilita` delle soluzioni numeriche.
- Richiami su condizionamento di un problema e stabilita` di un algoritmo numerico; analisi degli effetti dell'aritmetica di macchina sull'affidabilita` delle simulazioni numeriche: esempi di situazioni problematiche facilmente riscontrabili nelle simulazioni. - Introduzione alla programmazione avanzata di algoritmi numerici in Matlab. - Richiami di programmazione in C per il calcolo scientifico: richiami su puntatori, allocazione statica e dinamica e analisi approfondita in termini di efficienza delle diverse scelte nell'ambito del calcolo scientifico. - Introduzione alla programmazione ad oggetti nel linguaggio C++, librerie utili per la risoluzione numerica di vari problemi. - Complessità computazionale, ricorsione, strutture dati (liste, code, pile, alberi, grafi) - Algoritmi elementari (ordinamento, attraversamento di alberi e grafi, ricerca di percorsi tra nodi nei grafi) e loro implementazione in C/C++; analisi dell'applicabilita` di questi paradigmi in diversi contesti di simulazione e approssimazione delle soluzioni di problemi ingegneristici. - Breve introduzione alla parallelizzazione con MPI, OpenMP e Matlab. - Introduzione alla risoluzione di problemi numerici con Python e descrizione delle librerie numeriche piu` diffuse basate su Python. - Principali librerie numeriche di pubblico dominio per la risoluzione di sistemi lineari in C, C++ e Python. |
Organizzazione dell'insegnamento
L’insegnamento consta di lezioni, esercitazioni in aula ed esercitazioni presso un laboratorio informatico.
|
Criteri, regole e procedure per l'esame
L'esame consiste in uno scritto con esercizi e domande teoriche che dura di norma 2 ore, un piccolo progetto consistente nello sviluppo di un codice per risolvere al calcolatore semplici problemi assegnati dal docente, un orale con domande di tipo teorico, discussione dello scritto e discussione del progetto.
Durante l’esame scritto non è consentito l’uso di materiali didattici, calcolatrice e cellulari. |
Orario delle lezioni |
Statistiche superamento esami |
|