PROGRAMMAZIONE 2

PROGRAMMAZIONE 2

_
iten
Codice
48382
ANNO ACCADEMICO
2020/2021
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 1° anno di 9011 MATEMATICA (LM-40) 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

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 loro 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, ecc.

Modalità didattiche

L'insegnamento prevede lezioni in aula e in laboratorio (con esercizi) coordinate fra loro, con circa 2/3 delle ore in laboratorio.
Nel perdurare dell'emergenza COVID-19, l'insegnamento sara' erogato in via telematica mediante la piattaforma Teams. Verra' fornito supporto agli studenti per installare sui propri computer i linguaggi Java e Python (che sono gratuitamente scaricabili per i vari sistemi operativi).
L'insegnamento prevede lo svolgimento di esercitazioni in Java e in Python, che costituiscono parte della prova d'esame (ved. modalita' di esame e di accertamento).

PROGRAMMA/CONTENUTO

Tipi 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).  Manuali e tutorial 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.

LEZIONI

Modalità didattiche

L'insegnamento prevede lezioni in aula e in laboratorio (con esercizi) coordinate fra loro, con circa 2/3 delle ore in laboratorio.
Nel perdurare dell'emergenza COVID-19, l'insegnamento sara' erogato in via telematica mediante la piattaforma Teams. Verra' fornito supporto agli studenti per installare sui propri computer i linguaggi Java e Python (che sono gratuitamente scaricabili per i vari sistemi operativi).
L'insegnamento prevede lo svolgimento di esercitazioni in Java e in Python, che costituiscono parte della prova 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 in: esercitazioni pratiche da svolgere e consegnare durante il semestre, e  una prova orale.
Le esercitazioni valgono per tutto l'anno accademico.

Modalità di accertamento

Durante l'anno sono date delle esercitazioni pratiche, aventi come oggetto l'implementazione di strutture dati e/o algoritmi spiegati a lezione. Tali 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.