Programma

 

 

Anno accademico 2006-2007

 

Algoritmi e strutture dati. Progettazione ed analisi di algoritmi e strutture dati. Alberi. Alberi binari. Alberi binari di ricerca. Algoritmi di bilanciamento in alberi di ricerca: alberi AVL, alberi 2-4. Code con priorità e alberi heap. Grafi. Algoritmi di attraversamento: BFS e DFS. Ordinamento topologico. Alberi di copertura minimali: algoritmi di Kruskal e Prim. Cammini minimi ad origine singola: algoritmo di Dijkstra. Chiusura transitiva di un grafo orientato. Tecniche di realizzazione mediante programmazione orientata agli oggetti in Java.
Architettura degli elaboratori. Introduzione all’architettura dei calcolatori con riferimento al processore MIPS. Operazioni svolte dall’hardware della macchina, istruzioni per prendere decisioni, gestione delle procedure, metodi di indirizzamento, vettori e puntatori. Assemblatori, linker, loader ed il simulatore SPIM. Tecniche di programmazione in assembler MIPS. Aritmetica dei calcolatori; rappresentazione dei numeri, unità aritmetico-logiche. Componenti elementari di un calcolatore: porte logiche, tabelle verità, equazioni logiche; logica combinatoria; temporizzazione e clock; memorie SRAM e DRAM. Gerarchie della memoria, cache, memoria virtuale. Costruzione dell'Unità Aritmetica. Architettura del processore MIPS.

M.T. Goodrich, R. Tamassia, Data structures and algorithms in Java,  (4th edition), Wiley & Sons, 2006.

D. A. Patterson, J. L. Hennessy, Struttura e progetto dei calcolatori: l'interfaccia hardware-software,  Zanichelli, 2006.  Traduzione italiana di :
Computer Organization and Design: the hardware/software interface
, 3rd edition,  JMorgan Kaufmann Pub., 2005.

 

 

 

  Anno accademico 2005-2006
 

Algoritmi e strutture dati. Progettazione ed analisi di algoritmi e strutture dati. Alberi. Alberi binari. Alberi binari di ricerca. Algoritmi di bilanciamento in alberi di ricerca: alberi AVL, alberi 2-4. Code con priorità e alberi heap. Grafi. Algoritmi di attraversamento: BFS e DFS. Ordinamento topologico. Alberi di copertura minimali: algoritmi di Kruskal e Prim. Cammini minimi ad origine singola: algoritmo di Dijkstra. Chiusura transitiva di un grafo orientato. Tecniche di realizzazione mediante programmazione orientata agli oggetti in Java.
Architettura degli elaboratori. Introduzione all’architettura dei calcolatori con riferimento al processore MIPS. Operazioni svolte dall’hardware della macchina, istruzioni per prendere decisioni, gestione delle procedure, metodi di indirizzamento, vettori e puntatori. Assemblatori, linker, loader ed il simulatore SPIM. Tecniche di programmazione in assembler MIPS. Aritmetica dei calcolatori; rappresentazione dei numeri, unità aritmetico-logiche. Componenti elementari di un calcolatore: porte logiche, tabelle verità, equazioni logiche; logica combinatoria; temporizzazione e clock; memorie SRAM e DRAM. Gerarchie della memoria, cache, memoria virtuale. Costruzione dell'Unità Aritmetica. Architettura del processore MIPS.

M.T. Goodrich, R. Tamassia, Data structures and algorithms in Java,  (4th edition), Wiley & Sons, 2006.

D. A. Patterson, J. L. Hennessy, Computer Organization and Design: the hardware/software interface, JMorgan Kaufmann Pub., 2005.

• cap. 1: Tecnologia di un computer [ tutto ]
• cap. 2: Linguaggio assembly [ da 2.1 a 2.10, 2.13 e 2.15 ]
• cap. 3: Aritmetica per Computer [3.1, 3.2, 3.3, 3.4 (fino a Booth escluso)]
• cap. 5: Processore [ 5.1, 5.3, 5.4, 5.5(cenni) ]
• cap. 7: Gerarchie di memoria [7.1, 7.2, 7.4 fino a p. 514]
• app. A: Assembler e simulatore SPIM  [tutto escluso A.7 e A.8 ]
• app. B: Reti logiche [B.1, B.2, B.3, B.5 e B.6 (Esempi Verilog esclusi), B.7, B.8,
               B.9 (solo SRAMs)]

N.B. I capitoli indicati vanno studiati completamente. Alcune parti sono contrassegnate in modo speciale e vanno studiate nel seguente modo:

escluso = argomento non trattato a lezione; non costituisce argomento d'esame.

Fi1 = argomento trattato nel corso di Fondamenti di Informatica I e dato per noto per il corso di Fondamenti di Informatica II.  Da ristudiare, se dimenticato o studiato insufficientemente.

 

 

 

Anno accademico 2004-2005

 

Algoritmi e strutture dati. Progettazione ed analisi di algoritmi e strutture dati. Alberi. Alberi binari. Alberi binari di ricerca. Algoritmi di bilanciamento in alberi di ricerca: alberi AVL, alberi 2-4. Code con priorità e alberi heap. Grafi. Algoritmi di attraversamento: BFS e DFS. Ordinamento topologico. Alberi di copertura minimali: algoritmi di Kruskal e Prim. Cammini minimi ad origine singola: algoritmo di Dijkstra. Chiusura transitiva di un grafo orientato. Tecniche di realizzazione mediante programmazione orientata agli oggetti in Java.
Architettura degli elaboratori. Introduzione all’architettura dei calcolatori con riferimento al processore MIPS. Operazioni svolte dall’hardware della macchina, istruzioni per prendere decisioni, gestione delle procedure, metodi di indirizzamento, vettori e puntatori. Assemblatori, linker, loader ed il simulatore SPIM. Tecniche di programmazione in assembler MIPS. Aritmetica dei calcolatori; rappresentazione dei numeri, unità aritmetico-logiche. Componenti elementari di un calcolatore: porte logiche, tabelle verità, equazioni logiche; logica combinatoria; temporizzazione e clock; memorie SRAM e DRAM. Gerarchie della memoria, cache, memoria virtuale. Costruzione dell'Unità Aritmetica. Architettura del processore MIPS.

M.T. Goodrich, R. Tamassia, Data structures and algorithms in Java,  (3rd edition), Wiley & Sons, 2004.

• cap. 1: Java programming [tutto, FI1]
• cap. 2: Object Oriented design [tutto]
• cap. 3: Analysis tools [tutto, FI1]
• cap. 4: Stacks, Queues, Recursion [tutto, FI1]
• cap. 5: Vectors, Lists and Sequences [FI1]; Iterators [5.5]
• cap. 6: Trees [tutto]
• cap. 7: Priority Queues [tutto]
• cap. 8: Maps and Dictionary [FI1 tutto, escluso open addressing e 8.4, 8.5.3]
• cap. 9: Search Trees [9.1, 9.2, 9.4]
• cap. 10: Disjoint Sets [10.6]
• cap. 12: Graphs [tutto]
 

D. A. Patterson, J. L. Hennessy, Computer Organization and Design: the hardware/software interface, JMorgan Kaufmann Pub., 2005.

• cap. 1: Tecnologia di un computer [ tutto ]
• cap. 2: Linguaggio assembly [ da 2.1 a 2.10, 2.13 e 2.15 ]
• cap. 3: Aritmetica per Computer [3.1, 3.2, 3.3, 3.4 (fino a Booth escluso)]
• cap. 5: Processore [ 5.1, 5.3, 5.4, 5.5(cenni) ]
• cap. 7: Gerarchie di memoria [7.1, 7.2, 7.4 fino a p. 514]
• app. A: Assembler e simulatore SPIM  [tutto escluso A.7 e A.8 ]
• app. B: Reti logiche [B.1, B.2, B.3, B.5 e B.6 (Esempi Verilog esclusi), B.7, B.8,
               B.9 (solo SRAMs)]

N.B. I capitoli indicati vanno studiati completamente. Alcune parti sono contrassegnate in modo speciale e vanno studiate nel seguente modo:

escluso = argomento non trattato a lezione; non costituisce argomento d'esame.

Fi1 = argomento trattato nel corso di Fondamenti di Informatica I e dato per noto per il corso di Fondamenti di Informatica II.  Da ristudiare, se dimenticato o studiato insufficientemente.

 

 

Anno accademico 2003-2004

 

Algoritmi e strutture dati. Progettazione ed analisi di algoritmi e strutture dati. Algoritmi di bilanciamento in alberi di ricerca: alberi AVL, alberi 2-4. Code con priorità. Grafi. Algoritmi di attraversamento: BFS e DFS. Ordinamento topologico. Alberi di copertura minimali: algoritmi di Kruskal e Prim. Cammini minimi ad origine singola: algoritmo di Dijkstra. Chiusura transitiva di un grafo orientato. Stringhe. Alberi Trie e codice di Huffman. Tecniche di realizzazione mediante programmazione orientata agli oggetti in Java.
Architettura degli elaboratori. Introduzione all’architettura dei calcolatori con riferimento al processore MIPS. Operazioni svolte dall’hardware della macchina, istruzioni per prendere decisioni, gestione delle procedure, metodi di indirizzamento, vettori e puntatori. Assemblatori, linker, loader ed il simulatore SPIM. Tecniche di programmazione in assembler MIPS. Aritmetica dei calcolatori; rappresentazione dei numeri, unità aritmetico-logiche. Componenti elementari di un calcolatore: porte logiche, tabelle verità, equazioni logiche; logica combinatoria; temporizzazione e clock; memorie SRAM e DRAM. Gerarchie della memoria, cache, memoria virtuale.

M.T. Goodrich, R. Tamassia, Data structures and algorithms in Java,  (3rd edition), Wiley & Sons, 2004.

• cap. 1: Java programming [tutto, FI1]
• cap. 2: Object Oriented design [tutto]
• cap. 3: Analysis tools [tutto, FI1]
• cap. 4: Stacks, Queues, Recursion [tutto, FI1]
• cap. 5: Vectors, Lists and Sequences [FI1]; Iterators [5.5]
• cap. 6: Trees [tutto]
• cap. 7: Priority Queues [tutto]
• cap. 8: Maps and Dictionary [tutto, escluso open addressing e 8.4, 8.5.3]
• cap. 9: Search Trees [9.1, 9.2, 9.4]
• cap. 10: Disjoint Sets [10.5]
• cap. 11: Text processing [11.1, 11.3, 11.4]
• cap. 12: Graphs [tutto]
 

D. A. Patterson, J. L. Hennessy, Struttura organizzazione e progetto dei calcolatori, Jackson Libri, 1999.

• cap. 1: Tecnologia informatica e livelli di astrazione [leggere]
• cap. 3: Le istruzioni MIPS [tutto]
• cap. 4: L'aritmetica dei calcolatori [4.1, 4.2, 4.3, 4.4, 4.5, 4.6 fino ad algoritmo di Booth escluso, 4.8 fino a moltiplicazione esclusa]
• cap. 5: Il processore [tutto da 5.1 a 5.3; 5.4 fino a "Definizione dell'unità di controllo" esclusa]
• cap. 7: Gerarchie di memoria [tutto da 7.1 a 7.2; cenni a 7.3  (solo definizioni di set-associatività e completa associatività, e risultati sperimentali); 7.4 (solo definizioni relative alla memoria virtuale, prime 3 pagine del paragrafo)]
• Appendice A: Assemblatori, linker, simulatore SPIM [tutto]
• Appendice B: Logica digitale [tutto da B.1 a B.5 fino a DRAM escluse]
 

N.B. I capitoli indicati vanno studiati completamente. Alcune parti sono contrassegnate in modo speciale e vanno studiate nel seguente modo:

escluso = argomento non trattato a lezione; non costituisce argomento d'esame.

Fi1 = argomento trattato nel corso di Fondamenti di Informatica I e dato per noto per il corso di Fondamenti di Informatica II.  Da ristudiare, se dimenticato o studiato insufficientemente.

leggere = argomento accennato a lezione e/o utile complemento di quanto esposto a lezione. Da leggere.

 

 

Anno accademico 2002-2003

 

Algoritmi e strutture dati. Progettazione ed analisi di algoritmi e strutture dati. Algoritmi di bilanciamento in alberi di ricerca: alberi AVL, alberi 2-4 e alberi rosso neri. Code con priorità. Grafi. Algoritmi di attraversamento: BFS e DFS. Ordinamento topologico. Alberi di copertura minimali: algoritmi di Kruskal e Prim. Cammini minimi ad origine singola: algoritmo di Dijkstra. Chiusura transitiva di un grafo orientato. Stringhe: algoritmi di pattern matching. Alberi Trie e codice di Huffman. Tecniche di realizzazione mediante programmazione orientata agli oggetti in Java. Architettura degli elaboratori.
Introduzione all’architettura dei calcolatori con riferimento al processore MIPS. Operazioni svolte dall’hardware della macchina, istruzioni per prendere decisioni, gestione delle procedure, metodi di indirizzamento, vettori e puntatori. Assemblatori, linker, loader ed il simulatore SPIM. Tecniche di programmazione in assembler MIPS. Aritmetica dei calcolatori; rappresentazione dei numeri, unità aritmetico-logiche. Componenti elementari di un calcolatore: porte logiche, tabelle verità, equazioni logiche; logica combinatoria; temporizzazione e clock; memorie SRAM e DRAM. Gerarchie della memoria, cache, memoria virtuale. Gestione delle periferiche: bus, accesso diretto alla memoria (DMA). Tecniche di parallelismo temporale mediante pipelining.

 

Testi di riferimento

 
bullet

M.T. Goodrich, R. Tamassia, Data structures and algorithms in Java (2nd edition), Wiley & Sons, 2001 oppure (3rd edition), Wiley & Sons, 2004.

bullet

D. A. Patterson, J. L. Hennessy, Struttura organizzazione e progetto dei calcolatori, Jackson Libri, 1999.
 

bullet

Versione originale: D. A. Patterson, J. L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, Morgan Kaufmann; 2nd edition (August 1997)
 

 
 

Testi di consultazione

 
bullet

T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduction to Algorithms, MIT Press, Cambridge Ma., 2001 (edito anche in italiano).

bullet

A.S. Tanenbaum, Architettura dei computer, Prentice Hall – Utet, 2000