More computing sins are committed in the name of efficiency (without necessarily achieving it) than any other single reason - including blind stupidity.
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 e memorizzano informazioni, discutendo aspetti come prestazioni, portabilità e robustezza. 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 efficienti sfruttando le caratteristiche dell’hardware e come analizzarne le prestazioni.
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).
Le lezioni e le esercitazioni vengono tenute nel periodo compreso tra il 21 febbraio 2022 e il 27 maggio 2022 secondo il calendario ufficiale del corso di laurea. Le lezione sono svolte in modalità blended, ossia sia in presenza che in streaming su Zoom.
[ A.A. 2014-2015 | A.A. 2015-2016 | A.A. 2016-2017 | A.A. 2017-2018 | A.A. 2018-2019 | A.A. 2019-2020 | A.A. 2020-2021 ]