Salta al contenuto principale
CODICE 48382
ANNO ACCADEMICO 2019/2020
CFU
SETTORE SCIENTIFICO DISCIPLINARE INF/01
LINGUA Italiano
SEDE
  • GENOVA
PERIODO 1° Semestre
MATERIALE DIDATTICO AULAWEB

PRESENTAZIONE

L'insegnamento introduce: Concetto di tipo di dato (valori + operazioni), implementazione, tecniche per valutare la complessita' di un'implementazione; Concetti fondamentali della programmazione orientata a oggetti. Linguaggi Java e Python con esercitazioni pratiche.

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Introduzione a: tipi di dato; algoritmi, strutture dati e valutazione della mloro complessita'; programmazione orientata a oggetti; il linguaggio Java; il linguaggio Python; esercitazioni nei due linguaggi.

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) ed algoritmi classici. Parallelamente, l'insegnamento introduce alla programmazione orientata a oggetti e, come esempi, i linguaggi Java e Python, che permetteranno di vedere 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' inoltre la programmazione object-oriented e sara' in grado di programmare nei linguaggi Java e Python.

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, operatori logici.

 

MODALITA' 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, di norma una in aula e due in laboratorio.
L'insegnamento prevede lo svolgimento di due esercitazioni (rispettivamente in Java e in Python) che costituiscono parte della prova d'esame (ved.  modalita' di esame e di accertamento).

 

PROGRAMMA/CONTENUTO

Tip di dato. Dall'operazione all'algoritmo, dal tipo alla struttura dati. Introduzione alla complessita' spaziale e temporale. Tipi di dato classici (pila, coda, dizionario). Alcuni algoritmi per problemi classici. Paradigma di programmazione object-oriented e linguaggio Java. Classi e oggetti, uguaglianza e copia di oggetti, costruttori, clientship, ereditarietà, overriding, eccezioni. Il linguaggio Python. Interprete interattivo, tipaggio dinamico, tipi contenitori (liste, tuple, dizionari) e operazioni, funzioni, classi, ereditarietà, eccezioni. Esercitazioni pratiche nei due linguaggi.

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

Commissione d'esame

PAOLA MAGILLO (Presidente)

ELENA ZUCCA (Presidente)

DAVIDE ANCONA

LEZIONI

INIZIO LEZIONI

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

Orari delle lezioni

PROGRAMMAZIONE 2

ESAMI

MODALITA' D'ESAME

L'esame consiste in: due esercitazioni pratiche da svolgere in gruppo (di due persone) e consegnare a fine corso, una prova orale.
Le esercitazioni valgono per tutto l'anno accademico.

MODALITA' DI ACCERTAMENTO

Durante l'anno sono date due esercitazioni pratiche, aventi come oggetto l'implementazione di strutture dati e/o algoritmi spiegati a lezione.  Le esercitazioni vanno svolte a gruppi (di due persone) e ci saranno alcune ore di laboratorio (fuori da quelle nel calendario lezioni) dedicate ad assistenza e spiegazioni sulle esercitazioni. Le esercitazioni prevedono la consegna del codice e di documentazione  scritta. Sara' valutata la correttezza e la qualita' del codice  e della documentazione.

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 nelle esercitazioni.  Lo studente dovra' mostrare di aver compreso i concetti e di essere in grado di applicare le tecniche studiate.

Calendario appelli

Dati Ora Luogo Tipologia Note
09/01/2020 09:00 GENOVA Laboratorio
03/02/2020 09:00 GENOVA Laboratorio
03/06/2020 09:00 GENOVA Laboratorio
01/07/2020 09:00 GENOVA Laboratorio
11/09/2020 09:00 GENOVA Laboratorio