Informatica

Programma del corso (teoria e laboratorio), testi consigliati


Programma delle lezioni di teoria
Programma delle esercitazioni di laboratorio
Testi consigliati

Programma delle lezioni di teoria

  1. Cos'è l'informatica: mezzi fisici e teorici per l'elaborazione dell'informazione
  2. Il concetto di algoritmo, esempi: algoritmo di Euclide, semplici algoritmi numerici
  3. Dagli algoritmi ai programmi: esecutori e linguaggi di programmazione
  4. L'informazione e la sua rappresentazione numerica (testi, suoni, immagini), digitalizzazione dell'informazione
  5. Sistemi numerici in diverse basi, la base ottale, esadecimale, binaria (digitalizzazione)
  6. Rappresentazione dei numeri in binario
  7. Rappresentazione dei numeri negativi in modulo e segno e in complemento a 2
  8. Rappresentazione floating point dei razionali, mantissa, esponente, errori di troncamento
  9. Misure di informazione: bit, byte, multipli
  10. Architettura dei sistemi di calcolo, macchina di Von Neumann
  11. CPU, RAM, BUS, periferiche, principali funzionalità e caratteristiche
  12. Linguaggio macchina e assembly, programmazione a basso livello, svantaggi
  13. Programmazione ad alto livello, linguaggi e compilatori
  14. Ciclo di vita del software: progettazione, compilazione, linking, loading, esecuzione. Possibili errori e debugging
  15. Programmazione strutturata e Teorema di Boehm-Jacopini. Le strutture di controllo
  16. Forme di selezione, esempi
  17. Le variabili, tipi e operazioni
  18. Forme di iterazione, esempi: gestione di stream di dati e test numerici
  19. Il primo programma C++. Lo stream di output cout
  20. I tipi in C++, principali caratteristiche e operazioni. Tipi interi, con virgola, caratteri e bool
  21. Dichiarazioni di variabili, loro riempimento mediante espressioni e operazioni di input. Lo stream cin
  22. Il tipo string. Le C-stringhe, loro struttura, gestione e principali funzionalità
  23. Le strutture di controllo in C++. La selezione, varie forme e if nidificati
  24. Il tipo bool per le condizioni, principali caratteristiche e operatori booleani. L'operatore condizionale.
  25. Iterazione in C++, possibili forme. Il ciclo for. L'istruzione break
  26. Gli array monodimensionali in C++, principali caratteristiche, funzionalità e operazioni su array
  27. Array e allocazione in memoria, indirizzo d'inizio array. Array bidimensionali, esempi di utilizzo
  28. Il concetto di struct
  29. Gestione dei file in C++. Principali funzionalità della libreria fstream. Apertura, manipolazione e chiusura di stream su file
  30. Manipolatori di output, la libreria iomanip
  31. Gli array dinamici, caratteristiche, definizione e uso. Caricamento dati da file ad array dinamici
  32. Funzioni in C++. Sviluppo modulare top-down dei programmi. Forma di una function che restituisce valori e void
  33. Passaggio di parametri, per valore e riferimento, significato. Forma modulare del sorgente e prototipi
  34. Gestione della memoria, record di attivazione, stack, heap, errori di stack overflow
  35. Funzioni C++ ricorsive, definizioni induttive di funzioni, loro implementazione mediante ricorsione
  36. Dinamica dello stack durante la ricorsione. Prestazioni iterativo vs. ricorsivo
  37. Cenni alla complessità worst case degli algoritmi
  38. Ricerca in un array. Soluzione lineare e binaria, implementazioni e analisi delle prestazioni
  39. Il problema di sorting, limiti inferiori alla complessità in tempo. Selection sort, implementazione e complessità in tempo quadratica
  40. Mergesort, specifica e implentazione.Valutazione della complessità in tempo di mergesort mediante equazione di ricorrenza, tempo ottimale
  41. I puntatori, significato, definizione ed utilizzo. Puntatori a strutture ed oggetti
  42. Variabili dinamiche e puntatori, array dinamici, istruzione new. Memory leak e istruzione delete
  43. Operazioni sui puntatori, aritmetica dei puntatori. Utilitzzo dei puntatori per scorrere array, copia superficiale e profonda di array
  44. Array tradizionali come puntatori costanti, differenza con array dinamici. Array restituiti da funzioni, array su stack e su heap
  45. I parametri del main, acquisizione a linea di comando. Implementazioni di semplici comandi di sistema operativo
Torna su

Programma delle esercitazioni di laboratorio

  1. I sistemi operativi, Linux e il file system
  2. L'utilizzo del terminale Linux, principali comandi
  3. L'ambiente di programmazione, editor, compilatori
  4. Primi programmi in C++
  5. Selezione e cicli in C++
  6. Array e struct
  7. Funzioni C++ e passaggio di parametri
  8. Creazione di librerie di funzioni. Implementazione librerie, file header.
  9. Creazione file oggetto e loro linking
  10. Utilizzo del comando make e struttura di un makefile
  11. Uso di file in C++
  12. Utilizzo della libreria RooT per l'elaborazione grafica di dati, cenni all'uso degli oggetti in C++
  13. Le principali classi di RooT: scatterPlot, istogrammi, funzioni, finestre
  14. Sviluppo di progetti di analisi e visualizzazione finale di dati mediante RooT
Torna su

Testi consigliati


Torna alla pagina del corso

Carlo Mereghetti
Dipartimento di Fisica "Aldo Pontremoli"
Università degli Studi di Milano
via Celoria 16, 20133 Milano, Italy
phone: +39 02 503 17243
mail: carlo.mereghetti@unimi.it