|
Università
di Padova
|
Diploma in Ingegneria Informatica
Corso di Fondamenti di Informatica 2
2 Moduli
|
A.A. 2001/2002
Versione 1.0 30/09/2001
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
N.B. Si ricorda che i giorni previsti per gli incontri sono
il lunedì e il giovedì e che la lezione si svolge (di norma)
dalle 14.30 alle 16.00.
Per ogni lezione sono forniti:
- Le slide in forma navigabile (Slide nav)
- La versione zipped della forma navigabile (Slide nav zip)
- Tre diapositive per pagina in formato PDF (<numero lezione>_3)
- Sei diapositive per pagina in formato PDF (<numero lezione>_6)
Per la visualizzazione e stampa dal formato PDF è necessaria l'installazione di:
Acrobat Reader.
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:
- Presentazione del corso
- Modalità d'esame
- Ciclo di vita del software
- Incapsulamento ed astrazione dei dati
- Programmazione per tipi di dati astratti, vantaggi
- I tipi predefiniti
- Decomposizione algoritmica e decomposizione object-oriented
- I tipi definiti dall'utente, il costrutto class
- UML (Uniform Modeling Language),
convenzioni di scrittura del sorgente
- Un esempio con la classe Point
- Ripasso della sintassi di Java: controllo del flusso, operatori particolari
Laboratorio:
- Esplorazione degli strumenti di sviluppo: editor realj,
compilatore javac,
interpreti java e appletviewer
- Ciclo di produzione e collaudo di un'applicazione
- Prova di qualche semplice esempio (primi esempi tratti da [Arn],
FI2.Examples.Point)
- Uso del tool javadoc
- Visita del sito del corso: http://linda.dei.unipd.it/fi2/
Studio:
- Analisi degli argomenti del primo seminario
- Uso delle convenzioni per i commenti nei programmi
- Contenuto del JDK ([Hor] Cap. 2)
- 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:
- Analisi e collaudo dell'esempio FI2.Examples.Point
- Semplici esempi di classi con membri sia privati che pubblici
e ripasso di Java (dichiarazioni, costrutti di controllo del flusso,
espressioni complesse, ecc.)
- Generazione del javadoc degli esempi sviluppati
Studio:
- 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 )
- Metodi main e toString ([Good] Par. 1.2, [Hor] Cap. 4 pag. 155,
Cap. 5 pag. 219, anche [Arn] 2.1-2.9)
- La classe FI2.Examples.Point e l'esempio di [Good] Par. 1.7
- 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
Torna all'indice temporale
Settimana 2 (dal 08/10/01)
Lunedì 08/10/01 Incontro 3
Lezione a TV:
- Programmazione object-oriented: i concetti di ereditarietà
e poliformismo, casting
- Costruttori di classi derivate
- L'attributo protected
- Mascheramento di membri attraverso ridefinizione, l'attributo final,
il metodo finalize
- Riferimento ai membri ereditati, la parola chiave super
- La classe Object, il metodo equals
- La ridefinizione del metodo toString
- Le classi wrapper
- L'esempio Pixel
- Introduzione alle classi interne
Studio:
- 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)
- Classi e metodi astratti ([Good] Par. 2.4, [Hor] Par. 5.1, anche [Arn] 3.7)
- Classi interne ([Hor] Par. 6.2,
vedi anche argomento supplementare)
- Interfacce ([Good] Par. 2.4, [Hor] Par. 6.1, anche [Arn] 1.11, 4.1)
- Ereditarietà multipla e realizzazione di interfacce ([Arn] 4.2-4.6)
- Analisi degli esempi FI2.Examples.Pixel e FI2.Examples.Rect
- Esercizi: [Arn] 3.5, 3.8, 3.9
[Good] R2.6, R2.8..2.10, C2.4, P2.1
Laboratorio:
- Collaudo della soluzione degli esercizi 1.5 e 1.6 di [Arn] sviluppata
a casa
- Collaudo di esempi di [Hor] cap. 4 (Calendar, Employee)
- Collaudo delle soluzioni di alcuni degli esercizi proposti
Giovedì 11/10/01 Incontro 4
Lezione a PD:
- Progetto di classi estese, le semantiche isA, hasA e
useA, l'esempio di Rect
- Clonazione di classi
- Le eccezioni
- Classi astratte e interfacce, l'interfaccia Enumeration
- Ereditarietà multipla in Java
Laboratorio:
- Analisi e collaudo dell'esempio FI2.Examples.PointE
- Sperimentazioni varie con classi estensibili
- 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
- Collaudo con gli esempi FI2.Examples.Pixel e FI2.Examples.Rect
Studio:
- 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)
- Ripasso della teoria sulle classi estese (vedi incontro A)
- 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)
- Gestione di stringhe ([Hor] Par. 3.7, anche [Arn] cap. 8)
- 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)
- Esercizi: [Arn] 3.6, 3.7, 3.8, 3.9, 3.12
Torna all'indice temporale
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
Torna alla pagina principale