Ingegneria degli Algoritmi

Corso di Laurea in Ingegneria Informatica e Automatica - A.A. 2014-2015

HomePage | Avvisi | Diario lezioni | Programma | Materiale didattico | Esami | Forum | Login

Informazioni generali


A partire dall'A.A. 2015-2016, il corso non è più erogato poiché i vari argomenti confluiscono nei nuovi corsi di Tecniche di Programmazione, Sistemi di Calcolo e Programmazione Funzionale e Parallela previsti dal nuovo ordinamento.

Le lezioni vengono tenute nel periodo compreso tra il 23 febbraio e il 31 maggio 2015.



Contesto e obiettivi

I moderni sistemi di calcolo forniscono una grande potenza computazionale frutto di una notevole complessità architetturale. Sfruttare anche in parte questa potenza è una sfida che richiede una conoscenza interna dell'hardware, una comprensione profonda degli algoritmi alla base delle computazioni, e una buona dose di creatività per ottenere implementazioni che utilizzino in modo ottimale le risorse di calcolo disponibili. La ricompensa che si ha nell'investire su queste competenze è la capacità di scrivere programmi in grado di processare grandi quantità di dati più efficientemente anche di vari ordini di grandezza rispetto alle tecniche di programmazione convenzionali, acquisendo alcune delle capacità di base per confrontarsi con la sfida del big data computing che sta rivoluzionando il modo in cui si sviluppano i moderni sistemi software.

Dopo un'ampia introduzione al linguaggio C, il corso affronterà come i costrutti di alto livello si mappano su codice assembly x86 e come il programmatore può sfruttare tecnologie come cache e pipeline per estrarre il massimo delle prestazioni dalla macchina, imparando a conoscere quali ottimizzazioni sono fatte automaticamente dai compilatori e quali invece vanno effettuate esplicitamente nel codice. Verrà inoltre mostrato come gestire la memoria in modo efficiente, studiando in particolare il funzionamento degli allocatori dinamici di memoria. Il corso verrà completato da un'introduzione alla programmazione parallela sfruttando le schede grafiche GPU come strumento di calcolo general-purpose. Lo studente verrà introdotto all'uso di vari tool come profiler e debugger.


Prerequisiti

Conoscenza di almeno un linguaggio di programmazione procedurale/orientato agli oggetti. Tecniche di programmazione. Architetture dei calcolatori elettronici. Algoritmi e strutture dati.

[ A.A. 2009-2010 | A.A. 2010-2011 | A.A. 2011-2012 | A.A. 2012-2013 | A.A. 2013-2014 ]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.3
Page was generated in 0.0420 seconds