University Logo

Università
di Padova

Diploma in Ingegneria Informatica
Corso di Fondamenti di Informatica 2
2 Moduli

A.A. 2001/2002

Versione 1.17 18/01/2002


Programma-schema del corso

Qui di seguito trovate gli argomenti che verranno trattati in ciascun incontro, nella prima parte (1h30'), denominata per semplicità 'lezione', con il docente ufficiale in teleconferenza, nella seconda (1h45'), denominata per semplicità 'laboratorio', con il docente locale, nonché il programma dell'attività di studio personale, denominata 'studio', che è relativa al materiale trattato nella lezione immediatamente precedente. La seconda parte di ciascun incontro comprenderà anche la risposta, da parte del docente locale, ai quesiti e alle richieste di chiarimento posti dagli studenti in relazione al materiale della lezione appena terminata. Durante il laboratorio il docente locale interverrà, se necessario, con integrazioni sulla teoria, risposte a domande varie, e condurrà l'attività pratica. A tale scopo, per ciascun incontro il docente locale sceglierà dalla voce Laboratorio gli esercizi da sviluppare al calcolatore, proponendo e risolvendo eventualmente altri esercizi relativi alla materia da analizzare, in base alle esigenze della classe. Gli esercizi suggeriti nel programma sono quelli che appaiono più utili al consolidamento della teoria e come base per le realizzazioni pratiche: lo studente quindi si sforzerà a casa, PRIMA dell'incontro, di affrontarne il maggior numero possibile, in base al tempo a disposizione, assieme alla realizzazione in Java del pseudocodice ricavato dagli esercizi e problemi proposti. È CALDAMENTE suggerito allo studente di anticipare l'attività pratica a casa: a questo fine si suggerisce di installare nel proprio PC una versione aggiornata del JDK e della sua documentazione in linea (vedi software di supporto).

Alla fine dello studio della settimana lo studente potrà verificare se ha raggiunto gli obiettivi principali, svolgendo successivamente gli esercizi di verifica suggeriti (di alcuni viene fornita la soluzione). Alla fine di questa pagina si trova un riassunto delle pagine da studiare dal libro base di teoria [Good]. I temi qui elencati, sia per quanto riguarda le lezioni che i laboratori, vanno intesi come traccia di massima per mantenere un ritmo adeguato: durante lo svolgimento del corso potranno essere attuate dal docente e/o dai docenti locali tutte le correzioni che si rivelassero necessarie per il buon andamento del corso stesso.

Suddivisione temporale

Pagina principale Torna alla pagina principale


Calendario del corso (2 moduli)

Lezioni in teleconferenza e incontri con il docente locale (tot. n. 27):
1, 4, 8, 11, 15, 18, 22, 25, 29 ottobre 2001; 5, 8, 12, 15 novembre 2001; 3, 6, 10, 13, 17, 20 dicembre 2001; 7, 10, 14, 17, 21, 24, 28, 31 gennaio 2002
Le prove intermedie si terranno presso i centri locali nelle date 26 novembre 2001 e 28 gennaio 2002.



Settimana 1 (dal 01/10/01)

Lunedì 01/10/01 Incontro 1

Lezione a RO:

Laboratorio:

  1. Esplorazione degli strumenti di sviluppo: editor realj, compilatore javac, interpreti java e appletviewer
  2. Ciclo di produzione e collaudo di un'applicazione
  3. Prova di qualche semplice esempio (primi esempi tratti da [Arn], FI2.Examples.Point)
  4. Uso del tool javadoc
  5. Visita del sito del corso: http://linda.dei.unipd.it/fi2/

Studio:

  1. Analisi degli argomenti del primo seminario
  2. Uso delle convenzioni per i commenti nei programmi
  3. Contenuto del JDK ([Hor] Cap. 2)
  4. Iniziare il ripasso della sintassi di java ([Good] Cap. 1, [Hor] Cap. 3)

Giovedì 04/10/01 Incontro 2

Lezione a FL:

  • I metodi: prototipo/contratto
  • Sovraccaricamento (overloading) dei metodi e dei costruttori
  • Controllo della visibilità dei membri, i membri statici
  • La classe String, l'operatore '+'
  • Il costrutto array, array multidimensionali
  • Il metodo main come metodo di collaudo
  • Il metodo toString
  • Laboratorio:

    1. Analisi e collaudo dell'esempio FI2.Examples.Point
    2. Semplici esempi di classi con membri sia privati che pubblici e ripasso di Java (dichiarazioni, costrutti di controllo del flusso, espressioni complesse, ecc.)
    3. Generazione del javadoc degli esempi sviluppati

    Studio:

    1. Classi e oggetti: campi, controllo d'accesso (public, private), costruttori, metodi, overloading, membri statici ([Good] Parr. 1.1-1.4, [Hor] Cap. 4 fino a pag. 141, anche [Arn] 2.1-2.9 )
    2. Metodi main e toString ([Good] Par. 1.2, [Hor] Cap. 4 pag. 155, Cap. 5 pag. 219, anche [Arn] 2.1-2.9)
    3. La classe FI2.Examples.Point e l'esempio di [Good] Par. 1.7
    4. Esercizi: [Arn] 1.4, 1.5, 1.6, 1.9, 1.11, 2.1-2.4, 2.6, 2.8, 2.10, 2.12-2.15
      [Good] R1.1..1.3, R1.5..1.6, R1.8..1.9, R1.13..1.14, C1.2..1.3, C1.5..1.7, P1.1

    Indice Torna all'indice temporale

    Settimana 2 (dal 08/10/01)

    Lunedì 08/10/01 Incontro 3

    Lezione a TV:

    Studio:

    1. Classi estese, ridefinizione di membri, super, final, Object, clonazione di classi, eccezioni ([Good] Parr. 2.1-2.3, [Hor] Parr. 5.1-5.2 5.2, 5.5, anche [Arn] 1.10, 1.12, 2.3, 3.1-3.6, 3.8-3.10)
    2. Classi e metodi astratti ([Good] Par. 2.4, [Hor] Par. 5.1, anche [Arn] 3.7)
    3. Classi interne ([Hor] Par. 6.2, vedi anche argomento supplementare)
    4. Interfacce ([Good] Par. 2.4, [Hor] Par. 6.1, anche [Arn] 1.11, 4.1)
    5. Ereditarietà multipla e realizzazione di interfacce ([Arn] 4.2-4.6)
    6. Analisi degli esempi FI2.Examples.Pixel e FI2.Examples.Rect
    7. Esercizi: [Arn] 3.5, 3.8, 3.9
      [Good] R2.6, R2.8..2.10, C2.4, P2.1

    Laboratorio:

    1. Collaudo della soluzione degli esercizi 1.5 e 1.6 di [Arn] sviluppata a casa
    2. Collaudo di esempi di [Hor] cap. 4 (Calendar, Employee)
    3. Collaudo delle soluzioni di alcuni degli esercizi proposti

    Giovedì 11/10/01 Incontro 4

    Lezione a PD:

    Laboratorio:

    1. Analisi e collaudo dell'esempio FI2.Examples.PointE
    2. Sperimentazioni varie con classi estensibili
    3. Verifica, mediante semplici esempi con classi estese, anche tratti da [Arn] e da [Hor] Capp. 5 e 6, delle regole di visibilità discendenti dall'attributo protected, dal mascheramento e ridefinizione, dalla gerarchia dei costruttori
    4. Collaudo con gli esempi FI2.Examples.Pixel e FI2.Examples.Rect

    Studio:

    1. Completare lettura e/o ripasso di [Good] Capp. 1-2 e [Hor] Capp. 3-4 (oppure [Arn] 5 e 6) (INCLUDENDO le parti riferentesi ad ereditarietà tra classi)
    2. Ripasso della teoria sulle classi estese (vedi incontro A)
    3. Analisi dei concetti di polimorfismo, specializzazione e generalizzazione, gerarchia delle classi estese, isA e hasA ([Good] Par. 2.2, [Hor] Par. 5.1, anche [Arn] 3.9, 3.10)
    4. Gestione di stringhe ([Hor] Par. 3.7, anche [Arn] cap. 8)
    5. Analisi di alcune classi di utilità: BitSet ([Arn] 12.1) Vector ([Arn] 12.4, vedi anche [Hor] Par. 5.2 pag. 230), Date e GregorianCalendar ([Hor] Par. 4.2 pag. 127), Random, Observer/Observable ([Arn] 12.9), StringTokenizer ([Arn] 12.10-12.12, [Hor] Par. 12.4 pag. 768) e delle classi wrapper ([Arn] Parr. 13.3-13.9 [Hor] Par. 5.2 pag. 237)
    6. Esercizi: [Arn] 3.6, 3.7, 3.8, 3.9, 3.12

    Indice Torna all'indice temporale

    Settimana 3 (dal 15/10/01)

    Lunedì 15/10/01 Incontro 5

    Lezione a RO:

    Laboratorio:

    1. Analisi e collaudo di qualche insieme di classi estese tratto dalla libreria sorgente, dal sorgente accluso con i testi e/o qualche esempio in rete
    2. Ulteriore collaudo degli esercizi proposti
    3. Verifica del concetto di polimorfismo con semplici esempi di chiamata a metodi di classi derivate attraverso riferimenti a superclassi

    Studio:

    1. Continua analisi di alcune classi di utilità (vedi settimana 2) e delle classi wrapper
    2. Il concetto di package, regole di visibilità ([Good] Par. 1.8, [Hor] Par. 4.7, anche [Arn] cap. 8)
    3. Gestione dei file in Java: prima analisi degli stream ([Good] Par. 1.6, [Hor] Parr. 12.1-12.2, anche [Arn] cap. 11)
    4. Panoramica su C++ ([Hor] vedi note su C++ distribuite nei Capp. 2-6)

    Giovedì 18/10/01 Incontro 6

    Lezione a PD:

    Laboratorio:

    1. Primi esempi di utilizzazione di package
    2. Primi esempi di utilizzazione di stream
    3. Analizzare e collaudare l'esempio FI2.Util.BinaryMat

    Studio:

    1. Strutture di dati e algoritmi ([Good] 3.1)
    2. Tempo di esecuzione ([Good] 3.1)
    3. Pseudocodice e relazioni matematiche ([Good] 3.2, 3.3)
    4. Analisi degli algoritmi ([Good] 3.5, 3.6, 3.7, [Cor] 2.1)
    5. Le interfacce FI2.Set.InspectableContainer e FI2.Set.Container
    6. Il problema dell'ordinamento
    7. Esercizi: [Good] R3.1..3.3, R3.6..3.8, R3.20..3.24, C3.1, C3.7, C3.9, C3.14, C3.20

    Indice Torna all'indice temporale

    Settimana 4 (dal 22/10/01)

    Lunedì 22/10/01 Incontro 7

    Lezione a PD:

    Laboratorio:

    1. Arricchimento degli esempi realizzati con funzioni di valutazione del tempo di esecuzione (vedi anche [Arn] 3.10) in dipendenza del numero di elementi
    2. Completamento dell'analisi complessiva di Java
    3. Analisi e collaudo dell'esempio FI2.Stream.FileMem (memoria virtuale)
    4. L'interfaccia FI2.Set.Set: analisi iniziale (vedi anche [Good] 10.2)

    Studio:

    1. Ricerca binaria ([Good] 8.5.1)
    2. La struttura di dati stack ([Good] 4.1, [Cor] 11.1)
    3. L'interfaccia FI2.Linear.Stack
    4. La realizzazione con vettore FI2.Linear.ArrayStack
    5. La struttura dati queue ([Good] 4.2.1..4.2.2, [Cor] 11.1)
    6. Allocazione dinamica in java ([Good] 4.2.3)
    7. L'interfaccia FI2.Linear.Queue
    8. Realizzazione di queue con vettore circolare FI2.Linear.ArrayQueue
    9. Esercizi: R4.1, R4.2, R4.6..R4.7, C4.2, C4.6, C4.12, P4.4, P4.9

    Giovedì 25/10/01 Incontro 8

    Lezione a PD:

    Laboratorio:

    1. Uso di vettori in java, la classe FI2.Set.ArraySet
    2. Sperimentazione con le classi analizzate per set, stack e queue

    Studio:

    1. { Realizzazione di un insieme generico in forma di classe Set mediante la classe BitSet ([Arn] 12.1) e la classe Vector ([Arn] 12.4) }
    2. Lista concatenata ([Good] 4.3)
    3. Realizzazione di stack e di queue mediante lista concatenata (semplice) (FI2.Linear.LinkedStack, FI2.Linear.LinkedQueue)
    4. Coda doppia (deque) ([Good] 4.4.1)
    5. Realizzazione di stack e queue con deque ([Good] 4.4.2)
    6. Realizzazione di deque mediante liste doppiamente collegate ([Good] 4.4.3)
    7. La tecnica dell'adattatore ([Good] 4.4.4)
    8. Esercizi: R5.2, R5.14, C5.1..C5.2, C5.5

    Indice Torna all'indice temporale

    Settimana 5 (dal 29/10/01)

    Lunedì 29/10/01 Incontro 9

    Lezione a PD:

    Laboratorio:

    1. Collaudo degli esempi analizzati
    2. Realizzazione di deque mediante lista doppiamente collegata: sviluppo di un progetto complessivo a partire dalle specifiche di interfaccia e con suddivisione dei compiti, debugging e collaudo

    Studio:

    1. Strutture di dati fondamentali: la sequenza indicizzata (ranked) ([Good] 5.1)
    2. L'interfaccia FI2.Linear.Vector
    3. Realizzazione mediante vettore espandibile FI2.Linear.ArrayVector
    4. Il posizionatore (interfaccia FI2.Set.Position) e le operazioni node-based ([Good] 5.2.1, 5.2.2)
    5. Il contenitore con posizioni (interfaccia FI2.Set.PositionalContainer)

    Indice Torna all'indice temporale

    Settimana 6 (dal 05/11/01)

    Lunedì 05/11/01 Incontro 10

    Lezione a PD:

    Laboratorio:

    1. Proseguimento del progetto comune su coda doppia concatenata
    2. Collaudo delle interfacce e classi analizzate
    3. Modifica della classe FI2.Linear.ArrayQueue in forma di classe-adattatore per realizzare un queue basandosi su un oggetto di classe FI2.Linear.ArrayVector gestito come sequenza circolare; relativo collaudo

    Studio:

    1. La sequenza con posizionatori (interfaccia FI2.Linear.List) ([Good] 5.2.3)
    2. Il posizionatore per sequenze indicizzabili (classi FI2.Linear.ListPosition e FI2.Linear.GenericPosition) (far riferimento a [Good] 5.3.3)
    3. La classe FI2.Linear.ArrayList
    4. Realizzazione di List mediante lista concatenata doppia ([Good] 5.2.4)
    5. La classe FI2.Linear.SLList
    6. L'interfaccia FI2.Linear.Sequence ([Good] 5.3)
    7. La classe FI2.Linear.ArraySequence
    8. L'esempio di bubble-sort (FI2.Sorting.SeqBubbleSort) ([Good] 5.4)
    9. Iteratori ([Good] 5.5)
    10. Esercizi: R5.4, R5.6, R5.9, R5.11, R5.12, C5.10, C5.12, C5.14, C5.22, P5.2, P5.5

    Giovedì 08/11/01 Incontro 11

    Lezione a PD:

    Laboratorio:

    1. Collaudo delle classi analizzate
    2. Si prosegue il progetto comune realizzando dapprima un PositionalSequence e poi un Sequence mediante lista concatenata doppia

    Studio:

    1. Introduzione ad AWT, applet e gestione eventi ([Hor] Par. 7.1)
    2. L'albero dei componenti di AWT ([Hor] Par. 7.4)
    3. Il layout ([Hor] Par. 9.2)

    Indice Torna all'indice temporale

    Settimana 7 (dal 12/11/01)

    Lunedì 12/11/01 Incontro 12

    Lezione a PD:

    Laboratorio:

    1. Prova di qualche semplice esempio con AWT tratto da [Hor]
    2. Analisi e collaudo degli esempi FI2.Gui.MenuFrame e FI2.Gui.AppletDiag
    3. Provare la definizione degli ascoltatori mediante classi interne
    4. Analisi e collaudo degli esempi FI2.Gui.DialogFrame
    5. Analisi e collaudo degli esempi FI2.Gui.ThreePages, FI2.Gui.Ball e FI2.Gui.GuiComps sia come applicazioni che come applet

    Studio:

    1. La gestione degli Eventi ([Hor] Capp. 8.1-8.4)
    2. Grafica e animazione ([Hor] Parr. 7.5-7.13)
    3. Introduzione ai thread

    Giovedì 15/11/01 Incontro 13

    Lezione a PD:

    Laboratorio:

    1. Altre sperimentazioni con interfaccia grafica
    2. Gestione più sofisticata di eventi
    3. Analisi e collaudo di FI2.Arnold.PingPong, FI2.Gui.Ball2 e FI2.Gui.AppletThreadDiag sia come applicazioni che come applet
    4. Analisi e collaudo di FI2.Gui.AppletThUpdate sia come applicazioni che come applet

    Studio:

    1. L'albero come ADT (interfaccia FI2.Tree.InspectableTree) ([Good] 6.1)
    2. Algoritmi base su alberi (classe FI2.Tree.TreeBasicAlgo) ([Good] 6.2)
    3. Ripasso e preparazione per la prova intermedia

    Indice Torna all'indice temporale

    Lunedì 26/11/01 Prima prova intermedia

    Indice Torna all'indice temporale

    Settimana 8 (dal 03/12/01)

    Lunedì 03/12/01 Incontro 14

    Lezione a PD:

    Laboratorio:

    1. Qualche esercizio intoduttivo con gli alberi
    2. Esercizi con alberi, alberi binari, visite, ecc.

    Studio:

    1. Alberi binari (interfaccia FI2.Tree.InspectableBinaryTree e FI2.Tree.ExpandBinaryTree) ([Good] 6.3.1..6.3.3)
    2. Il metodo template (classe FI2.Tree.EulerTour) ([Good] 6.3.4)
    3. Esempio di utilizzazione con la classe FI2.Tree.EvaluateExpressionTour
    4. Esercizi: R6.1..R6.3, R6.6, R6.11..6.17, R6.23, C6.1, C6.3..C6.4, C6.7..C6.12, C6.23..C6.24

    Giovedì 06/12/01 Incontro 15

    Lezione a PD:

    Laboratorio:

    1. Collaudo delle classi analizzate
    2. Sperimentazione con alcune applicazioni di alberi binari utilizzando le classi di FI2.Tree
    3. Suggerimenti per modificare l'applet che disegna gli alberi generandoli casualmente in un'applicazione che disegna alberi forniti come parametro d'ingresso

    Studio:

    1. Realizzazione di albero binario con sequenza (classe FI2.Tree.SequenceBinaryTree) ([Good] 6.4.1)
    2. Realizzazione di albero binario concatenata (classe FI2.Tree.LinkedBinaryTree) ([Good] 6.4.2)
    3. Rappresentazione di alberi non binari ([Good] 6.4.3, 6.4.4)
    4. Rapida analisi dell'applet che disegna gli alberi (applet FI2.Gui.InorderDrawApplet)
    5. Esercizi: R6.7..R6.8, R6.24, C6.14..C6.15, C6.17, (P6.8)

    Indice Torna all'indice temporale

    Settimana 9 (dal 10/12/01)

    Lunedì 10/12/01 Incontro 16

    Lezione a PD:

    Laboratorio:

    1. Completamento di prove e collaudi precedenti
    2. Collaudo delle classi analizzate

    Studio:

    1. La coda a priorità come ADT (interfacce FI2.Set.InspectableKeyBasedContainer e FI2.Linear.PriorityQueue) ([Good] 7.1.1..7.1.3)
    2. Compositore e comparatore (classi FI2.Set.Item e FI2.Util.Comparator) ([Good] 7.1.4)
    3. Realizzazione di coda a priorità con sequenza non ordinata e ordinata (classe FI2.Linear.ArraySortedSequencePriorityQueue) ([Good] 7.2.1, 7.2.2)
    4. Ordinamenti selezione e inserzione ([Good] 7.2.3)
    5. Esercizi: R7.2..R7.3, R7.15, C7.1, C7.2

    Giovedì 13/12/01 Incontro 17

    Lezione a PD:

    Laboratorio:

    1. Realizzazione di un'applicazione di coda a priorità (ad esempio gestione di una coda di task in un sistema operativo con possibilità di rimozione di un task per morte prematura e di modifica 'in corsa' della priorità): definizione dei metodi
    2. Assegnazione del progetto

    Studio:

    1. Coda a priorità mediante heap (classi FI2.Linear.HeapDistrib, FI2.Linear.HeapPriorityQueue) ([Good] 7.3.1, 7.3.2)
    2. Ordinamento heap ([Good] 7.3.3)
    3. Costruzione bottom-up dello heap ([Good] 7.3.4)
    4. Realizzazioni di coda a priorità con heap (classi FI2.Linear.SeqHeapPriorityQueue e FI2.Linear.LinkedHeapPriorityQueue)
    5. Il riferimento (locator) (interfaccia FI2.Set.Locator) ([Good] 7.4.0, 7.4.1)
    6. Una coda a priorità con riferimenti (interfaccia FI2.Linear.PriorityQueue2, classi FI2.Set.Item2, FI2.Linear.Item2, FI2.Linear.ArraySortedSequencePriorityQueue2) ([Good] 7.4.2)
    7. Esercizi: R7.7, R7.12..R7.13, R7.17..R7.18, C7.4, C7.7..C7.8, C7.10, P7.1

    Indice Torna all'indice temporale

    Settimana 10 (dal 17/12/01)

    Lunedì 17/12/01 Incontro 18

    Lezione a PD:

    Laboratorio:

    1. Collaudo delle classi analizzate
    2. Realizzazione di un'applicazione di coda a priorità: realizzazione della classe come adattatore generico (abstract)
    3. Confronto sui tempi di esecuzione di alcuni algoritmi di ordinamento (vedi classe FI2.Sorting.ArraySort)
    4. Realizzazione di un'applicazione di coda a priorità: realizzazione della classe come adattatore specifico mediante heap in forma concatenata

    Studio:

    1. Il dizionario come ADT (interfacce FI2.Dictionary.Dictionary e FI2.Dictionary.OrderedDictionary) ([Good] 8.0, 8.1)
    2. Realizzazione di un dizionario mediante sequenza (classi FI2.Dictionary.OrderedArraySeq e FI2.Dictionary.UnOrderedSLList) ([Good] 8.2, 8.4, 8.5)
    3. Tabella hash (classe FI2.Dictionary.SeparateChainingHashTable) ([Good] 8.3)
    4. Cenni a dizionario con riferimenti ([Good] 8.7)
    5. Esercizi: R8.1..R8.4, R8.9, R812..R8.13, C8.4, C8.9..C8.10, P8.1..P8.2

    Giovedì 20/12/01 Incontro 19

    Lezione a PD:

    Laboratorio:

    1. Collaudo delle classi analizzate
    2. Realizzazioni di applicazioni di dizionari
    3. Approfondimenti sull'argomento dell'ordinamento

    Studio:

    1. Realizzazione di un dizionario mediante albero binario di ricerca (classe FI2.Dictionary.SimpleBinarySearchTree) ([Good] 9.0, 9.1)
    2. Ordinamento merge ([Good] 10.1.1, 10.1.2, 10.1.3)
    3. L'insieme come ADT e merging ([Good] 10.2)
    4. Completare analisi delle classi di FI2.Set.*
    5. Ordinamento quick ([Good] 10.3)
    6. Confronto tra algoritmi di ordinamento (classe FI2.Sorting.ArraySort)
    7. Ordinamento bucket e radix ([Good] 10.5)
    8. Esercizi: R9.1..R9.3, C9.1..C9.2, R10.2, R10.5, R10.13..R10.15, C10.1, C10.2, C10.9, C10.14, C10.16, C10.21, P10.8

    Indice Torna all'indice temporale

    Settimana 11 (dal 7/1/02)

    Lunedì 7/1/02 Incontro 20

    Lezione a PD:

    Laboratorio:

    1. Collaudo delle classi analizzate
    2. Chiarimenti sui progetti assegnati

    Studio:

    1. Gestione delle stringhe ([Good] 11.1, [Hor] Par. 3.7)
    2. Pattern matching (classe FI2.String.BruteForceMatch) ([Good] 11.2.0, 11.2.1)
    3. L'algoritmo KMP (classe FI2.String.KMPMatch) ([Good] 11.2.3)
    4. Espressioni regolari e DFA (classe FI2.Stream.ReduceSpace) ([Lex])
    5. Esercizi: R11.1..R11.2, R11.4, R11.7, C11.3, (P11.1)

    Giovedì 10/1/02 Incontro 21

    Lezione a TV:

    Laboratorio:

    1. Collaudo delle classi analizzate
    2. Chiarimenti sui progetti assegnati

    Studio:

    1. Analizzatori lessicali e sintattici (classe FI2.String.Cl0Lex) ([Moro])
    2. Analisi della grammatica per espressioni (classe FI2.Tree.Calculator) ([Moro])
    3. Il codice di Huffman (classe FI2.Tree.Huffman) ([Good] 12.4.3)
    4. Esercizi: R11.12, P11.4

    Indice Torna all'indice temporale

    Settimana 12 (dal 14/1/02)

    Lunedì 14/1/02 Incontro 22

    Lezione a FL:

    Laboratorio:

    1. Sperimentazioni con analisi lessicale e Huffman
    2. Collaudo delle classi analizzate
    3. Collaudo dei progetti

    Studio:

    1. Ripasso

    Giovedì 17/1/02 Incontro 23

    Lezione a PD:

    Laboratorio:

    1. Collaudo delle classi analizzate
    2. Collaudo dei progetti

    Studio:

    1. La compressione ([LZW])
    2. Sicurezza, chiavi pubbliche e private, la firma digitale ([Cri])

    Indice Torna all'indice temporale

    Settimana 13 (dal 21/1/02)

    Lunedì 21/1/02 Incontro 24

    Lezione a PD:

    Laboratorio:

    1. Collaudo delle classi analizzate
    2. Collaudo dei progetti
    3. Consegna del progetto

    Studio:

    1. Il grafo come ADT (interfacce FI2.Graph.InspectableGraph, FI2.Graph.Graph, FI2.Graph.Vertex e FI2.Graph.Edge) ([Good] 12.1, 12.2)
    2. Visite (classe FI2.Graph.DFS) ([Good] 12.3)
    3. Grafi orientati ([Good] 12.4.0, 12.4.1, 12.4.2)
    4. DAG ([Good] 12.4.3)
    5. Grafi pesati ([Good] 12.5)
    6. Esercizi: R12.1..R12.8, R12.11, C12.2..C12.5, C12.7, C12.12

    Giovedì 24/10/01 Incontro 25

    Lezione a TV:

    Laboratorio:

    1. Collaudo dei progetti
    2. Consegna del progetto

    Studio:

    1. Ripasso e preparazione alla seconda prova intermedia

    Indice Torna all'indice temporale

    Settimana 14 (dal 28/1/02)

    Lunedì 28/1/02 Incontro 26 Seconda prova intermedia (presso i centri locali)

    Giovedì 31/1/02 Incontro 27

    Lezione a FL (??):

    Laboratorio:

    1. Collaudo dei progetti
    2. Consegna del progetto

    Indice Torna all'indice temporale


    Riassunto delle pagine da studiare da [Good]

    Capitolo 1 (Java Programming)
    Tutto
    Capitolo 2 (Object-Oriented Design)
    Tutto
    Capitolo 3 (Analysis Tools)
    98..103 (3.2.2 compreso), 111..125
    Capitolo 4 (Stacks, Queues, and Deques)
    136..173 (4.4.4 compreso)
    Capitolo 5 (Vectors, Lists, and Sequences)
    Tutto
    Capitolo 6 (Trees)
    Tutto
    Capitolo 7 (Priority Queues)
    Tutto (il par. 7.3.5 si può leggere)
    Capitolo 8 (Dictionaries)
    334..361, 370(da 8.7)..372
    Capitolo 9 (Search Trees)
    380..392
    Capitolo 10 (Sorting, Sets, and Selection)
    448..486 (10.7.2 compreso)
    Capitolo 11 (Text Processing)
    496..502 (11.2.1 compreso), 507(da 11.2.3)..511, 523..525
    Capitolo 12 (Graphs)
    538..574 (12.4.1 compreso), 577(da 12.4.3)..581 (12.4.3 compreso), 584..585
    Pagina principale Torna alla pagina principale