PROGRAMMAZIONE 2

PROGRAMMAZIONE 2

_
iten
Codice
48382
ANNO ACCADEMICO
2018/2019
CFU
7 cfu al 2° anno di 8766 STATISTICA MATEM. E TRATTAM. INFORMATICO DEI DATI (L-35) GENOVA

7 CFU al 3° anno di 8760 MATEMATICA (L-35) GENOVA

7 CFU al 2° anno di 9011 MATEMATICA (LM-40) GENOVA

SETTORE SCIENTIFICO DISCIPLINARE
INF/01
LINGUA
Italiano
SEDE
GENOVA (STATISTICA MATEM. E TRATTAM. INFORMATICO DEI DATI )
periodo
1° Semestre
materiale didattico

PRESENTAZIONE

L'insegnamento introduce:
tipi di dato, controparte teorica del modulo software, costituiti da valori con le relative operazioni;
strutture dati ed algoritmi che implementano, in modo non unico, un tipo di dato;
tecniche per valutare la complessita' spaziale e temporale di un'implementazione;
la programmazione orientata a oggetti ed il linguaggio Java.
In particolare, si vedranno implementazioni di tipi di dato classici (pila, coda, dizionario) ed algoritmi per il problema dell'ordinamento.

 

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Introduzione a: tipi di dato; algoritmi, strutture dati e valutazione della loro complessita'; programmazione orientata a oggetti sull'esempio del linguaggio java; implementazione di tipi di dato in Java.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

L'insegnamento introduce il concetto di tipo di dato (costituito da valori memorizzati e operazioni che vi agiscono); introduce le strutture dati che descrivono come organizzare la memorizzazione dei valori e gli algoritmi che esprimono i procedimenti per eseguire le operazioni; introduce esempi di tipi di dato (pila, coda, dizionario) con le loro implementazioni classiche e vari algoritmi per il problema dell'ordinamento. Parallelamente, l'insegnamento introduce alla programmazione orientata a oggetti sull'esempio del linguaggio Java, in modo da vedere subito in laboratorio l'applicazione pratica di quanto visto a lezione.

Dopo aver seguito l'insegnamento, lo studente sara' in grado di implementare un tipo di dato scegliendo le strutture dati e gli algoritmi opportuni attraverso un'analisi della complessita' delle varie possibili scelte implementative.
Conoscera' i tipi di dato classici (pila, coda, dizionario), gli algoritmi di ordinamento classici e le loro proprieta'.
Conoscera' inoltre la programmazione object-oriented e sara' in grado di programmare in linguaggio Java.

PREREQUISITI

Conoscere i concetti basilari della programmazione con linguaggio imperativo: istruzione, variabile, ciclo, funzione, argomento, risultato, tipaggio delle variabili.

Conoscere concetti matematici e logici di base: operazione, argomento, risultato, dominio, codominio, relazioni e proprieta' di cui possono godere (riflessiva, simmetrica, transitiva), operatori logici (and, or, not, implicazione).

 

Modalità didattiche

L'insegnamento prevede lezioni in aula e in laboratorio (con esercizi) coordinate fra loro.  
Ci sono tre lezioni alla settimana di due ore ciascuna.  Nella settimana-tipo, una lezione e' in aula, una in laboratorio, una e' in aula o
in laboratorio secondo come richiesto dal flusso degli argomenti trattati.
Una parte delle ore di laboratorio sara' dedicata allo svolgimento di esercitazioni pratiche (un paio) che lo studente, consegnandole,
potra' fare valere come sostitutivo della prova pratica d'esame (ved. modalita' di esame e di accertamento).

 

PROGRAMMA/CONTENUTO

Tipo di dato astratto. Dall'operazione all'algoritmo, dal tipo alla struttura dati. Complessita' spaziale e temporale. Tipi di dato pila e coda, tipo di dato dizionario e varie implementazioni. Algoritmi di 
ordinamento.
Paradigma di programmazione object-oriented e linguaggio Java. Classi e oggetti, uguaglianza e copia di oggetti, costruttori, clientship, ereditarietà, overriding, eccezioni. Implementazione di tipi di dato in
Java.

 

TESTI/BIBLIOGRAFIA

Appunti del corso (in italiano).  Manuale e tutorial di Java on-line (in inglese). Libro: M.T.Goodrich, R.Tamassia, Data structures and algorithms in Java, John Wiley & Sons (in inglese), Strutture dati e algoritmi in Java, Zanichelli (traduzione italiana).

 

DOCENTI E COMMISSIONI

Ricevimento: Su appuntamento.

Commissione d'esame

ELENA ZUCCA (Presidente)

PAOLA MAGILLO (Presidente)

DAVIDE ANCONA

LEZIONI

Modalità didattiche

L'insegnamento prevede lezioni in aula e in laboratorio (con esercizi) coordinate fra loro.  
Ci sono tre lezioni alla settimana di due ore ciascuna.  Nella settimana-tipo, una lezione e' in aula, una in laboratorio, una e' in aula o
in laboratorio secondo come richiesto dal flusso degli argomenti trattati.
Una parte delle ore di laboratorio sara' dedicata allo svolgimento di esercitazioni pratiche (un paio) che lo studente, consegnandole,
potra' fare valere come sostitutivo della prova pratica d'esame (ved. modalita' di esame e di accertamento).

 

INIZIO LEZIONI

In accordo con il calendario accademico approvato dal Consiglio di Corsi di Studi.

ESAMI

Modalità d'esame

L'esame consiste di una prova pratica in laboratorio e un orale.  
Dalla prova di laboratorio possono essere esentati gli studenti che hanno svolto e consegnato le esercitazioni durante l'anno.

Le esercitazioni valgono per tutto l'anno accademico: lo studente puo' dare l'orale in qualunque appello e, nel caso fallisca, conserva le esercitazioni e deve ripetere soltanto l'orale.
Lo studente che non ha fatto o che non intende avvalersi delle esercitazioni deve invece fare la prova di laboratorio.
La prova di laboratorio vale solo per l'appello specifico: se lo studente fallisce l'orale, tornando a un appello successivo deve rifare anche la prova di laboratorio.

 

Modalità di accertamento

Durante l'anno sono date un paio di esercitazioni pratiche individuali, che gli studenti possono consegnare e che consentono di accedere
all'esame orale senza svolgere la prova di laboratorio. Queste esercitazioni hanno come oggetto l'implementazione di
strutture dati e/o algoritmi spiegati a lezione. Ad esse sono dedicate alcune ore di laboratorio all'interno dell'orario dell'insegnamento. Prevedono la consegna del codice Java prodotto e di documentazione scritta; nella documentazione potra' essere chiesto non solo di spiegare ma anche
di valutare l'implementazione realizzata. Sara' valutata la correttezza e la qualita' del codice e della documentazione.

La prova di laboratorio dell'esame richiede di scrivere, o modificare, codice che implementi varianti di algoritmi o strutture dati visti nelle
lezioni.

L'orale consiste in domande sul programma e puo' includere la scrittura di esempi in codice o pseudocodice. Puo' includere una discussione di
quanto fatto nella prova pratica o nelle esercitazioni. Lo studente dovra' mostrare di aver compreso i concetti e di essere in grado di applicare le tecniche di analisi e di valutazione studiate.

 

Calendario appelli

Data Ora Luogo Tipologia Note
16/09/2019 15:00 GENOVA Laboratorio