Il corso di Laboratorio Software viene svolto, a partire dall'anno accademico 2006-2007, in tre sezioni, di cui una in lingua inglese. I contenuti del corso sono gli stessi per le tre sezioni, e la parte scritta dell'esame viene svolta su testi comuni. Le esercitazioni del corso sono tenute dall'Ing. Michele Tartara.
Il corso si divide in due parti: una teorico-pratica relativa ai sistemi operativi ed alla programmazione in ambiente Linux, l'altra progettuale, su temi offerti dai docenti del corso, o da altri docenti.
Nell'ambito della parte teorica del corso verranno trattati i seguenti argomenti:
La parte pratica prevede sia esercizi sugli argomenti visti a lezione, nell'ambito di applicazioni in ambiente Linux, sia parti introduttive volte a mettere gli studenti in grado di svolgere una attività progettuale all'interno di un sistema Unix-like.
Saranno inoltre svolti alcuni seminari differenziati da sezione a sezione. Per le sezioni italiane, abbiamo previsto un seminario sui linguaggi di scripting e la programmazione nel linguaggio della shell Bash. Per la sezione inglese, sarà invece svolto un seminario sui sistemi operativi per sistemi multiprocessore.
Il progetto può essere svolto sotto la supervisione di uno dei docenti del corso, o di docenti di altri corsi (ad eccezione dei corsi di progetto). Il progetto sarà valutato direttamente dal docente che lo ha proposto. Viene svolto in gruppi costituiti da uno, due o tre studenti.
C'è un elenco di progetti, sia proposti da me che da altri docenti.
Due liste di progetti potenzialmente ancora disponibili si possono inoltre trovare nel sito del corso dell'anno passato.
Il corso adotta due libri di testo:
In alternativa o in aggiunta al testo principale, è comunque possibile fare riferimento ad altri libri di Sistemi Operativi, ad esempio il Silberschatz o il Tanenbaum. Si tratta di testi molto simili, tutti disponibili anche in traduzione italiana.
Potete inoltre fare riferimento al materiale fornito per le altre sezioni:
Una sintesi di ciascuna lezione è disponibile seguendo il relativo link dal calendario delle lezioni, o nelle news.
L'esame scritto è diviso in quattro quesiti, di cui tre di teoria (basate sugli argomenti visti a lezione o esercitazione) e uno di pratica (programmazione C con uso di primitive di sistema e/o implementazione di algoritmi visti nel corso). Il punteggio e' diviso in parti uguali fra teoria e pratica – pertanto non è possibile superare l'esame lasciando in bianco una delle due parti.
Dato che la registrazione avviene usualmente in un appello diverso da quello in cui si supera lo scritto (per via del progetto), all'atto dell'iscrizione agli appelli viene richiesto di indicare se si intende sostenere lo scritto, o solo registrare un voto completo. Fatelo, altrimenti nel dubbio ci tocca stampare compiti non necessari.
Durante l'esame potete usare questo riferimento (o il vecchio riferimento, meno completo). Potete portarlo voi, altrimenti ve ne sara' fornita una copia.
Questo è il calendario delle lezioni ed esercitazioni allo stato attuale. Gli aggiornamenti saranno segnalati nelle News. Il corso si conclude entro la prima metà del mese di Dicembre, in modo da poter tenere un pre-appello prima delle vacanze.
Data | Tipo | Argomento | Orario |
---|---|---|---|
6/10 | E | Introduzione a Linux | |
9/10 | L | Introduzione, ripasso architetture e S.O. | |
13/10 | L | Processi e Thread | |
20/10 | L | Sincronizzazione/Mutua Esclusione | |
27/10 | E | Processi e Thread | |
30/10 | L | Scheduling dei processi | |
3/11 | S | Shell scripting | |
6/11 | E | Comunicazione fra processi | |
10/11 | E | Comunicazione fra processi e ''procfs'' | |
17/11 | L | Deadlock | |
27/11 | E | Esercizi sugli argomenti precedenti | |
1/12 | E | Svolgimento di uno o più temi d'esame |