PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

Elenco notifiche



Programmazione e calcolo scientifico

03NMVMQ

A.A. 2024/25

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
Cicuttin Matteo   Ricercatore L240/10 MATH-05/A 10 20 0 0 1
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
2024/25
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 punta a far acquisire agli studenti: - solide basi di programmazione C++ e di gestione di progetti software; - 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 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: - strong foundations of C++ programming and software project management; - 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 numerical integration and differential equations.
I risultati di apprendimento attesi consistono in: • acquisizione dell'autonomia nella gestione di piccoli progetti software • acquisizione dell'autonomia nell'uso di base di sistemi Unix/Linux da terminale • acquisizione di solide basi di programmazione C++; • 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.
The expected learning outcomes consist of: - an in-depth knowledge of C / C ++ and Pythin programming, - a basic knowledge of the problems related to the use of the computer to perform accurate and efficient simulations (computational complexity of algorithms, stability, conditioning of problem formulation), - a knowledge of the main algorithms and fundamental data structures of information technology, - a knowledge of the main problems related to computational geometry.
Buona conoscenza di un qualsiasi linguaggio di programmazione. Conoscenza della struttura di base di un calcolatore e dell'interazione tra le sue parti. Buona conoscenza degli argomenti dei corsi di base di analisi matematica, geometria e algebra lineare.
Good knowledge of a programming language and computer. Good knowledge of the topics of the basic courses of mathematical analysis, geometry and linear algebra.
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 ◦ Richiami di architetture degli elaboratori, architettura Von Neumann ◦ Memory bound, compute bound e principali metriche di performance • Programmazione C++ ◦ Linguaggi compilati ed interpretati ◦ Dal sorgente all'eseguibile: preprocessore/compilatore/linker ◦ Introduzione al linguaggio C++ ◦ Basi del linguaggio, strutture di controllo, tipi di dati definiti dall'utente ◦ Allocazione dinamica della memoria, implementazione di semplici strutture dati dinamiche ◦ Libreria standard del C++ (STL) • Introduzione al Version Control ◦ Introduzione a Git • Interazione da terminale con sistemi Unix/Linux • Uso di CMake per la gestione di progetti software 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++ • 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++ ◦ C++ - Eigen
Introduction to Scientific Computing • Review and Insights on Computer Arithmetic • Reliability of numerical solutions, accuracy, choice of tolerances. • Review on conditioning of a problem and stability of a numerical algorithm. • Notes on the theory of computational complexity Introduction to Software Engineering • Notes on the Execution and Performance of a Code ◦ Compiler vs Interpreter ◦ Pointers, static and dynamic memory allocation ◦ Introduction to C ++ and Python language • Notes on programming paradigms ◦ Focus on Object Oriented Programming (OOP) ◦ OOP in the C ++ and Python languages Notes on the Design pattern ◦ Abstract Factory Pattern and Factory method pattern ◦ Inversion of control and Dependency injection • Introduction to Version Control ◦ Introduction to Git Applications of Scientific Computing ◦ Advanced data structures (lists, queues, stacks, trees, graphs) ◦ Computational complexity, Recursion ◦ Elementary algorithms (sorting, crossing trees and graphs, searching for paths between nodes in graphs) ◦ Data structures in C ++ and Python ▪ C ++ (STL) • Computational geometry ◦ Introduction to geometric objects ◦ Intersections ◦ Rotation matrices ◦ Computational geometry in C ++ and 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.
The course covers lasts two semesters. In both semesters it consists of theoretical lessons, classroom exercises and exercises at the computer lab. Most of the tutorials second semester workshops are dedicated to the development of a group project. The project consists in the development of a code by groups of 2 or 3 students for the resolution of one of the problems proposed by the teacher using the tools, data structures and languages presented during the course.
• Bjarne Stroustrup - A Tour of C++ (seconda edizione) - Addison-Wesley Professional • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Introduction to Algorithms - The MIT Press • Andrew S. Tanenbaum, Todd Austin - Structured Computer Organization (sesta edizione) - Pearson • 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
Crescenzi Pierluigi - Gambosi Giorgio - Grossi Roberto - Rossi Gianluca, STRUTTURE DI DATI E ALGORITMI, Progettazione, analisi e programmazione, Editore: PEARSON EDUCATION ITALIA Slides presented during lessons
Slides; Libro di testo; Esercizi; Esercitazioni di laboratorio; Materiale multimediale ;
Lecture slides; Text book; Exercises; Lab exercises; Multimedia materials;
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. • della teoria vista a lezione 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.
Exam: Compulsory oral exam; Individual project; Group project;
The exam consists of a computer test with exercises and theoretical questions that normally lasts 1 hour, a project consisting in the development of a code to solve problems assigned by the teacher to the computer, an oral with theoretical questions, discussion of the computer test and discussion of the project with particular reference to the aspects of computational complexity of the choices implemented in the project. During the written exam, the use of educational materials, calculators and mobile phones is not allowed. There is no minimum evaluation of the computer test to be admitted to the orals. The computer test is aimed at verifying a basic knowledge of all course topics. In the case from the test gaps emerge in relevant parts of the program, part of the oral exam will be devoted to evaluating the real knowledge of the topics of the questions of the test with missing or incorrect answer. The evaluations are expressed in thirtieths and the exam is passed if the score is at least 18/30. The maximum rating is 30 cum laude. The duration of the oral exam is about 45 minutes and consists of 2/3 questions with weight in the final evaluation slmost equal.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.
Esporta Word