Il corso comprende lezioni in aula (T-x), sessioni di laboratorio (P-x) ed esercizi in aula (E-x). Le lezioni e gli esercizi si terranno nelle aule 0.1, 2.6 e 4.2, mentre le sessioni di laboratorio si teranno in Lab 3.
Lez |
Data |
Ora |
Aula |
Argomento (indicativo) |
T-1 |
23-Feb |
11-14 |
0.1 |
Presentazione del corso. Karel. |
T-2 |
24-Feb |
12-14 |
2.6 |
Algoritmi e programmi. Proprietà degli algoritmi. Metodologie top-down e bottom-up. Errori logici e sintattici |
P-1 |
27-Feb |
9-13 |
L3 |
Introduzione al laboratorio.
Account, password. Ambiente di programmazione, file system, browser. Karel |
T-3 |
2-Mar |
11-13 |
0.1 |
Ambienti di programmazione. Linguaggi di programmazione. Alfabeto, sintassi e
semantica. Il formalismo BNF. Struttura e sintassi di un programma C. |
E-1 |
2-Mar |
13-14 |
0.1 |
Esercizi sulle grammatiche BNF. |
P-2 |
3-Mar |
12-14 |
L3 |
Introduzione a Visual Studio.
Compilatore C. Hello World! Come creare un progetto in C in Visual Studio. Utilizzo del debugger. |
T-4 |
6-Mar |
9-11 |
4.2 |
Identificatori, variabili, costanti, tipi di dato.
Tipi scalari, qualificatori e quantificatori, operatori. |
P-3 |
6-Mar |
11-13 |
L3 |
Tipi di dato.
Tipi semplici in C. Problemi legati alla rappresentazione dei numeri. Overìflow e underflow. |
T-5 |
9-Mar |
11-13 |
0.1 |
Overloading e
casting. Dichiarazioni di tipo. Espressioni booleane.
Istruzioni di assegnamento e incremento. Precedenza e associatività. Rappresentazione dei numeri interi e in floating point. |
E-2 |
9-Mar |
13-14 |
0.1 |
Esercizi su rappresentazioni dei numeri e valutazioni di espressioni. |
P-4 |
10-Mar |
12-14 |
L3 |
Precedenza e associatività negli
operatori. Assegnamento, incremento, overloading e casting. |
T-6 |
13-Mar |
9-11 |
4.2 |
Input/Output con formato: printf e scanf. |
P-5 |
13-Mar |
11-13 |
L3 |
Input/Output con formato: printf e scanf. |
T-7 |
16-Mar |
11-13 |
0.1 |
Introduzione alla programmazione strutturata.
Teorema di Böhm-Jacopini. Istruzione composta. Istruzioni di alternativa: if. Cicli while, do..while, e for. Strutture annidate. |
E-3 |
16-Mar |
13-14 |
0.1 |
Esercizi su cicli e condizioni. |
P-6 |
17-Mar |
12-14 |
L3 |
Espressioni e cicli. |
T-8 |
20-Mar |
9-11 |
4.2 |
Operatore condizionale.
Break e continue. Switch. Tipi strutturati: vettori. |
P-7 |
20-Mar |
11-13 |
L3 |
Espressioni e cicli. |
T-9 |
23-Mar |
11-13 |
0.1 |
Tipi strutturati: Matrici, stringhe, e record. |
E-4 |
23-Mar |
13-14 |
0.1 |
Esercizi su vettori e stringhe. |
P-8 |
24-Mar |
12-14 |
L3 |
Cicli e array. |
T-10 |
27-Mar |
9-11 |
4.2 |
Funzioni e procedure. Il modello cliente-servitore.
Interfacce. Parametri formali e parametri effettivi. Funzioni in C: Binding e
visibilità. |
P-9 |
27-Mar |
11-13 |
L3 |
Array e record. |
T-11 |
30-Mar |
11-13 |
0.1 |
Puntatori e variabili dinamiche. Operatori
aritmetici sui puntatori. |
E-5 |
30-Mar |
13-14 |
0.1 |
Esercizi su strutture e puntatori. |
P-10 |
31-Mar |
12-14 |
L3 |
Funzioni. |
T-12 |
3-Apr |
9-11 |
4.2 |
Vettori e puntatori. Problemi
collegati all'uso dei puntatori. |
P-11 |
3-Apr |
11-13 |
L3 |
Puntatori. |
T-13 |
6-Apr |
11-13 |
0.1 |
Passaggio per riferimento. Passaggio di un
vettore come parametro di funzione. Dichiarazioni di funzione. Effetti collaterali nelle funzioni. Tempo di vita
delle variabili. Variabili static. |
E-6 |
6-Apr |
13-14 |
0.1 |
Esercizi sulle funzioni: visibilità e tempo di vita delle variabili, vettori come parametri. |
P-12 |
7-Apr |
12-14 |
L3 |
Puntatori. |
|
10-Apr |
|
|
|
|
13-Apr |
|
|
|
|
14-Apr |
|
|
|
T-14 |
17-Apr |
9-11 |
0.1 |
Il modello a run-time: lo stack. Spazio di
indirizzamento. La ricorsione. Processi computazionalmente
iterativi/ricorsivi. Ricorsione tail. |
P-13 |
17-Apr |
11-13 |
L3 |
Fuzioni e vettori. |
T-15 |
20-Apr |
11-13 |
0.1 |
Tipi di dato astratto. Implementazione mediante strutture dati dinamiche: liste e
alberi (cenni). Notazione Big-O. |
E-7 |
20-Apr |
13-14 |
0.1 |
Esercizi sui tipi di dato astratto. |
P-14 |
21-Apr |
12-14 |
L3 |
Funzioni ricorsive. |
T-16 |
24-Apr |
9-11 |
0.1 |
Progetti su più file. Funzioni come parametro. Esempio della funzione qsort.
Parametri del main. |
P-14 |
24-Apr |
11-13 |
L3 |
Funzioni ricorsive (continuazione). |
T-17 |
27-Apr |
11-14 |
0.1 |
Architettura a livelli. Microprogrammazione e Sistema Operativo. Storia del computer. Architettura di Von
Neumann. Organizzazione della CPU. Ciclo fetch-decode-execute. Parallelismo a livello di istruzione e di CPU. |
T-18 |
28-Apr |
12-14 |
1.3 |
Organizzazione della memoria principale. Cache. Gerarchia di memorie. Memorie di massa. Bus. Interfacce I/O. |
|
1-May |
|
|
|
T-19 |
4-May |
11-13 |
0.1 |
I file. Accesso ai file di testo. Lettura/scrittura
con formato. File binari. Lettura/scrittura di blocchi. |
E-8 |
4-May |
13-14 |
0.1 |
Esercizi sui file. |
P-15 |
5-May |
12-14 |
L3 |
Progetti su più file e file di testo |
T-20 |
8-May |
9-11 |
0.1 |
Esercizi sui file. |
P-16 |
8-May |
11-13 |
L3 |
File binari |
T-21 |
11-May |
11-14 |
0.1 |
Cenni sulla complessità degli algoritmi. Big-O
notation. Algoritmi di ordinamento: bubble sort, insertion sort, merge sort |
P-17 |
12-May |
12-14 |
L3 |
Set-up per misurare la performance
di un algoritmo. Implementazione e confronto tra bubble sort, insertion sort
e merge sort |
T-21 |
15-May |
9-11 |
0.1 |
Algoritmi di ordinamento (continuazione). |
P-17 |
15-May |
11-13 |
L3 |
Algoritmi di ordinamento (continuazione). |
T-22 |
18-May |
11-14 |
0.1 |
Introduzione ai Sistemi Operativi e a Unix.
Funzionalità di un sistema operativo. Introduzione alla shell. |
P-18 |
19-May |
12-14 |
L4 |
Shell dei comandi. |
T-23 |
22-May |
9-11 |
0.1 |
Gestione dei processi e linguaggio di scripting. |
P-19 |
22-May |
11-13 |
L4 |
Shell dei comandi (sostituzione). |
T-24 |
25-May |
11-13 |
0.1 |
Gestione dei file in Unix: open, close, read, write. |
E-9 |
25-May |
13-14 |
0.1 |
Esercizi su file di script |
P-20 |
26-May |
12-14 |
L4 |
File di script. |
T-25 |
29-May |
9-11 |
0.1 |
Gestione dei processi in Unix: fork e exec. |
E-10 |
29-May |
11-13 |
0.1 |
Presentazione dei progetti. Preparazione all'esame:
esercizi di analisi e domande di teoria |
P-21 |
1-Jun |
11-13 |
L4 |
Lab4 a disposizione per esercitazioni individuali su C e shell Linux |
|
2-Jun |
|
|
|
E-11 |
5-Jun |
9-13 |
L3 |
Preparazione all'esame: parte di programmazione C |