Salta al contenuto principale della pagina

PROGRAMMAZIONE 2

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
  • 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 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.

    MODALITA' 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

    Commissione d'esame

    PAOLA MAGILLO (Presidente)

    DAVIDE ANCONA

    ELENA ZUCCA (Presidente Supplente)

    LEZIONI

    INIZIO LEZIONI

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

    Orari delle lezioni

    L'orario di tutti gli insegnamenti è consultabile su EasyAcademy.

    ESAMI

    MODALITA' 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.

    MODALITA' 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.

    Calendario appelli

    Data Ora Luogo Tipologia Note
    07/01/2021 09:00 GENOVA Laboratorio
    01/02/2021 09:00 GENOVA Laboratorio