Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
didattica:triennale:algoritmi:ay_1516:lab [2016/05/25 16:10]
luca [Progetti Unici per i non Frequentanti]
— (current)
Line 1: Line 1:
-====== Laboratorio di Algoritmi e Strutture Dati ====== 
----- 
-===== News ===== 
-<WRAP center round important 95%> 
-  * <wrap em>**3 Marzo 2016**</​wrap>:​ Il modulo inizia alle ore 10.00 in Aula "A. Turing"​ del palazzo di Informatica (ex-tribunale),​ per la mappa delle aule si veda [[didattica:​classrooms:​main|qui]]  ​ 
-</​WRAP>​ 
  
----- 
-===== Informazioni Generali ===== 
-<WRAP box round 95% center> 
-**Docente**: ​ 
-  * [[http://​docenti.unicam.it/​pdett.aspx?​ids=N&​tv=d&​UteId=572&​ru=RU|Luca Tesei]] ​ 
- 
-**Orario delle Lezioni**: 
-  * Giovedì 10 - 13 (Aula, A. Turing) 
- 
-**Ricevimento studenti**: 
-  * Il Ricevimento è **tutti i mercoledì dalle 11.30 alle 14.00** nella stanza CS 07 al secondo piano del Polo Tecnologico Palazzo Battibocca, via del Bastione 1, Camerino. Per eventuali variazioni si consulti preventivamente [[http://​docenti.unicam.it/​pdett.aspx?​ids=N&​tv=d&​UteId=572&​ru=RU|questa pagina]]. 
-</​WRAP>​ 
----- 
-===== Obiettivi del Corso ===== 
- 
-<WRAP box round 95% center> 
-Gli obiettivi indicati sono quelli del corso intero, comprensivo della parte teorica e della parte di laboratorio. 
- 
-**CONOSCENZA E CAPACITÀ DI COMPRENSIONE** 
- 
-Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: 
-  * Comprendere la nozione di complessità computazionale di un algoritmo in tempo e in spazio 
-  * Illustrare le principali tecniche di progettazione di algoritmi 
-  * Conoscere le strutture dati di base e le principali strutture dati evolute per risolvere problemi specifici di ricerca e rappresentazione di strutture complesse 
- 
-**CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE** 
- 
-Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: 
-  * Applicare le principali tecniche di progettazione di algoritmi 
-  * Classificare ed analizzare gli algoritmi in base alla loro complessità computazionale 
-  * Ideare e implementare algoritmi per risolvere problemi specifici utilizzando le tecniche e le strutture dati conosciute 
- 
-**AUTONOMIA DI GIUDIZIO** 
- 
-Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: 
-  * Scegliere (ed implementare) le strutture dati più adatte alla risoluzione di un dato problema realizzando opportuni compromessi tra esigenze conflittuali come costo, semplicità ed efficienza. ​ 
- 
-**ABILITÀ COMUNICATIVE** 
- 
-Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: 
-  * Produrre una relazione dettagliata sull’ideazione e l’implementazione di un progetto 
-  * Avere la capacità di lavorare in gruppo per la realizzazione di un progetto 
- 
-**CAPACITÀ DI APPRENDIMENTO** 
- 
-Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: 
-  * Ricercare, comprendere e implementare algoritmi e strutture dati esistenti, ma non trattati nel corso, per la risoluzione di problemi specifici 
-</​WRAP>​ 
- 
----- 
-===== Contenuti del Corso ===== 
- 
-<WRAP round 95% center box> 
-La parte di laboratorio verterà sui seguenti contenuti: 
-  * Richiami di Java e programmazione orientata agli oggetti, ereditarietà e polimorfismo,​ uguaglianza e ordinamento fra gli elementi di una classe 
-  * Tipi generici e Collections 
-  * Implementazione di tipi di dato astratto tramite tipi generici e interfacce di specifica: liste, pile, code, insiemi 
-  * Implementazione di diversi algoritmi di ordinamento generici, realizzazione di un benchmark per la valutazione numerica della loro complessità computazionale e per la loro comparazione ​ 
-  * Implementazione di algoritmi su strutture dati dinamiche: alberi bilanciati, alberi binari di ricerca 
-  * Rappresentazione di grafi e alberi, implementazione di visite e altri algoritmi su grafi e alberi ​ 
-</​WRAP>​ 
----- 
-===== Materiale ===== 
-<WRAP box round center 95%> 
-**Slides e Codice** 
-  * 03/03/2016 {{:​didattica:​triennale:​algoritmi:​ay_1516:​java_oop.pdf|Richiami di Java e OOP}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​equazionisecondogrado.zip|Codice Java su Equazioni di Secondo Grado}} 
-  * 10/03/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​interfaccepolimorfismoereditarieta_.pdf|Interfacce,​ Polimorfismo,​ Ereditarietà}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​datasets.zip|Codice DataSets}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​bankaccounts.zip|Codice BankAccounts}} 
-  * 17/03/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​collections.pdf|Collections}} - [[https://​docs.oracle.com/​javase/​tutorial/​java/​generics/​|Tutorial Java sui Generics]] 
-  * 24/03/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​doublelinkedlist.pdf|Liste Concatenate Doppie}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​mylistcode-lezione_del_24_03_2016.zip|Implementazione (parziale) sviluppata a lezione}} 
-  * 31/03/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​mylist.zip|Implementazione di Liste Concatenate Doppie con Iteratore}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​bintree.zip|Implementazione di Alberi Binari. Visite e alcune funzioni ricorsive.}} 
-  * 07/04/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​trees.pdf|Alberi,​ Alberi Binari, Alberi Generici, Metodi Ricorsivi su Alberi}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​trees.zip|Codice Sviluppato a Lezione su Alberi, Alberi Binari, Alberi Generici, Metodi Ricorsivi su Alberi}} 
-  * 14/04/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​algoritmiordinamentogenerici.pdf|Slides:​ Framework di Valutazione di Algoritmi di Ordinamento (Parziale)}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​sorting.zip|Codice del Framework di Valutazione di Algoritmi di Ordinamento (Parziale) con implementazione di Bubble Sort}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​sorting-bubbleinsertionmerge.zip|Codice del Framework di Valutazione di Algoritmi di Ordinamento (Parziale) con implementazione di Bubble Sort, Insertion Sort e Merge Sort}} 
-  * 21/04/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​sorting-frameworkandalgs.zip|Framework di valutazione per Algoritmi di Ordinamento con quattro algoritmi implementati e uno (HeapSort) da testare}}, {{:​didattica:​triennale:​algoritmi:​ay_1516:​heap.zip|Implementazione fatta a lezione di Heap binomiali (da testare)}}, {{:​didattica:​triennale:​algoritmi:​ay_1516:​provavalutazione.zip|Esempio di valutazione della complessità computazionale nel caso medio usando i dati generati dal framework di valutazione}} 
-  * 28/04/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​hash.zip|Codice per tabella hash statica (sviluppato a lezione)}}, {{:​didattica:​triennale:​algoritmi:​ay_1516:​bst.zip|Codice della classe per Alberi Binari di Ricerca (parziale)}} 
-  * 05/05/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​regine.zip|BackTracking e Problema delle otto regine}}, {{:​didattica:​triennale:​algoritmi:​ay_1516:​grafi-parziale.zip|Strutture dati per la rappresentazione dei grafi (parziale, da completare nella prossima lezione)}} 
-  * 12/05/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​grafi-interface-and-edges.zip|Interface generica per grafi e classe per gli archi}}, Esercitazione:​ implementazione dell'​interfaccia tramite una classe per grafi non diretti rappresentati con liste di adiacenza. 
-  * 19/05/2016: {{:​didattica:​triennale:​algoritmi:​ay_1516:​bfs-generica-con-test.zip|Nuova interfaccia generica per grafi e codice dell'​implementazione dell'​interfaccia tramite una classe per grafi non diretti rappresentati con liste di adiacenza - Implementazione di una generica visita in ampiezza con calcolo di albero di copertura e distanza minima data dal numero di archi da attraversare per raggiungere il nodo sorgente.}} 
- 
-**Testi di Riferimento** 
-  * T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduzione agli Algoritmi e Strutture Dati, McGraw-Hill,​ 2005 
-  * C. Toffalori, F. Corradini, S. Leonesi, S. Mancini, Teoria della computabilità e della complessità,​ McGraw-Hill,​ 2005 
-  * Saranno fornite dal docente dispense e slides integrative su cui studiare e fare esercizi. Per scaricare le dispense si consulti questo sito, nella sezione qui sopra. 
- 
-**Testi di Approfondimento** 
-  * Maurizio Gabbrielli, Simone Martini, "​Linguaggi di programmazione - Principi e paradigmi 2/ed", McGraw-Hill,​ 2011, ISBN: 9788838665738,​ [[http://​www.ateneonline.it/​gabbrielli/​home.asp|Sito Web]] 
-  * Duane A. Bailey, "Java Structures. Data Structures in Java, for the Principled Programmer",​ Sito Web con versione pdf: [[http://​www.cs.williams.edu/​~bailey/​JavaStructures|http://​www.cs.williams.edu/​~bailey/​JavaStructures]] 
-</​WRAP>​ 
----- 
-===== Mini Progetti per i Frequentanti ===== 
- 
-<WRAP box round center 95%> 
- 
-**Regole di consegna dei Mini Progetti** 
-  * I file da consegnare per ogni Mini Progetto (indicati nel testo) dovranno essere caricati, entro la scadenza, in una cartella Google Drive dal nome ''​ASDL1516''​CodiceMiniProgetto''​-''​CognomeStudente''​-''​NomeStudente che deve essere condivisa, in sola lettura, tramite l'​account ''​nome-studente.cognome-studente@studenti.unicam.it''​ con gli account: 
-  * ''​luca.tesei@unicam.it''​ (docente) e 
-  * ''​lorenzo.rossi@studenti.unicam.it''​ (tutor). 
- 
-Ad esempio, lo studente Mario Rossi, alla consegna del Mini Progetto 1 con codice ''​MP1''​ dovrà caricare i file nella cartella ''​ASDL1516MP1-Rossi-Mario''​. 
- 
-Per la scadenza, farà fede la data dei file su Google Drive. ​ 
- 
- 
-**Testo dei Mini Progetti e Scadenze** 
-  * {{:​didattica:​triennale:​algoritmi:​ay_1516:​asdl1516mp1-con-allegati.pdf|Mini Progetto 1 (Codice MP1)}} - Scadenza **16 Marzo 2016 ore 23.59** 
-  * **ATTENZIONE:​ Versione del testo modificata il 7 Aprile 2016 ore 15.06**: {{:​didattica:​triennale:​algoritmi:​ay_1516:​asdl1516mp2.pdf|Mini Progetto 2 (Codice MP2)}} - Scadenza **20 Aprile 2016 ore 23.59** - Allegati: {{:​didattica:​triennale:​algoritmi:​ay_1516:​myset.zip|Stub del codice da implementare.}} {{:​didattica:​triennale:​algoritmi:​ay_1516:​mylist.zip|Implementazione di MyList<​E>​ con liste concatenate doppie.}} 
-  * {{:​didattica:​triennale:​algoritmi:​ay_1516:​asdl1516mp3.pdf|Mini Progetto 3 (Codice MP3)}} - Scadenza **11 Maggio 2016 ore 23.59** - Allegati: {{:​didattica:​triennale:​algoritmi:​ay_1516:​sortingeval.zip|Codice Framework di valutazione e codice degli altri algoritmi di ordinamento}},​ {{:​didattica:​triennale:​algoritmi:​ay_1516:​provavalutazione.zip|Esempio di valutazione}} 
-  * {{:​didattica:​triennale:​algoritmi:​ay_1516:​asdl1516mp4.pdf|Mini Progetto 4 (Codice MP4)}} - Scadenza **13 Giugno 2016 ore 23.59** - Allegati: {{:​didattica:​triennale:​algoritmi:​ay_1516:​graph-interface-edge.zip|Codice dell'​interfaccia Graph<V, E> e della classe Edge<V, E>}} 
-</​WRAP>​ 
- 
----- 
-===== Progetti Totali per i non Frequentanti ===== 
- 
-<WRAP box round center 95%> 
- 
-**Regole di consegna dei Progetti Totali** 
- 
-I file ''​.java''​ per le classi, senza indicazione di package (cioè appartenenti al package di default), e il file con la relazione in pdf, devono essere caricati entro la data di scadenza dell'​appello scelto per la consegna (si vedano le date nella sezione "​Esami"​ qui sotto) in una cartella Google Drive dal nome 
- 
-''​ASDL1516PTN-APPX-CognomeStudente-NomeStudente''​ 
- 
-dove ''​N''​ è il numero della traccia e ''​X''​ è il numero dell'​appello in cui si consegna il progetto. La cartella deve essere condivisa, in sola lettura, tramite l'​account 
- 
-''​nome-studente.cognome-studente@studenti.unicam.it''​ 
- 
-di uno degli studenti del gruppo con gli account: 
-  * luca.tesei@unicam.it 
-  * emanuela.merelli@unicam.it 
-e con gli account degli altri studenti del gruppo. ​ 
- 
-Per la scadenza, farà fede la data dei file su Google Drive. ​ 
- 
-**Testi proposti per i Progetti Totali** 
-  * {{:​didattica:​triennale:​algoritmi:​ay_1516:​asdl1516pt1.pdf|Progetto totale 1 - Codice PT1}} 
-  * ... 
-</​WRAP>​ 
- 
----- 
-===== Esami ===== 
- 
-<WRAP box round center 95%> 
-**Date Esami A.A. 2015/2016** 
- 
-Di seguito sono indicati gli appelli fissati con le relative date per la prova scritta (teoria) e la consegna dei progetti totali (laboratorio senza parziali): 
-  * Appello I 
-    * Prova Scritta: 06/06/2016, ore 11.00, Aula Da Definire 
-    * Consegna Progetto Totale di Laboratorio:​ entro Lun 13/06/2016 ore 23:59 
-    * Pubblicazione Calendario orali: Mar 14/06/2016 su questo sito 
-    * Giorni possibili per l'​orale:​ Mer 15/06/2016 - Ven 17/06/2016 
-  * Appello II 
-    * Prova Scritta: 01/07/2016, ore 11.00, Aula Da Definire 
-    * Consegna Progetto Totale di Laboratorio:​ entro Dom 10/07/2016 ore 23:59 
-    * Pubblicazione Calendario orali: Lun 11/07/2016 su questo sito 
-    * Giorni possibili per l'​orale:​ Mar 12/07/2016 - Gio 14/07/2016 
-  * Appello III 
-    * Prova Scritta: 25/07/2016, ore 11.00, Aula Da Definire 
-    * Consegna Progetto Totale di Laboratorio:​ entro Dom 24/07/2016 ore 23:59 
-    * Pubblicazione Calendario orali: Lun 25/07/2016 su questo sito 
-    * Giorni possibili per l'​orale:​ Mar 26/07/2016 - Ven 29/07/2016 
-  * Appello IV  
-    * Prova Scritta: 12/09/2016, ore 11.00, Aula Da Definire 
-    * Consegna Progetto Totale di Laboratorio:​ entro Lun 05/09/2016 ore 23:59 
-    * Pubblicazione Calendario orali: Mar 06/09/2016 su questo sito 
-    * Giorni possibili per l'​orale:​ Mer 07/09/2016 - Ven 09/09/2016 
-  * Appello V 
-    * Prova Scritta: 30/09/2016, ore 11.00, Aula Da Definire 
-    * Consegna Progetto Totale di Laboratorio:​ entro Lun 19/09/2016 ore 23:59 
-    * Pubblicazione Calendario orali: Mar 20/09/2016 su questo sito 
-    * Giorni possibili per l'​orale:​ Mer 21/09/2016 - Ven 23/09/2016 
-  * Appello VI 
-    * Prova Scritta: 07/11/2016, ore 11.00, Aula Da Definire 
-    * Consegna Progetto Totale di Laboratorio:​ entro Mar 08/11/2016 ore 23:59 
-    * Pubblicazione Calendario orali: Mer 09/11/2016 su questo sito 
-    * Giorni possibili per l'​orale:​ Gio 10/11/2016 - Ven 11/11/2016 
- 
-**Regole di esame**: la parte di laboratorio assegna un voto che fa media con il voto ottenuto nella parte teorica. La registrazione del voto è unica per il totale di 12 CFU. Il voto per la parte di laboratorio può essere ottenuto presentando un progetto, assegnato dal docente, svolto singolarmente o in gruppi di massimo 2 o 3 persone (il progetto indicherà il numero massimo di componenti del gruppo). Gli studenti che seguono le lezioni potranno sostituire la realizzazione del progetto consegnando,​ nei tempi previsti, dei Mini Progetti (si veda la sezione apposita qui sopra) assegnati durante il corso. Questi ultimi potranno essere svolti solo singolarmente. 
- 
-**Voto Finale e Registrazione** 
-  * Il voto ottenuto nella parte di laboratorio sarà comunicato al docente della parte teorica che provvederà a fare la media e alla registrazione 
-  * Qualora lo studente ottenga il voto nella parte di laboratorio prima di ottenere un voto nella parte teorica, tale voto potrà rimanere congelato, in attesa dell'​ottenimento del voto nella parte teorica, per un massimo di 6 appelli. ​ 
-</​WRAP>​