Programmazione (Modulo di Teoria)


  • 19 Luglio 2018: calendario delle prove orali del 20 Luglio pubblicato (in fondo alla pagina).
  • 4 Luglio 2018: calendario delle prove orali pubblicato.
  • 14 Giugno 2018: calendario delle prove orali pubblicato.
  • 09 Marzo 2018: calendario delle prove orali pubblicato.
  • 05 Marzo 2018: risultati prova scritta secondo appello pubblicati; per sostenere la prova orale è necessario iscriversi su esse3 all'appello “Appello 2 - ORALE” del 8/3/2017. Sarà comunicato agli iscritti, via email, il calendario delle prove orali.
  • 2 Marzo 2018: è stato aggiunto un appello straordinario il 7 Marzo ore 11:00, solo per coloro, che causa partecipazione seggi in qualità di scrutatori o spostamenti in altre regioni per votazioni, non possono partecipare alla prova del 5 Marzo. A tal fine, gli studenti dovranno produrre idonea documentazione, ovvero documentazione da cui risulti l'attività di scrutatore, oppure documento/tessera elettorale con timbratura che attesti l’avvenuta votazione.
  • 23 Febbraio 2018: la prova scritta del secondo appello d'esame è stata posticipata al 5 Marzo, ore 10:00.
  • 11 Febbraio 2018: calendario degli esami orali aggiornato.
  • 10 Febbraio 2018: calendario degli esami orali aggiornato.
  • 09 Febbraio 2018: calendario degli esami orali pubblicato.
  • 05 Febbraio 2018: risultati prova scritta primo appello pubblicati; orali a partire da martedì 13 (vedi in fondo a questa pagina per istruzioni di prenotazione). Il calendario degli esami orali verrà comunicato giovedì pomeriggio a seguito delle indicazioni date dagli studenti che hanno superato lo scritto.
  • 10 Gennaio 2018: lezioni di Programmazione Teoria terminate.
  • 10 Gennaio 2018: ultima lezione di Programmazione Teoria, durata 3 ore (ore 14-17).
  • 8 Gennaio 2018: prima lezione di Programmazione Teoria (ore 11-13) dopo la pausa delle festività natalizie.
  • 18 Dicembre 2017: lezione di Programmazione Teoria (ore 11-13) è annullata.
  • 11 Dicembre 2017: lezione di Programmazione Teoria (ore 11-13) è annullata.
  • 29 Novembre 2017: lezione di Programmazione Teoria (ore 14-16) è annullata.
  • 20 Novembre 2017: lezione di Programmazione Laboratorio (ore 14-16) rimpiazzata da Logica Matematica; la lezione di Programmazione Laboratorio sarà recuperata Mercoledì 22 Novembre ore 9-11.
  • 15 Novembre 2017: lezione di Programmazione Teoria (ore 14-16) rimpiazzata da Programmazione Laboratorio.
  • 6 Novembre 2017: lezione posticipata a seguito della sospensione delle attività didattiche in occasione della cerimonia di Inaugurazione dell'Anno Accademico.
  • 30-31 Ottobre 2017: lezioni di Programmazione Laboratorio del 30 e 31 Ottobre sono posticipate.
  • 17 Ottobre 2017: prima lezione di Programmazione Laboratorio (ore 9-11); alle ore 14-16 si svolgerà la lezione di Programmazione Teoria al posto di Logica Matematica
  • 16 Ottobre 2017: le lezioni di Programmazione Teoria e di Logica Matematica (in sostituzione a Programmazione Laboratorio) sono annulate
  • 11 Ottobre 2017: la lezione di Programmazione Teoria in Aula AA1, terminerà alle ore 15:00.
  • 10 Ottobre 2017: al posto della lezione di Programmazione Laboratorio verrà svolta la lezione di Programmazione Teoria in Aula AA1, ore 9-11
  • 09 Ottobre 2017: non verrà svolta la lezione di Programmazione Laboratorio, ma soltanto la lezione di Programmazione Teoria in Aula AA1, ore 11-13
  • 04 Ottobre 2017: pubblicato primo draft della traccia del progetto.
  • 04 Ottobre 2017: al posto della lezione di Programmazione Laboratorio verrà svolta la lezione di Programmazione Teoria in Aula AA1, ore 9-11
  • 03 Ottobre 2017: Non c'è lezione (Giornata di Ambientamento)

Docente:

Orario delle Lezioni:

  • Lunedì 11 - 13 (AA1)
  • Lunedì 14 - 16 (LA1) - Laboratorio
  • Martedì 9 - 11 (LA1) - Laboratorio
  • Mercoledì 14 - 16 (AA1)

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.
  • Costrutti base di programmazione procedurale.
  • Iterazione e ricorsione.
  • Programmazione ad oggetti in Java.
  • Ambiente di sviluppo Eclipse.

  • Il progetto dovrà essere realizzato in gruppi di massimo 3 persone. La valutazione del progetto avverrà però singolarmente.
  • Eventuali dubbi sulla traccia possono essere discussi con il Prof. Culmone durante le lezioni di laboratorio.

TRACCIA DEL PROGETTO (DRAFT)

Si vuole realizzare un gioco simile al Gioco della vita.

Il gioco si svolge su una griglia bidimensionale in cui vi sono animali di due specie differenti e alimenti di un solo tipo. Una cella può contenere un solo animale o un solo alimento.

Lo stato del gioco, dato dalla distribuzione degli animali e degli alimenti sulla griglia, evolve con il tempo.

Le due specie animali si differenziano per il meccanismo riproduttivo: o si accoppiano o si clonano.

Le regole che gli animali devono rispettare sono le seguenti:

  • Si spostano di una casella per volta.
  • Quando si spostano su una cella con un alimento, lo mangiano e aumentano la loro capacità di spostarsi (cioè la loro vita) di due unità. Gli alimenti si trovano nella griglia in posizioni casuali e con una densità di al più 50% della griglia.
  • Alla nascita hanno una aspettativa di vita di 10 spostamenti.
  • Una unità di alimentazione aggiunge 2 spostamenti alla vita dell'animale.
  • Un animale in grado di clonarsi, se ha più di 20 spostamenti si clona e la sua vita si riduce a 10 spostamenti.
  • Un animale in grado di accopiarsi, se ha più di 5 spostamenti e meno di 20, si può accoppiare con un altro individuo vicino (cella adiacente).
  • Se un animale ha 0 spostamenti muore.

Scrivere un programma che, distribuiti un certo numero di individui e alimenti casualmente sulla griglia, produca il numero e il tipo degli individui dopo un certo numero di spostamenti.


Slide del Corso

Riferimenti utili

Lezioni

  • 03/10/2017: informazioni generali (registrazione)
  • 04/10/2017: il metodo algoritmico; problemi indecidibili (registrazione)
  • 09/10/2017: complessità; breve storia dei calcolatori; rappresentazione binaria; algoritmi; diagrammi di flusso; compilatori e interpreti (registrazione)
  • 10/10/2017: variabili; input e output in Java–; tipi di dato primitivi; assegnazione (registrazione)
  • 11/10/2017: introduzione alle funzionalità base di Eclipse (registrazione)
  • 16/10/2017: esempio d'uso di Eclipse; perdita di precisione; commenti (registrazione)
  • 18/10/2017: conversioni di tipo; precedenze fra operatori; operatori di incremento e decremento (registrazione)
  • 23/10/2017: array; differenza fra array e tipi primitivi; espressioni booleane (registrazione)
  • 25/10/2017: espressioni booleane; Eclipse debugger (registrazione)
  • 30/10/2017: metodi; istruzione return; costrutto if; costrutto if-else, diramazioni multiple; istruzione switch (registrazione)
  • 08/11/2017: cicli: while, do-while, for; parametri formali e argomenti (registrazione)
  • 13/11/2017: variabili locali; array come parametri formali; ordinamento array (registrazione)
  • 20/11/2017: paradigma di programmazione procedurale, ricorsione (registrazione)
  • 22/11/2017: ricorsione e iterazione; paradigma di programmazione orientata agli oggetti (registrazione)
  • 27/11/2017: dichiarazione di classe; creazione e distruzione di oggetti; utilizzo di oggetti; parametri formali di tipo classe; metodi costruttori (registrazione)
  • 04/12/2017: costruttori; metodo main; accessori e mutatori (registrazione)
  • 06/12/2017: classe String; sovraccaricamento di metodi (registrazione)
  • 13/12/2017: ereditarietà, polimorfismo (registrazione 1,registrazione 2)
  • 20/12/2017: Conversione di tipo classe; Modificatori public e private; Incapsulamento; Modificatori static e final (registrazione)
  • 08/01/2018: Eccezioni: creazione, lancio, gestione (registrazione)
  • 10/01/2018: Pacchetti: definizione e visibilità; Accesso file di testo; This; Interfacce e classi astratte (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


Fac-simile prova scritta

Date Esami A.A. 2017/2018

  • Appello I: 05/02/2018 ore 10:00 - Polo Lodovici - Aula LA1/LA2
  • Appello II: 27/02/2018 ore 10:00 - Polo Lodovici - Aula LA1
  • Appello III: 13/06/20178 ore 10:00 - Polo Lodovici - Aula AA1
  • Appello IV: 3/07/2018 ore 10:00 - Polo Lodovici - Aula AA1
  • Appello V: 18/07/2018 ore 10:00 - Polo Lodovici - Aula AA1
  • Appello VI: 12/09/2018 ore 10:00 - Polo Lodovici - Aula AA1
  • Appello VII: 26/09/2018 ore 10:00 - Polo Lodovici - Aula AA1
  • Appello VIII: 27/02/2019 ore 10:00 - Polo Lodovici - Aula AA1

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

  • Prova scritta (questionario a risposta multipla).
  • Progetto software assegnato dai docenti.
  • Prova orale (discussione del progetto e domande di teoria). La prova orale può essere sostenuta solo se è stata superata la prova scritta.

Il voto finale è la media dei voti delle prove scritta e orale.

Risultati Esame