07 December 06 - 00:44Informazioni Generali
Programma del Corso
- Strutture dati elementari (array, liste concatenate)
- Tipi di dati astratti (stack, code FIFO e code generalizzate)
- Ricorsione e alberi (algoritmi ricorsivi, divide et impera, alberi)
- Merging e mergesort (merging a due vie, merging astratto sul posto, mergesort top-down, mergesort bottom.up, mergesort su liste concatenate)
- Code con priorità e heapsort (implementazioni elementari, heap, heapsort, code binomiali)
- Tabelle di simboli e alberi binari di ricerca (tabelle di simboli, ricerca indicizzata, ricerca sequenziale, alberi binari di ricerca)
- Hashing (funzioni di hash, concatenazioni separate, scansione lineare, hashing doppio, tabelle hash dinamiche)
- Algoritmi greedy, algoritmi su grafi, string matching
Testi Consigliati
- Algoritmi in JAVA (terza edizione), Robert Sedgewick, Addison-Wesley, 2003, ISBN: 88-7192-169-0
Orario di ricevimento
- Lunedì dalle 10:00 a 12:00, Aula dottorandi
Elenco delle lezioni
| Data | Argomento | Riferimenti | Esercizi proposti |
|---|---|---|---|
| 06/12 ore 9:00 | Strutture dati elementari | slide | esercizi..... |
| 14/12 ore 9:00 | Tipi di dati astratti | slide | esercizi..... |
Regolamento
Il corso ha come obiettivo quello di offrire una panoramica sulla progettazione ed implementazione dei principali algoritmi e strutture dati presenti in letteratura. Ogni lezione prevede un'introduzione all'argomento trattato e la soluzione di uno o più esercizi inerenti lo stesso argomento. Ogni esercitazione ha lo scopo di produrre un'applicazione che possa essere autonoma ossia che possa essere compilata ed eseguita senza errori (e che chiaramente esegua il lavoro per il quale è stata scritta!).Per quanto riguarda il progetto vi troverete di fronte ad un problema che richiede l'uso di algoritmi e strutture dati specifiche e dovrete essere in grado di:
- Analizzare dettagliatamente il problema
- Fornirne una soluzione algoritmica
- Implementare la soluzione proposta nel modo più efficiente possibile
Per ogni progetto è richiesta la consegna di:
- Una relazione che descriva il problema, la soluzione algoritmica proposta e l'implementazione fornita
- Il codice dell'applicazione opportunamente commentato.
Appelli di Febbraio - Progetto 1 (Scaduto)
- Coda di priorità di Eventi senza duplicati, [PDF], [Progetto Eclipse], [Codice Sorgente delle Interfacce]
Appelli di Febbraio - Progetto 2 (Scaduto)
- Il problema della rana affamata, [PDF], [Progetto Eclipse], [Codice Sorgente delle Interfacce]
Applet dimostrativa per risolvere il problema della rana
Appello di Aprile - Progetto 1
(Scadenza 15 Aprile)
- TernaryHeap, [PDF]
Appello di Aprile - Progetto 2
(Scadenza 15 Aprile)
- Graph, [PDF]
Appello di Giugno e Settembre - Progetto 1
(Scadenza 10 Giugno o 2 Settembre)
- TernaryHeap, [PDF]
Appello
di Giugno e Settembre - Progetto 2
(Scadenza 10 Giugno o 2 Settembre)
- Graph [PDF]
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
Consegna dei progetti
- La consegna dei progetti deve avvenire almeno 5 giorni prima dell'esame
Calendario degli esami
- Giovedì 22 Febbraio 2007 (Consegna progetti Sabato 17 Febbraio 2007).
- Venerdì 20 Aprile 2007 (Consegna progetti Domenica 15 Aprile 2007).
- Martedì 12 Giugno 2007 (Consegna progetti Domenica 10 Giugno 2007).
- Martedì 4 Settembre 2007 (Consegna progetti Domenica 2 Settembre 2007).
Gruppi di lavoro per il 2007
Gruppo 01Progetto n. 1
| Gruppo 02Progetto n. 2
| Gruppo 03Progetto n. 1
| Gruppo 04Progetto n. 2
| Gruppo 05Progetto n. 1
|
Gruppo 06Progetto n. 2
| Gruppo 07Progetto n. 1
| Gruppo 08Progetto n. 2
| Gruppo 09Progetto n. 1
| Gruppo 10Progetto n. 2
|
Gruppo 11Progetto n. 2
| Gruppo 12Progetto n. 1
| Gruppo 13Progetto n. 2
| Gruppo 14Progetto n. 1
| Gruppo 15Progetto n. 2
|
Gruppo 16Progetto n. 2
| Gruppo 17Progetto n. 1
| Gruppo 18Progetto n. 2
|
Note
- Il linguaggio utilizzato a lezione e da utilizzare per esercitazioni e progetti è Java, di seguito trovate elencate alcune risorse disponibili in rete:
- (fornire riferimento a manuale qui!)
- L'ambiente di sviluppo consigliato è Eclipse. Tuttavia non siete obbligati, potete utilizzare l'ambiente o editor che preferite ma non sarete supportati per eventuali problemi!
- Java mette a disposizione numerosissime librerie con struttore dati, algoritmi, etc. La soluzione degli esercizi non prevede l'uso di queste librerie poichè ha lo scopo di mostrare come liberie analoghe a queste possono essere realizzate! Al contrario nella soluzione dei progetti potete far uso di queste librerie poichè lo scopo è quello di affrontare un problema e fornirne una soluzione adottando tutte le possibilità che Java offre.
- La relazione va consegnata nel formato PDF o PS.
Organizzazione
Per la realizzazione delle esercitazioni e del progetto è consentito lavorare in gruppi di massimo 3 elementi. E' opportuno che la formazione dei gruppi avvenga il prima possibile. Per la tale scopo dovete inviare agli esercitatori (vedi sotto!) una mail per gruppo con soggetto: [LASD06] Richiesta gruppo nella quale indicate in maniera chiara i vostri nomi, cognomi, ed indirizzi email. Riceverete come risposta una mail di accettazione con la quale vi sarà assegnato un codice di gruppo, nel seguito ogni comunicazione email dovrà contenere nell'oggetto la stringa [LASD06#codice] seguita poi dall'oggetto della mail.
Gli esercitatori sono:
- Francesco De Angelis per la sede di Ascoli Piceno (francesco.deangelis [AT] unicam.it)
- Ezio Bartocci per la sede di Camerino (ezio.bartocci [AT] unicam.it)
Dovete inviare le email all'esercitatore della vostra sede ed in "cc:" all'altro esercitatore.
ezio - default - / No trackbacks - § ¶







