Laboratorio di Programmazione 2
Crediti: 6.
Settore scientifico-disciplinare: INF/01 Informatica.
Obiettivi formativi: Il corso intende fornire un approfondimento delle moderne metodologie e strumenti, nonché agli ambienti di calcolo hardware e software per lo sviluppo e l'analisi di algoritmi. Parte integrante del corso è l'attività di laboratorio.
Risultati dell'apprendimento attesi: Al termine dell'insegnamento lo studente deve dimostrare di
- comprendere e conoscere il funzionamento di strumenti avanzati per la progettazione, sviluppo e analisi degli algoritmi, nonché la struttura e il funzionamento dei principali sottosistemi dei moderni sistemi operativi;
- saper applicare tali conoscenze nello sviluppo autonomo di algoritmi e programmi
caratterizzati da livelli di difficoltà crescenti anche su moderne architetture multicore,
- saper comunicare in maniera chiara, rigorosa ed efficace idee e soluzioni a interlocutori specialisti e non specialisti;
- saper individuare i metodi più, appropriati per analizzare e risolvere un problema inerente gli argomenti del corso e interpretare correttamente i risultati.
Programma:
- Strutture dati dinamiche e algoritmi ricorsivi: liste, pile, code e alberi. Algoritmi per la gestione delle strutture dati dinamiche. Gli algoritmi ricorsivi. Esempi di algoritmi ricorsivi di ricerca, e gestione liste e alberi.
- Struttura e funzionalità dei sistemi operativi. Evoluzione dei S.O.. La gestione dei processi e dei thread. La sincronizzazione dei processi e thread: problemi classici di sincronizzazione dei processi. La gestione della memoria. La memoria virtuale e la memoria gerarchica.
- Programmazione multithreading e introduzione al calcolo ad alte prestazioni. Il ruolo delle cache memory e l'influeanza sulle prestazioni degli algoritmi. Introduzione al calcolo ad alte prestazioni: il prodotto di matrici.
Propedeuticità: Nessuna.
Modalità dell'esame: Attività di laboratorio, prova orale.
Risultati di apprendimento che si intende verificare: Abilità nello sviluppo di algoritmi e programmi di varia difficoltà; chiarezza, correttezza e completezza nell'esposizione scritta e/o orale degli argomenti inerenti l'insegnamento.