Fondamenti di Informatica, anno accademico 2009-2010 |
Obiettivi | Programma | Materiale didattico | |
Orario delle lezioni | Ricevimento studenti | Modalità d'esame | |
Diario delle lezioni | Prove d'esame |
Vengono presentati alcuni algoritmi fondamentali per problemi di ordinamento, ricerca e selezione, alcuni problemi numerici, evidenziandone le caratteristiche di efficienza attraverso l'analisi di complessità asintotica.
Vengono descritti i principali metodi di codifica dell'informazione.
Alla fine del corso lo studente sarà in grado di:
Componenti di un sistema di elaborazione: hardware, software, principali unità periferiche. Interazione con un sistema operativo basato su finestre. Concetto di cartella, documento, applicazione. Il sistema operativo: funzioni principali, gestione dei processi, gestione della memoria, file system.
Rappresentazione dell'informazione: codifica di informazioni numeriche - sistemi di numerazione posizionali, codifica binaria, ottale, esadecimale, conversioni di base. Rappresentazione di numeri interi negativi. Rappresentazione in virgola mobile. Codifica di caratteri.
Concetto di algoritmo. Esempi di algoritmi in linguaggio naturale. Generalità sui linguaggi di programmazione, compilatori.
Programmazione in linguaggio Java: la Java Virtual Machine, ambienti di programmazione, compilazione ed esecuzione di programmi Java. Costrutti essenziali del linguaggio: variabili, espressioni, oggetti. Assegnazioni, metodi di input/output, istruzioni di selezione, ed iterazione. Uso di classi predefinite, invocazione di metodi. Consultazione della documentazione standard Java. Definizione di classi, principio della riutilizzazione del codice. Implementazione di vettori e matrici. Ereditarietà e polimorfismo.
Algoritmi fondamentali: Ricerca sequenziale, ricerca dicotomica su un vettore ordinato. Algoritmi di base su matrici. Ordinamento: selection sort, merge sort, quick sort, bubble sort. Algoritmo di Euclide per la ricerca del Massimo Comun Divisore (MCD).
Introduzione alla complessità computazionale: concetto di complessità di un algoritmo, notazioni asintotiche. Equazioni di ricorrenza e metodi per la loro soluzione. Complessità computazionale degli algoritmi studiati.
L'esame consiste in una prova scritta e un colloquio. Nella prova scritta si richiede di scrivere o completare sorgenti Java e di rispondere a domande su argomenti teorici.
30 settembre 2009 | |
---|---|
Argomenti |
Introduzione al corso Architettura di un sistema di elaborazione Origini del linguaggio Java Compilazione e interpretazione di un programma in Java: codice sorgente, codice intermedio (bytecode); il ciclo di compilazione/esecuzione di programmi in Java; la Java Virtual Machine Esempi di semplici programmi Java |
Riferimenti al testo | Capitolo 3 |
Listati ed esercizi proposti |
Un semplicissimo programma Java PrimoProgramma.java |
torna all'elenco delle lezioni
2 ottobre 2009 | |
---|---|
Argomenti |
Tipi primitivi: aritmetici, carattere, boolean Dichiarazione di variabili Istruzione di assegnazione Uso di literal (costanti) Operatori aritmetici Semplici espressioni |
Riferimenti al testo | Capitolo 1, Capitolo 3 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
5 ottobre 2009 (laboratorio) | |
---|---|
Argomenti |
Descrizione dei pacchetti JRE (Java Runtime Environment) e SDK (Software Development Kit) Editing di programmi Java con Blocco Note Compilazione ed esecuzione da "Prompt dei comandi" usando gli strumenti Assegnazioni, uso di semplici espressioni Cenni sull'uso di cicli e istruzioni condizionali |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
7 ottobre 2009 | |
---|---|
Argomenti | Costruzione di espressioni complesse Precedenza tra operatori Conversioni implicite ed esplicite, operatore Assegnazioni tra tipi disomogenei Operatori relazionali: Istruzione Istruzione Istruzioni |
Riferimenti al testo | Capitolo 3 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
9 ottobre 2009 | |
---|---|
Argomenti | Istruzione composta Espressioni booleane complesse: operatori Operatori di preincremento e postincremento Istruzioni di ciclo: l'istruzione Uso di variabili boolean per il controllo di cicli Istruzione Istruzioni di assegnazione con modifica |
Riferimenti al testo | Capitoli 4 e 5 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
12 ottobre 2009 (laboratorio) | |
---|---|
Argomenti |
Input/output attraverso un oggetto della classe Uso di cicli per l'esame di una sequenza di interi da tastiera |
Esercizi proposti | Esercitazione 2 |
torna all'elenco delle lezioni
14 ottobre 2009 | |
---|---|
Argomenti | Esempi di semplici programmi con cicli e istruzioni di selezione |
Riferimenti al testo | Capitoli 4 e 5 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
16 ottobre 2009 | |
---|---|
Argomenti |
Soluzione dell'esercizio proposto nella esercitazione precedente: stampa di un triangolo di asterischi di lato n con vari orientamenti StampaTriangolo.java Istruzione di ciclo Istruzione di ciclo Sviluppo di algoritmi: approccio top-down Algoritmo di bisezione per la soluzione di una equazione in una variabile, e sua implementazione BisezioneSemplice.java |
Riferimenti al testo | Capitolo 5 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
19 ottobre 2009 (laboratorio) | |
---|---|
Argomenti |
Metodi di input/output della classe Generazione di numeri pseudocasuali con Esempi di programmi con cicli: verificare se una sequenza di numeri reali in input è crescente. |
Listati ed esercizi proposti | Esercitazione 3 |
torna all'elenco delle lezioni
21 ottobre 2009 | |
---|---|
Argomenti |
Soluzione degli esercizi proposti nella esercitazione del 19 ottobre 2009
|
torna all'elenco delle lezioni
23 ottobre 2009 | |
---|---|
Argomenti |
Esercizi sull'uso di cicli e istruzioni di selezione
|
torna all'elenco delle lezioni
26 ottobre 2009 | |
---|---|
Argomenti |
Introduzione agli array monodimensionali: dichiarazione, allocazione ed uso Inizializzazione di array La proprietà Input e output di array |
Riferimenti al testo | Capitolo 6 |
Listati ed esercizi proposti |
Data in input una sequenza di interi, che rappresentano frequenze, stampare:
|
torna all'elenco delle lezioni
28 ottobre 2009 (laboratorio) | |
---|---|
Argomenti | Semplici esercizi su arrays |
Listati ed esercizi proposti | Esercitazione 4 |
torna all'elenco delle lezioni
30 ottobre 2009 | |
---|---|
Argomenti |
Variabili riferimento: il caso degli arrays Assegnazione tra arrays Arrays multidimensionali Esempi di algoritmi su arrays |
Riferimenti al testo | Capitolo 6 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
2 novembre 2009 (lab) | |
---|---|
Argomenti | Esercitazione su arrays multidimensionali |
Listati ed esercizi proposti | Esercitazione 5 Soluzione primo esercizio: Esercitazione5Svolto.java Soluzione secondo esercizio: Esercitazione5Prodotto.java |
torna all'elenco delle lezioni
4 novembre 2009 | |
---|---|
Argomenti |
I metodi Definizione e chiamata di metodi La signature di un metodo I metodi Parametri formali e parametri attuali Passaggio di parametri per valore Passaggio di parametri array |
Riferimenti al testo | Capitolo 7 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
9 novembre 2009 | |
---|---|
Argomenti | Esercitazione su metodi su arrays |
Listati ed esercizi proposti |
Ecco un esempio di soluzione (da leggere solo dopo aver tentato a lungo di risolvere l'esercizio) Esercitazione 6 svolta |
torna all'elenco delle lezioni
11 novembre 2009 | |
---|---|
Argomenti |
Precisazioni sul pasaggio di parametri riferimento parametri.pps.zip L'algoritmo di ordinamento per selezione (selection sort) Cenni alla complessità computazionale del selection sort Calcolo del fattoriale |
Riferimenti al testo | Capitolo 7 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
13 novembre 2009 | |
---|---|
Argomenti | Ricerca sequenziale su un array (non ordinato) L'algoritmo di ricerca binaria su array ordinati Analisi della complessità dell'algoritmo di ricerca binaria |
Riferimenti al testo | Cormen, Leiserson, Rivest, pagg. 21-26 |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
16 novembre 2009 (lab) | |
---|---|
Argomenti | Esercitazione su:
|
Listati ed esercizi proposti | Esercitazione 7 |
torna all'elenco delle lezioni
18 novembre 2009 | |
---|---|
Argomenti |
Eccezioni: eccezioni controllate e non controllate Gestione delle eccezioni (costrutto Posizionamento della gestione delle eccezioni L'algoritmo di Euclide per il calcolo del Massimo Comun Divisore (versione iterativa)
Analisi di complessità dell'algoritmo MCD di Euclide. |
Riferimenti al testo | Capitolo 12 e seguenti |
torna all'elenco delle lezioni
20 novembre 2009 | |
---|---|
Argomenti |
Introduzione alla ricorsione. Esempio di algoritmo ricorsivo per il calcolo del fattoriale L'algoritmo di Euclide per il calcolo del Massimo Comun Divisore: versione ricorsiva
L'algoritmo di ordinamento per fusione (Merge Sort)
|
Riferimenti al testo | Capitolo 12 e seguenti |
torna all'elenco delle lezioni
23 novembre 2009 (lab) | |
---|---|
Argomenti | Esercizi di programmazione |
torna all'elenco delle lezioni
25 novembre 2009 | |
---|---|
Argomenti |
Introduzione alla programmazione a oggetti Principio dell'information hiding Da variabile-tipo a oggetto-classe Variabili membro e metodi membro Privatezza delle variabili membro Definizione della classe
Definizione della classe
|
Riferimenti al testo | Capitoli 8 e seguenti |
Listati proposti |
|
Esercizi proposti |
|
torna all'elenco delle lezioni
27 novembre 2009 | |
---|---|
Argomenti |
Algoritmo di ordinamento a bolle (Bubble sort) e suoi miglioramenti |
torna all'elenco delle lezioni
30 novembre 2009 (laboratorio) | |
---|---|
Argomenti | Accesso a file di testo |
Listati ed esercizi proposti | Esercitazione 8: accesso a file di testo. Nella stessa pagina è disponibile una soluzione alla esercitazione |
torna all'elenco delle lezioni
2 dicembre 2009 | |
---|---|
Argomenti |
Esempio di definizione ed uso di una classe Sovraccarico del costruttore: uso del L'oggetto di invocazione: uso del Definizione ed invocazione di metodi Alcune classi predefinite con metodi Alcune classi predefinite per costruire oggetti (quindi con metodi non |
Riferimenti al testo | Capitoli 8 e seguenti |
Listati proposti |
Soluzione dell'esercizio ProfittoStudente.java, proposto il 25 novembre:
|
torna all'elenco delle lezioni
4 dicembre 2009 | |
---|---|
Argomenti | Misure di complessità: le notazioni asintotiche O(), Ω(), Θ() Esempi di classi di funzioni Uso delle notazioni asintotiche per esprimere limitazioni superiori della complessità di algoritmi |
Riferimenti al testo | Cormen, Leiserson, Rivest, pagg. 21-26 |
torna all'elenco delle lezioni
9 dicembre 2009 | |
---|---|
Argomenti |
Il paradigma divide et impera. L'algoritmo Quick sort: QuickSort.java) Versione animata dell'algoritmo Quick sort, che mostra il funzionamento per ciascuna chiamata ricorsiva: QuickSortAnimato.java Algoritmo per il calcolo del k-esimo elemento: Selection.java Versione animata dell'algoritmo Selection, che mostra il funzionamento per ciascuna chiamata ricorsiva: SelectionAnimato.java |
Riferimenti al testo | Cormen, Leiserson, Rivest (pagine indicate) |
torna all'elenco delle lezioni
11 dicembre 2009 | |
---|---|
Argomenti |
Il paradigma divide et impera. Analisi della complessità computazionale di algoritmi ricorsivi. Soluzione di equazioni di ricorrenza attraverso il teorema principale (senza dimostrazione) Esempi di applicazione del teorema principale:ricerca binaria, merge sort, algoritmo di Euclide per il MCD, quick sort nel caso migliore. Analisi della complessità computazionale del merge sort senza utilizzare il teorema principale |
Riferimenti al testo | Cormen, Leiserson, Rivest (pagine indicate) |
torna all'elenco delle lezioni
14 dicembre 2009 (laboratorio) | |
---|---|
Argomenti | Filtraggio righe da file di testo |
Listati ed esercizi proposti | Esercitazione 9: filtraggio righe da files di testo |
torna all'elenco delle lezioni
16 dicembre 2009 | |
---|---|
Argomenti | Codifica dell'informazione:
|
Riferimenti al testo | appunti delle lezioni e testo di Ceri, Mandrioli, Sbattella |
Listati ed esercizi proposti |
torna all'elenco delle lezioni
8 gennaio 2010 | |
---|---|
Argomenti | Definizione di sottoclassi, Ereditarietà di campi e metodi. Specializzazione di metodi per la
sottoclasse attraverso la loro riscrittura (overriding). Il metodo |
Riferimenti al testo |
torna all'elenco delle lezioni
11 gennaio 2010 (laboratorio) | |
---|---|
Argomenti |
Uso di classi geometriche dell'ambiente Java: Esercitazione 10 |
torna all'elenco delle lezioni
13 gennaio 2010 | |
---|---|
Argomenti | Esercizi di programmazione |
torna all'elenco delle lezioni
Scritto del 26 Gennaio 2010 Scritto2010-01-26.pdf
Scritto del 10 Febbraio 2010 Scritto2010-02-10.pdf
Scritto del 14 Settembre 2010
Scritto2010-09-14.pdf
risultati