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 12 Luglio 2021 e Calendario orali