81784 - PROGRAMMAZIONE PER LA FISICA (M-Z)

Anno Accademico 2022/2023

  • Moduli: Francesco Giacomini (Modulo 1) Fabio Ferrari (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Bologna
  • Corso: Laurea in Fisica (cod. 9244)

    Valido anche per Laurea in Fisica (cod. 9244)

Conoscenze e abilità da conseguire

Al termine del corso lo studente possiede una conoscenza del linguaggio di programmazione C++ adeguata e sufficiente ad affrontare e risolvere semplici problemi di Fisica mediante programmi eseguiti al calcolatore. In particolare è in grado di compiere tutte le operazioni di acquisizione e scrittura di dati, sia in forma testuale sia in forma binaria, e di elaborarli secondo necessità, specialmente riguardo a esperimenti scientifici

Contenuti

Cenni di architettura degli elaboratori e di sistemi operativi

Linguaggio macchina e linguaggio di programmazione di alto livello

Perché usare il C++

Oggetti, tipi, variabili, costanti

Operare su oggetti tramite espressioni

Istruzioni per strutturare un programma

Definizione e uso di funzioni

Definizione di nuovi tipi

Sistema di input/output

Programmazione generica

Allocazione dinamica di memoria

La Standard Library del C++: contenitori e algoritmi

Polimorfismo dinamico (o programmazione object-oriented)

Prevenzione e gestione degli errori

Cenni di concorrenza e parallelismo

Cenni di software engineering e di strumenti a supporto

Testi/Bibliografia

Come introduzione al C++: B. Stroustrup, A tour of C++

Come referenza online: C++ reference

Libro di testo consigliato: B. Stroustrup, Programming: Principles and Practice Using C++, 2nd edition, Addison-Wesley

Alternativamente: B. Stroustrup, The C++ Programming Language, 4th edition, Addison-Wesley

Di quest'ultimo esiste anche una traduzione italiana: B. Stroustrup, C++ - Linguaggio, libreria standard, principi di programmazione, IV edizione, Pearson

 

Metodi didattici

Lezioni frontali ed esercitazioni obbligatorie in laboratorio.

Modalità di verifica e valutazione dell'apprendimento

L'esame consiste in due prove:

  1. Progetto riguardante l'implementazione di un programma C++ secondo indicazioni date a lezione. Il progetto è svolto in parte durante le ore di laboratorio, in parte in autonomia. Il progetto può essere svolto in gruppo, fino a quattro persone.
  2. Colloquio orale riguardante la discussione del progetto e domande teoriche e pratiche sugli argomenti svolti a lezione.

La valutazione del progetto si basa su cinque criteri:

  1. La qualità della relazione intende valutare la capacità della relazione di accompagnare il lettore nella comprensione del programma e nelle scelte di design e implementative.
  2. La qualità del design del programma intende valutare quanto il design dell'applicazione sia appropriato per risolvere il problema proposto.
  3. La qualità dell'implementazione del programma intende valutare l'applicazione corretta dei costrutti del linguaggio C++ nell'implementazione del programma.
  4. La correttezza del programma intende valutare quanto il comportamento del programma in esecuzione sia aderente a quanto specificato nella consegna.
  5. L'originalità della soluzione intende valutare il rispetto della consegna e l'esplorazione di strumenti, librerie, tecniche aggiuntivi.

In base al grado di soddisfacimento, ogni criterio sarà valutato secondo la scala: insufficiente, sufficiente, buono, ottimo. Per accedere all'orale è necessario che ogni criterio abbia una valutazione almeno sufficiente. La valutazione media dei criteri (usando la corrispondenza sufficiente = 18, buono = 22, ottimo = 26) costituisce il voto di accesso al colloquio orale.

Scopo del colloquio orale è innanzitutto la conferma della valutazione del progetto, discutendo del contributo dello studente allo stesso. Ulteriori quesiti di contenuto teorico/pratico, migliorativi del voto di accesso, sono mirati a valutare la profondità di comprensione dei concetti appresi a lezione e la loro applicabilità alla soluzione di problemi.

Strumenti a supporto della didattica

La presentazione e gli esempi mostrati a lezione saranno disponibili in una repository Git (annunciata all'inizio delle lezioni).

Orario di ricevimento

Consulta il sito web di Francesco Giacomini

Consulta il sito web di Fabio Ferrari