Informazioni generali 2015-2016
More computing sins are committed in the name of efficiency (without necessarily achieving it)
than any other single reason - including blind stupidity. -- Bill Wulf
Il corso è diviso in due moduli erogati durante tutto l'anno accademico. Le lezioni del primo modulo si tengono nel periodo compreso tra il 28 settembre e il 22 dicembre 2015. Il secondo modulo sarà erogato nel periodo compreso tra marzo e maggio 2016.
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 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.
Il corso fornisce una panoramica dal punto di vista del programmatore su come i sistemi di calcolo eseguono programmi, memorizzano informazioni e comunicano fra loro, discutendo aspetti come prestazioni, portabilità e robustezza. Nel primo modulo del corso, gli studenti vengono introdotti ai princìpi di funzionamento di base di un calcolatore moderno, mostrando come programmare sfruttando i servizi offerti dai sistemi operativi, come i compilatori traducono codice C in linguaggio assembly e come scrivere programmi che svolgono attività concorrenti. Il secondo modulo del corso affronta la programmazione di sistemi di calcolo su più larga scala, sfruttando le infrastrutture e le astrazioni offerte dai sistemi operativi e dalle reti di calcolatori, con particolare enfasi sui princìpi generali, fra cui stratificazione, modularizzazione, virtualizzazione e sicurezza.
Primo modulo (SC1): programmazione single-threaded
- Orario: martedì 14:00-15:30 in aula 33 della sede di Via Eudossiana, oppure presso il laboratorio didattico di Via Tiburtina, e giovedì 10:15-13:30 in aula 1 del Nuovo Edificio di Chimica, città universitaria (ingresso Via Cesare De Lollis)
- Docente: Camil Demetrescu
- Esercitatore: Daniele Cono D'Elia
- Ricevimento studenti: martedì 11:45 - 13:15, poi su appuntamento (si prega di prenotarsi in ogni caso scrivendo una email al docente)
Secondo modulo (SC2): programmazione multi-threaded
- Orario: Venerdì 10:15-13:30 in aula 33 della sede di Via Eudossiana, e lunedì 11:45-13:15 nelle aule 15 e 16 del laboratorio didattico di Via Tiburtina
- Docente: Roberto Baldoni
- Esercitatori: Federico Lombardi e Daniele Cono D'Elia
- Ricevimento studenti: Giovedi' ore 16.00 Via Ariosto 25 stanza B112
Prerequisiti
Nozioni di base sul modello di macchina di Von Neumann, algebra booleana, rappresentazione dei numeri interi con e senza segno, rappresentazione dei numeri in virgola mobile, conoscenza del linguaggio C (in particolar modo i tipi array, i puntatori, gli operatori */& e l'aritmetica dei puntatori), uso del compilatore
gcc.
[
A.A. 2014-2015 ]