Fondamenti di Informatica


PROGRAMMA D'ESAME A.A. 2008-2009

In questa sezione viene usato il simboli [Bro06] come riferimento al testo di Brookshear ed il simbolo [Hor07] come riferimento al testo di Horstmann.

[Bro06], Capitolo 1.
Rappresentazione dei dati e dell'informazione (interi, razionali, ecc.). Memoria centrale e di massa. Compressione dei dati.

[Bro06], Capitolo 2.
Elaborazione dei dati. Architettura del calcolatore. Linguaggio macchina.

[Bro06], Capitolo 3.
Introduzione ai sistemi operativi. Gestione dei processi. Sicurezza.

[Bro06], Capitolo 5.
Algoritmi e loro rappresentazione. Efficienza e correttezza.

[Bro06], Capitolo 6.
Linguaggi di programmazione. Programmazione procedurale e programmazione orientata agli oggetti.
Saltare: 6.6 e 6.7.

[Bro06], Capitolo 8.
Astrazioni sui dati. Liste, pile, code, alberi e loro implementazione.
Saltare: 8.6.

[Bro06], Capitolo 10.
Intelligenza artificiale. Alberi di ricerca ed euristiche.
Saltare: 10.5, 10.6, 10.7.

[Bro06], Capitolo 11.
Teoria della computabilità. Macchine di Turing e funzioni non computabili. Complessità dei problemi e classe NP.
Saltare: 11.6.

[Hor07], Capitolo 1.
Il processo di compilazione e la Java virtual machine.

[Hor07], Capitolo 2.
Tipi di dati fondamentali, nozioni di variabile e assegnazione. Oggetti, classi e metodi; parametri espliciti ed impliciti. Metodi d'accesso e metodi modificatori; riferimenti ad oggetti.
Saltare: 2.11, 2.12, 2.13.

[Hor07], Capitolo 3.
Scatole nere e progettazione classi; interfaccia pubblica. Campi d'esemplare (variabili d'istanza), variabili locali e variabili parametro. Metodo costruttore.
Saltare 3.9.

[Hor07], Capitolo 4.
Tipi numerici base (int, double, char, boolean, etc.) e operatori relativi. Conversioni; costanti; metodi statici. Classe String e lettura dati in ingresso.

[Hor07], Capitolo 5.
Istruzioni di ramificazione e operatori logici. Confronto tra dati primitivi ed oggetti. Il riferimento null. Copertura del Collaudo.

[Hor07], Capitolo 6.
Istruzioni di iterazione. Cicli annidati e valori sentinella. La classe Random.
Saltare: 6.6, 6.7.

[Hor07], Capitolo 7.
Array e classe ArrayList: tutti i metodi associati. Involucri e autoimpacchettamento. Ciclo for generalizzato. Semplici algoritmi per la gestione dei vettori (contare, trova valore e massimo/minimo). Array a due dimensioni. Copiare array.
Saltare: 7.8.

[Hor07], Capitolo 8.
Scegliere le classi; coesione ed accoppiamento. Classi immutabili ed effetti collaterali. Chiamata con call by value. Precondizioni e postcondizioni; variabili e metodi statici; ambito di visibilità di metodo e di variabile.
Saltare: 8.5, 8.9, 8.10.

[Hor07], Capitolo 10.
Gerarchie di ereditarietà. Ereditarietà e riscrittura di metodi e sottoclassi. Casting tra super-classe e sotto-classe. Polimorfismo. La classe Object ed i suoi metodi.
Saltare: argomenti avanzati 10.1, 10.7, da argomenti avanzati 10.6 sino alla fine del capitolo.

[Hor07], Capitolo 11.
Leggere e scrivere file di testo [15.1]. Gerarchia delle eccezioni; eccezioni controllate e non controllate. Le clausole try, catch e finally. Progettazione di eccezioni.

[Hor07], Capitolo 12.
Nozione di ricorsione; metodi ausiliari ricorsivi.
Saltare: da pag. 506 sino alla fine del capitolo.

[Hor07], Capitolo 13.
Ordinamento per selezione, inserimento, merge e quicksort. Prestazioni e notazione O-grande. Ricerca lineare e binaria. Ordinare dati reali.
Saltare: da pag. 549 sino alla fine del capitolo.





PROGRAMMA D'ESAME A.A. 2007-2008
(programma per il precedente ordinamento)

I riferimenti riportati riguardano il testo adottato (Horstmann, quarta edizione); i riferimenti tra parentesi quadre riguardano la vecchia edizione (terza edizione). Gli argomenti relativi al collaudo e correzione di errori presenti nella nuova edizione ma non in quella vecchia possono essere scaricati dall'indirizzo
http://www.apogeonline.com/2005/libri/88-503-2318-2/ebook/pdf/collaudo_2318.pdf
Tutti i capitoli non menzionati non sono parte del programma svolto.

Rappresentazione dell'informazione (dispensa scaricabile dal sito).
Cambiamenti di base per interi e frazionari. Rappresentazione numeri interi (modulo e segno, complemento a 2 e eccesso k), numeri in virgola mobile (standard IEEE) e caratteri (codici ASCII e Unicode).

Capitolo 1: Introduzione.
Architettura del computer; il processo di compilazione e la Java virtual machine.

Capitolo 2: Utilizzare oggetti.
Tipi di dati fondamentali, nozioni di variabile e assegnazione. Oggetti, classi e metodi; parametri espliciti ed impliciti. Metodi d'accesso e metodi modificatori; riferimenti ad oggetti. Saltare 2.11, 2.12 e 2.13.

Capitolo 3: Realizzare classi.
Scatole nere e progettazione classi; interfaccia pubblica. Campi d'esemplare (variabili d'istanza), variabili locali e variabili parametro. Metodo costruttore. Saltare 3.9.

Capitolo 4: Tipi di dati fondamentali.
Tipi numerici base (int, double, char, boolean, etc.) e operatori relativi. Conversioni; costanti; metodi statici. Classe String e lettura dati in ingresso.

Capitolo 5 [6]: Decisioni.
Istruzioni di ramificazione e operatori logici. Confronto tra dati primitivi ed oggetti. Il riferimento null. Copertura del Collaudo.

Capitolo 6 [7]: Iterazioni.
Istruzioni di iterazione. Cicli annidati e valori sentinella. Saltare argomenti avanzati 6.4 e 6.5 [7.4 e 7.5]. Utilizzo del debugger.

Capitolo 7 [8]: Vettori ed array.
Array e classe ArrayList: tutti i metodi associati. Involucri e autoimpacchettamento. Ciclo for generalizzato. Semplici algoritmi per la gestione dei vettori (contare, trova valore e massimo/minimo). Array a due dimensioni. Copiare array. Saltare argomenti avanzati 7.3 [8.3].

Capitolo 8 [9]: Progettazione classi.
Scegliere le classi; coesione ed accoppiamento. Classi immutabili ed effetti collaterali. Chiamata con call by value. Precondizioni e postcondizioni; variabili e metodi statici; ambito di visibilità di metodo e di variabile. Saltare argomenti avanzati 8.2 [9.2] e saltare da pg. 332 [320] sino alla fine del capitolo.

Capitolo 9 [10]: Interfacce e polimorfismo.
Interfacce e nozione di firma. Conversioni tra classe e interfaccia; early e late binding. Polimorfismo. Saltare dalla sezione 9.4 [10.4] compresa sino alla fine del capitolo.

Capitolo 10 [12]: Ereditarietà.
Gerarchie di ereditarietà. Ereditarietà e riscrittura di metodi e sottoclassi. Casting tra super-classe e sotto-classe. Polimorfismo. Saltare da pg. 421 [411] a pg. 426 [416]. La classe Object ed i suoi metodi. Saltare da pagina 433 [422] sino alla fine del capitolo.

Capitolo 11 [14]: Ingresso/uscita ed eccezioni.
Leggere e scrivere file di testo [15.1]. Gerarchia delle eccezioni; eccezioni controllate e non controllate. Le clausole try, catch e finally. Progettazione di eccezioni.

Capitolo 12 [16]: Ricorsione.
Nozione di ricorsione; metodi ausiliari ricorsivi. Saltare da pag. 508 [546] sino alla fine del capitolo.

Capitolo 13 [17]: Ordinamento e ricerca.
Ordinamento per selezione, inserimento, merge e quicksort. Prestazioni e notazione O-grande. Ricerca lineare e binaria. Ordinare dati reali.