Programmazione (Modulo di Teoria)



Docente:

Link ESSE3

Orario delle Lezioni:

  • Lunedì 14 - 16 (BXIII) - Laboratorio
  • Martedì 14 - 16 (BXIII)
  • Mercoledì 11 - 13 (BXIII)
  • Giovedì 9 - 11 (BXIII) - Laboratorio

Ricevimento studenti:

  • su appuntamento (via email)

D1 - CONOSCENZA E CAPACITÀ DI COMPRENSIONE
Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  1. Conoscere i concetti base della programmazione procedurale.
  2. Conoscere i concetti base della programmazione orientata agli oggetti, con particolare riguardo al linguaggio Java.
  3. Conoscere le principali funzionalità dell'ambiente di sviluppo Eclipse.

D2 - CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE
Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  1. Programmare secondo il paradigma di programmazione procedurale.
  2. Programmare secondo il paradigma di programmazione ad orientata agli oggetto, tramite il linguaggio Java.

D3 - AUTONOMIA DI GIUDIZIO
Risultati attesi:
Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  1. Identificare il modello a oggetti che descrive meglio un semplice problema.

D4 - ABILITÀ COMUNICATIVE
Risultati attesi:
Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  1. Documentare il codice in forma chiara e comprensibile usando lo standard del linguaggio usato.

D5 - CAPACITÀ DI APPRENDIMENTO
Risultati attesi:
Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  1. Comprendere e imparare ad usare autonomamente sintassi e semantica di altri linguaggi di programmazione, imperativi o ad oggetti, nonché librerie aggiuntive e tecnologie analoghe.

  • Algoritmi, programmi e linguaggi di programmazione.
  • Compilatori, interpreti e approccio Java.
  • Tipi di dato primitivi in Java.
  • Sistema dei tipi, strutture dati di base e relativi algoritmi.
  • Concetti fondamentali di programmazione procedurale.
  • Iterazione e ricorsione.
  • Programmazione orientata agli oggetti in Java.
  • Ambiente di sviluppo Eclipse.

Slide del Corso

Riferimenti utili

Lezioni

Dichiarazione di Copyright (PDF)

  • 29/09/2020: informazioni generali; il metodo algoritmico (registrazione)
  • 30/09/2020: problemi indecidibili; complessità; breve storia dei calcolatori (registrazione)
  • 05/10/2020: rappresentazione binaria; shell Linux e prompt dei comandi Windows (registrazione)
  • 06/10/2020: algoritmi; diagrammi di flusso; compilatori e interpreti (registrazione)
  • 07/10/2020: compilazione ed esecuzione da linea di comando; generazione di jar file (registrazione)
  • 08/10/2020: introduzione alle funzionalità base di Eclipse; variabili (registrazione)
  • 12/10/2020: input e output in Java–; dichiarazione variabili; assegnamento (registrazione)
  • 13/10/2020: perdita di precisione; commenti; conversione di tipo implicita (registrazione)
  • 15/10/2020: conversione di tipo esplicita; precedenze fra operatori; operatori di incremento e decremento (registrazione)
  • 20/10/2020: array (registrazione)
  • 21/10/2020: differenza fra array e tipi primitivi; esempi su array (registrazione)
  • 27/10/2020: espressioni booleane; metodi (registrazione)
  • 03/11/2020: istruzione return; costrutto if; costrutto if-else (registrazione)
  • 04/11/2020: diramazioni multiple; istruzione switch; cicli while e do-while (registrazione)
  • 17/11/2020: cicli for; array length, eclipse debugger (registrazione)
  • 18/11/2020: call-by-value e call-by-reference; variabili locali (registrazione)
  • 24/11/2020: paradigma di programmazione procedurale; ricorsione (registrazione)
  • 25/11/2020: paradigma di programmazione orientata agli oggetti; dichiarazione di classe; creazione e distruzione di oggetti (registrazione)
  • 01/12/2020: utilizzo di oggetti; parametri formali di tipo classe; metodi costruttori; metodo main (registrazione)
  • 02/12/2020: accessori e mutatori; classe String; sovraccaricamento di metodi (registrazione)
  • 09/12/2020: Ereditarietà; Polimorfismo; Conversione di tipo classe; ; Interfacce e classi astratte (registrazione)
  • 15/12/2020 (ultima lezione del modulo di teoria): Modificatori public e private; Pacchetti: definizione e visibilità; Incapsulamento; Modificatore static; Modificatore final; Eccezioni: creazione, lancio, gestione; Accesso file di testo (registrazione)

Testi di Riferimento

  • Pierluigi Crescenzi. Gocce di Java. Un'introduzione alla programmazione procedurale ed orientata agli oggetti (2a edizione, nuova edizione 2014). FrancoAngeli.

Strumenti

  • Installazione Java– per Windows 10:
    • Scaricare ed installare JDK versione Java SE 14:
    • Impostare le variabili di ambiente PATH e JAVA_HOME:
      • Aprire impostazione di sistema (simbolo dell'ingranaggio)
      • Nella casella di testo “Trova” scrivere “variabili” e quindi selezionare “Modifica variabili di ambiente per l'account”
      • Selezionare variabile Path e premere il pulsante modifica
      • Aggiungere il cammino della cartella “bin” all'interno della cartella in cui è stato installato JDK (es. C:\Program Files\Java\jdk-14\bin)
      • Premere il pulsante “Nuova” e specificare la variabile JAVA_HOME con la cartella in cui è stato installato JDK (es. C:\Program Files\Java\jdk-14)
      • Testare sul prompt dei comandi se i programmi java e javac funzionano correttamente e controllare che siano aggiornati alla versione 14.
    • Scaricare ed installare Eclipse con integrato il plugin javamm (ultima versione):
    • In caso sia attivo Windows Defender, l'avvio dell'app potrebbe essere bloccato; cliccare su “Ulteriori informazioni” e poi premere il bottone “Esegui comunque”

Date Esami A.A. 2020/2021

  • Appello I: 09/02/2021 ore 10:00 - Polo Lodovici - Aula LA1
  • Appello II: 23/02/2021 ore 10:00 - Polo Lodovici - Aula LA1
  • Appello III: 14/06/2021 ore 10:00 - Polo Lodovici - Aula LA1
  • Appello IV: 28/06/2021 ore 10:00 - Polo Lodovici - Aula LA1
  • Appello V: 12/07/2021 ore 10:00 - Polo Lodovici - Aula LA1
  • Appello VI: 13/09/2021 ore 10:00 - Polo Lodovici - Aula LA1
  • Appello VII: 27/09/2021 ore 10:00 - Polo Lodovici - Aula LA1
  • Appello VIII: 07/02/2022 ore 10:00 - Polo Lodovici - Aula LA1

Regole di esame:
Il raggiungimento dei risultati di apprendimento è verificato attraverso le seguenti prove:

  • Prova di programmazione: esercizi di programmazione di 1 ora circa svolti singolarmente in laboratorio (la prova sarà svolta tramite Webex in caso di impedimenti dipendenti dalla emergenza COVID; la motivazione di tale impedimento dovrà essere preventivamente comunicata tramite email ai docenti del corso e al manager didattico).
  • Prova orale: basata sull'elaborato consegnato nella prova di programmazione e sulla teoria.

Istruzioni per la prova di esame:

  • La prova di programmazione consiste nella scrittura di un programma Java da svolgere in 1 ora. La traccia dell'esercizio verrà inviata alle ore 10:00 tramite email da esse3 (la consegna in ritardo implica l'immediato fallimento della prova).
  • I file .java del programma scritto come soluzione alla traccia assegnata dovranno essere inviati ai docenti (francesco.tiezzi@unicam.it, rosario.culmone@unicam.it) tramite email istituzionale (nome.cognome@studenti.unicam.it). Tale email dovrà avere l'oggetto della forma seguente “programmazione_20210209 - nome cognome matricola”, non dovrà contenere testo, ma solo i programmi Java in allegato (non verranno presi in considerazione file .class, .jar o di altro tipo).
  • Nello svolgimento della prova potrà essere utilizzato il proprio computer e qualunque editor/IDE. E' consentito l'accesso alla rete Internet, ma non è permessa la interazione con altri studenti o persone esterne. L'incapacità durante la prova orale di spiegare adeguatamente il codice consegnato implicherà l'immediato fallimento dell'esame.
  • Il programma Java consegnato verrà valutato per l'ammissione alla prova orale. Pertanto, la valutazione della prova di programmazione sarà AMMESSO oppure NON AMMESSO.
  • Terminata la valutazione di tutte le prove di programmazione, verrà pubblicata la lista degli ammessi all'orale con il relativo calendario delle prove orali. Le prove orali avranno inizio a partire da lunedì 15 Febbraio. Potranno essere segnalati tramite email eventuali problemi con la data proposta per l'orale, in base alla quale aggiorneremo nei limiti del possibile il calendario.
  • Alla prova orale verranno discussi aspetti tecnici e di progettazione del programma Java consegnato. Inoltre, la prova orale verterà anche su nozioni di teoria e aspetti pratici affrontati durante i moduli di Teoria e Laboratorio del corso.
  • La prova orale può essere sostenuta anche in uno degli appelli successivi. In caso in cui la prova orale non sia superata, o in caso di rifiuto del voto proposto, all'appello successivo lo studente dovrà ripetere anche la prova di programmazione.

Risultati prova di programmazione

Risultati della prova di programmazione del 23 Febbraio 2021 (secondo appello).

Calendario orali secondo appello