PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

Elenco notifiche



Programmazione e calcolo scientifico

03NMVMQ

A.A. 2023/24

Lingua dell'insegnamento

Italiano

Corsi di studio

Corso di Laurea in Matematica Per L'Ingegneria - Torino

Organizzazione dell'insegnamento
Didattica Ore
Lezioni 40
Esercitazioni in aula 20
Esercitazioni in laboratorio 20
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Berrone Stefano Professore Ordinario MATH-05/A 30 0 0 0 10
Collaboratori
Espandi

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05
MAT/08
3
5
A - Di base
B - Caratterizzanti
Formazione informatica
Formazione modellistico-applicativa
2023/24
L'insegnamento si propone di approfondire le conoscenze su linguaggi e tecniche di programmazione, algoritmi e strutture dati utili per il calcolo scientifico. L'insegnamento si propone di far acquisire agli studenti: - una conoscenza approfondita di programmazione C++ e Python; - una conoscenza 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; - una conoscenza delle problematiche legate alla geometria computazionale applicata alla computer grafica, all'integrazione numerica e alla risoluzione di equazioni differenziali.
The course aims to deepen the knowledge on languages and programming techniques, algorithms and data structures useful for scientific computing. The course aims to make students acquire: - an in-depth knowledge of C++ and Python programming; - a knowledge of the problems related to the use of the computer to perform accurate and efficient simulations; - a knowledge of the main algorithms and fundamental data structures of information technology; - a knowledge of the main problems related to computational geometry for computer graphic, numerical integration and differential equations.
I risultati di apprendimento attesi consistono in: • una conoscenza approfondita di programmazione C++ e Python; • una conoscenza delle problematiche connesse all'utilizzo del calcolatore per eseguire simulazioni accurate ed efficienti (complessità computazionale degli algoritmi, stabilità, condizionamento della formulazione del problema); • una conoscenza dei principali algoritmi e delle fondamentali strutture di dati dell'informatica; • una conoscenza delle problematiche principali legate alla geometria computazionale. Le abilità che si vogliono trasmettere sono: • scrivere un codice complesso individuale e di gruppo; • collabolare in un team per la risoluzione di un problema computazionale complesso; • sviluppare algoritmi valutando gli aspetti positivi e negativi delle varie soluzioni possibili; • prendere decisioni sulla base di valutazioni oggettive in termini di complessità computazionale, robustezza e semplicità tra le diverse possibili soluzioni implementative Le competenze ottenute alla fine dell'insegnamento sono: • analizzare un problema complesso, valutare le possibili soluzioni implementative e progettare un codice di simulazione per il calcolo scientifico funzionante, modulare ed efficiente.
Buona conoscenza di un linguaggio di programmazione e del funzionamento del calcolatore. Buona conoscenza degli argomenti dei corsi di base di analisi matematica, geometria e algebra lineare.
Introduzione al Calcolo Scientifico • Ripasso su condizionamento di un problema e stabilità di un algoritmo numerico. • Cenni sulla Teoria della complessità computazionale Introduzione all'Ingegneria del Software • Cenni sull'Esecuzione e sulle Performance di un Codice ◦ Introduzione al linguaggio C++ e Python ◦ Compiler vs Interpreter ◦ Preprocessore ◦ Puntatori, allocazione statica e dinamica della memoria • Cenni sui Paradigmi di programmazione ◦ Focus sulla Programmazione orientata agli oggetti (OOP) ◦ OOP nel linguaggio C++ e Python • Cenni sul Design pattern ◦ Abstract Factory Pattern e Factory method pattern ◦ Inversion of control e Dependency injection • Introduzione al Version Control ◦ Introduzione a Git Applicazioni del Calcolo Scientifico ◦ Strutture dati avanzate (liste, code, pile, alberi, grafi) ◦ Complessità computazionale, Ricorsione ◦ Algoritmi elementari (ordinamento, attraversamento di alberi e grafi, ricerca di percorsi tra nodi nei grafi) ◦ Strutture dati in C++ e Python ◦ C++ (STL) • Geometria Computazionale ◦ Introduzione alle classi per il trattamento di oggetti geometrici ◦ Intersezioni ◦ Matrici di Rotazione ◦ Trasformazioni affini, sistemi di riferimento 2D/3D ◦ Quadratura numerica 2D/3D ◦ Geometria computazionale in C++ e Python ◦ C++ - Eigen ◦ Phyton - numpy
L'insegnamento copre la durata di un semestre. Si compone di lezioni teoriche, esercitazioni in aula ed esercitazioni al calcolatore. Una parte consistente dell'insegnamento è dedicata allo sviluppo di un progetto di gruppo. Il progetto a tema vincolato consiste nello sviluppo di un codice da parte di gruppi di 2 o 3 studenti per la risoluzione del problema proposto dal docente utilizzando gli strumenti, le strutture dati e i linguaggi presentati nell'insegnamento.
• Crescenzi Pierluigi - Gambosi Giorgio - Grossi Roberto - Rossi Gianluca, STRUTTURE DI DATI E ALGORITMI, Progettazione, analisi e programmazione, Editore: PEARSON EDUCATION ITALIA • Monegato Giovanni, METODI E ALGORITMI PER IL CALCOLO NUMERICO, Editore: CLUT • Materiale elettronico fornito dai docenti
Slides; Libro di testo; Esercizi; Esercitazioni di laboratorio; Materiale multimediale ;
Modalità di esame: Prova orale obbligatoria; Elaborato progettuale individuale; Elaborato progettuale in gruppo;
Exam: Compulsory oral exam; Individual project; Group project;
... La durata dell'esame orale è di circa 30-45 minuti e consta di 2/3 domande con peso nella valutazione finale circa uguale. Le domande saranno prevalentemente indirizzate alla discussione con il docente: • delle esercitazioni proposte durante l'anno e implementate indipendentemente dallo studente; • del progetto a tema vincolato scelto, facendo particolare riferimento agli aspetti di complessità computazionale delle scelte fatte nell'implementazione. Durante l'esame orale si approfondiranno inoltre gli argomenti proposti nell'insegnamento. Le valutazioni sono espresse in trentesimi e l’esame è superato se la votazione riportata è di almeno 18/30. La valutazione massima è 30 e lode. La consegna del progetto entro le scadenze indicate permette di raggiungere la votazione massima, altrimenti il voto massimo della prova orale è 26/30. Il progetto è considerato valido al fine della prova orale se consegnato nella sezione Elaborati della pagina dell'insegnamento 3 giorni prima dell'appello in cui si vuole sostenere l'esame e non oltre la fine della sessione immediatamente successiva alla conclusione delle lezioni dell'insegnamento.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Esporta Word