====== Programmazione (Modulo di Teoria) ====== ---- ===== News ===== * 26 Settembre 2018: calendario delle prove orali del secondo appello di settembre pubblicato (in fondo alla pagina). * 19 Luglio 2018: calendario delle prove orali del 20 Luglio pubblicato. * 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) ---- ===== Informazioni Generali ===== **Docente**: * [[http://docenti.unicam.it/pdett.aspx?ids=N&tv=d&UteId=990&ru=PA|Francesco Tiezzi]] **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) ---- ===== Obiettivi del Corso ===== D1 - CONOSCENZA E CAPACITÀ DI COMPRENSIONE\\ Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: - Conoscere i concetti base della programmazione procedurale. - Conoscere i concetti base della programmazione orientata agli oggetti, con particolare riguardo al linguaggio Java. - 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: - Programmare secondo il paradigma di programmazione procedurale. - 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: - 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: - 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: - Comprendere e imparare ad usare autonomamente sintassi e semantica di altri linguaggi di programmazione, imperativi o ad oggetti, nonché librerie aggiuntive e tecnologie analoghe. ---- ===== Contenuti del Corso ===== * 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. ---- ===== Progetto ===== * 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 [[https://it.wikipedia.org/wiki/Gioco_della_vita|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. ---- ===== Materiale ===== **Slide del Corso** * {{ :didattica:triennale:programmazione:ay_1718:intro_17-18.pdf |Informazioni generali}} * {{ :didattica:triennale:programmazione:ay_1718:capitolo01_17-18.pdf |Calcolatori e programmi}} * {{ :didattica:triennale:programmazione:ay_1718:capitolo02_17-18.pdf |Tipi di dato primitivi}} * {{ :didattica:triennale:programmazione:ay_1718:capitolo03_17-18.pdf |Selezione e ripetizione}} * {{ :didattica:triennale:programmazione:ay_1718:capitolo04_17-18.pdf |Metodi e ricorsione}} * {{ :didattica:triennale:programmazione:ay_1718:capitolo05_17-18.pdf |Programmazione a oggetti}} **Riferimenti utili** * [[https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html|Parola chiave "this"]] * [[https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html|Interfacce]] * [[https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html|Classi e metodi astratti]] **Testi di Riferimento** * Pierluigi Crescenzi. Gocce di Java. Un'introduzione alla programmazione procedurale ed orientata agli oggetti (2a edizione, nuova edizione 2014). FrancoAngeli. **Strumenti** * [[https://github.com/LorenzoBettini/javamm | Java--]] * [[http://www.vogella.com/tutorials/Eclipse/article.html | Eclipse Tutorial]] ---- ===== Esami ===== **Fac-simile prova scritta** * {{ :didattica:triennale:programmazione:ay_1718:fac-simile.pdf |Fac-simile}} **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 ** * {{ :didattica:triennale:programmazione:ay_1718:calendario_v1.pdf |Calendario prove orali del 1 Ottobre 2018}}