La programmazione è la disciplina finalizzata alla risoluzione di problemi con il calcolatore. E' quindi una attività nella quale la teoria e la metodologia hanno una inevitabile ricaduta pratica, e dove è impossibile imparare senza "fare". Il corso di Laboratorio di Programmazione intende fornire quindi un’introduzione alle metodologie di progetto, sviluppo ed analisi degli algoritmi di base per il calcolo scientifico nonché all’uso dei principali strumenti di calcolo (hardware e software), con particolare riguardo all’influenza che questi ultimi esercitano sullo sviluppo degli algoritmi stessi. Dopo un’introduzione alla struttura e funzionalità del calcolatore, sarà illustrato il concetto di algoritmo, delle sue componenti fondamentali (strutture dati e strutture di controllo) e delle principali metodologie di progetto. Si parlerà, poi, degli strumenti software per l’implementazione di un algoritmo (sistemi operativi, linguaggi, compilatori). Infine, verranno sviluppati e analizzati, dal punto di vista della complessità computazionale, sia alcuni tra i principali algoritmi non numerici (ordinamento, ricerca e fusione) sia gli algoritmi di base per l’algebra lineare numerica (prodotto di matrici e vettori). Il corso termina con uno studio sull’influenza dell’aritmetica del calcolatore sullo sviluppo degli algoritmi.