Laboratorio di Programmazione 2

Laboratorio di Programmazione 2

Crediti

6

Propedeuticità

Laboratorio di Programmazione.

Settore scientifico-disciplinare

INF/01 Informatica.

Modalità dell’esame

Attività di laboratorio, prova orale.

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.

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.

Risultati dell’apprendimento
attesi

Al termine dell’insegnamento lo studente deve dimostrare di

  • conoscere e comprendere 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.

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.