Questo sito utilizza cookie tecnici e di terze parti. Se vuoi saperne di più o negare il consenso consulta l'informativa sulla privacy. Proseguendo la navigazione o cliccando su "Chiudi" acconsenti all'uso dei cookie. Chiudi
vai al contenuto vai al menu principale vai alla sezione Accessibilità vai alla mappa del sito
Login  Docente | Studente | Personale | Italiano  English
 
Home page Home page

ALGORITMI E STRUTTURE DATI

Corso Ingegneria dell'Informazione
Curriculum Curriculum unico
Orientamento Orientamento unico
Anno Accademico 2018/2019
Crediti 6
Settore Scientifico Disciplinare ING-INF/05
Anno Secondo anno
Unità temporale Primo semestre
Ore aula 48
Attività formativa Attività formative caratterizzanti

Canale unico

Docente FRANCESCO ANTONIO BUCCAFURRI
Obiettivi OBIETTIVI FORMATIVI

Gli obiettivi formativi del corso, in accordo ai descrittori di Dublino, sono
i seguenti:

1) Conoscenze e capacità di comprensione
Comprensione e assimilazione del concetto di tipo di dato astratto come strumento di rappresentazione della realtà nonché dei principali algoritmi, con particolare riguardo agli algoritmi su grafi (ed alle applicazioni alle reti di computer), delle principali tecniche di programmazione e dell'analisi di complessità degli algoritmi.

2) Utilizzazione delle conoscenze e capacità di comprensione
Capacità di applicare i concetti teorici assimilati nella risoluzione di problemi e opportuni casi d’uso. Acquisizione di un appropriato livello di autonomia nell’apprendimento delle tecniche di progetto di algoritmi e di implementazione che seguono il paradigma object-oriented (con riferimento a Java).

3) Capacità di trarre conclusioni
Autonomia di giuduzio nella scelta di soluzioni algoritmiche sulla base dei costi computazionali e sulla scelta di un linguaggio di programmazione in relazione alla sua capacità di rappresentare il tipo di dato astratto


4) Abilità comunicative
Capacità di comunicare con adeguata competenza tecnica con altri partner in attività di gruppo di implementazione su larga scala.

5) Capacità di apprendere
Capacità di apprendimento di nuove tecniche di programmazione e strutture dati più avanzate nonché di diversi linguaggi che seguono il paradigma object-oriented.




MODALITA' DI ACCERTAMENTO E VALUTAZIONE


La prova d'esame consiste in una prova scritta della durata di 1,5 ore e di una prova orale la cui durata media è di 25 minuti.
La prova scritta consiste nella soluzione di un problema di programmazione tipicamente riferito agli algoritmi su grafo con uso di altre strutture dati. E' prevista la progettazione delle classi e l'implementazione di 4-5 metodi.
Nella prova orale vengono discussi i concetti illustrati a lezione inerenti al programma del corso, spaziando su almeno 3 argomenti diversi.
La prova scritta viene valutata attraverso un giudizio. E' necessario raggiungere una soglia minima che corrisponde alla corretta progettazione delle classi e alla soluzione di un numero minimo di quesiti (di norma 2)
L'esito dell’esame sarà risulterà dalla valutazione complessiva di scritto e orale.

L’obiettivo della prova scritta, in relazione ai descrittore di Dublino, è quello di valutare:

1) Conoscenze e capacità di comprensione
Il Grado di comprensione e assimilazione del concetto di tipo di dato astratto come strumento di rappresentazione della realtà nonché dei principali algoritmi, delle principali tecniche di programmazione e dell'analisi di complessità degli algoritmi.

2) Utilizzazione delle conoscenze e capacità di comprensione
La capacità di applicare i concetti teorici assimilati nella risoluzione di problemi e opportuni casi d’uso, nonchè
l'acquisizione di un appropriato livello di autonomia nell’apprendimento delle tecniche di progetto di algoritmi e di implementazione che
seguono il paradigma object-oriented (con riferimento a Java).

3) Capacità di trarre conclusioni
L'autonomia di giuduzio nella scelta di soluzioni algoritmiche sulla base dei costi computazionali

L’obiettivo della prova orale, in relazione ai descrittore di Dublino, è quello di valutare:

1) Conoscenze e capacità di comprensione
Il Grado di comprensione e assimilazione del concetto di tipo di dato astratto come strumento di rappresentazione della realtà nonché dei principali algoritmi.

2) Utilizzazione delle conoscenze e capacità di comprensione
La capacità di applicare i concetti teorici assimilati nella risoluzione di problemi nonchè
l'acquisizione di un appropriato livello di autonomia nell’apprendimento delle tecniche di progetto di algoritmi e di implementazione che
seguono il paradigma object-oriented.

3) Capacità di trarre conclusioni
L'autonomia di giuduzio nella scelta di soluzioni algoritmiche sulla base dei costi computazionali


4) Abilità comunicative
La capacità di comunicare con adeguata competenza tecnica con altri partner in attività di gruppo di implementazione su larga scala.

5) Capacità di apprendere
In misura minoritaria, la capacità di apprendimento di nuove tecniche di programmazione e strutture dati più avanzate nonché di diversi linguaggi che seguono il paradigma object-oriented.


Il voto finale sarà attribuito secondo il seguente criterio di valutazione:

30 e lode: conoscenza completa, approfondita e critica degli argomenti, eccellente proprietà di linguaggio, completa ed originale capacità interpretativa, piena capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti;
28 - 30: conoscenza completa e approfondita degli argomenti, ottima proprietà di linguaggio, completa ed efficace capacità interpretativa, in grado di applicare autonomamente le conoscenze per risolvere i problemi proposti;
24 - 27: conoscenza degli argomenti con un buon grado di padronanza, buona proprietà di linguaggio, corretta e sicura capacità interpretativa, buona capacità di applicare in modo corretto la maggior parte delle conoscenze per risolvere i problemi proposti;
20 - 23: conoscenza adeguata degli argomenti ma limitata padronanza degli stessi, soddisfacente proprietà di linguaggio, corretta capacità interpretativa, più che sufficiente capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti;
18 - 19: conoscenza di base degli argomenti principali, conoscenza di base del linguaggio tecnico, sufficiente capacità interpretativa, sufficiente capacità di applicare le conoscenze di base acquisite;
Insufficiente: non possiede una conoscenza accettabile degli argomenti trattati durante il corso.
Programma Introduzione
Problemi e algoritmi
Cenni sulla nozione di Calcolabilita’ e sulla tesi di Church-Turing.
Complessità computazionale di problemi ed algoritmi (notazione O, Omega, Theta)
Tipi di Dato e Strutture Dati
Vettori, Matrici, Liste,Liste Ordinate, Pile, Code, Heap, Alberi Binari di Ricerca, Alberi
Generali, Code di Priorita', Insiemi, Dizionari, Tabelle Hash, Vettori Associativi, Grafi
Orientati e Non Orientati, Grafi Pesati, Trie.
Algoritmi Fondamentali, Tecniche di Programmazione e Algoritmi su Grafi
Algoritmi di Base su Grafi (Raggiungibilita' di nodi in un grafo, Componenti Connesse,
Albero Ricoprente)
Tecniche di Ricerca e di Ordinamento
Divide et Impera (approf: Ricerca Binaria, Merge Sort, Tecniche Quadratiche di
Ordinamento, Calcolo del Fattoriale, Calcolo della Successione di Fibonacci)
Equazione di Ricorrenza per la definizione della complessita’ delle tecniche Divide et
Impera.
Tecniche Golose (Knapsack, Algoritmo di Dijkstra, Algoritmo di Prim, Implementazione con vettori e con heap indicizzato, cenni all’Algoritmo di Huffman per compressione lossless).
Esempi di Applicazione alle Reti di Computer degli Algoritmi su Grafi (routing, connettivita’,
etc.).
Programmazione OO in Java
Caratteristiche OO di Java (Incapsulamento, Ereditarietà, Polimorfismo, Template)
Implementazione delle strutture dati e degli algoritmi studiati in Java.
Testi docente • Camil Demetrescu, Umberto Ferraro Petrillo, Irene Finocchi, Giuseppe F. Italiano,
Progetto di algoritmi e strutture dati in Java, McGraw-Hill.
• Cormen-Leiserson-Rivest: Introduzione agli algoritmi e strutture dati 2a ediz.,
McGrawHill.
• Ausiello, et al., Teoria e Progetto di Algoritmi Fondamentali, Franco Angeli.
• A.A., Bertossi, Strutture, Algoritmi, Complessita', ECIG, Universita' di Pisa.
• Cay Horstmann, Concetti di informatica e fondamenti di Java, Apogeo.
• Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, Algoritmi e strutture dati
2/ed, McGraw-Hill.
Erogazione tradizionale
Erogazione a distanza No
Frequenza obbligatoria No
Valutazione prova scritta
Valutazione prova orale
Valutazione test attitudinale No
Valutazione progetto No
Valutazione tirocinio No
Valutazione in itinere No
Prova pratica No
Docente ROBERTO NARDONE
Obiettivi OBIETTIVI FORMATIVI

Gli obiettivi formativi del corso, in accordo ai descrittori di Dublino, sono
i seguenti:

1) Conoscenze e capacità di comprensione
Comprensione e assimilazione del concetto di tipo di dato astratto come strumento di rappresentazione della realtà nonché dei principali algoritmi, con particolare riguardo agli algoritmi su grafi (ed alle applicazioni alle reti di computer), delle principali tecniche di programmazione e dell'analisi di complessità degli algoritmi.

2) Utilizzazione delle conoscenze e capacità di comprensione
Capacità di applicare i concetti teorici assimilati nella risoluzione di problemi e opportuni casi d’uso. Acquisizione di un appropriato livello di autonomia nell’apprendimento delle tecniche di progetto di algoritmi e di implementazione che seguono il paradigma object-oriented (con riferimento a Java).

3) Capacità di trarre conclusioni
Autonomia di giuduzio nella scelta di soluzioni algoritmiche sulla base dei costi computazionali e sulla scelta di un linguaggio di programmazione in relazione alla sua capacità di rappresentare il tipo di dato astratto


4) Abilità comunicative
Capacità di comunicare con adeguata competenza tecnica con altri partner in attività di gruppo di implementazione su larga scala.

5) Capacità di apprendere
Capacità di apprendimento di nuove tecniche di programmazione e strutture dati più avanzate nonché di diversi linguaggi che seguono il paradigma object-oriented.




MODALITA' DI ACCERTAMENTO E VALUTAZIONE


La prova d'esame consiste in una prova scritta della durata di 1,5 ore e di una prova orale la cui durata media è di 25 minuti.
La prova scritta consiste nella soluzione di un problema di programmazione tipicamente riferito agli algoritmi su grafo con uso di altre strutture dati. E' prevista la progettazione delle classi e l'implementazione di 4-5 metodi.
Nella prova orale vengono discussi i concetti illustrati a lezione inerenti al programma del corso, spaziando su almeno 3 argomenti diversi.
La prova scritta viene valutata attraverso un giudizio. E' necessario raggiungere una soglia minima che corrisponde alla corretta progettazione delle classi e alla soluzione di un numero minimo di quesiti (di norma 2)
L'esito dell’esame sarà risulterà dalla valutazione complessiva di scritto e orale.

L’obiettivo della prova scritta, in relazione ai descrittore di Dublino, è quello di valutare:

1) Conoscenze e capacità di comprensione
Il Grado di comprensione e assimilazione del concetto di tipo di dato astratto come strumento di rappresentazione della realtà nonché dei principali algoritmi, delle principali tecniche di programmazione e dell'analisi di complessità degli algoritmi.

2) Utilizzazione delle conoscenze e capacità di comprensione
La capacità di applicare i concetti teorici assimilati nella risoluzione di problemi e opportuni casi d’uso, nonchè
l'acquisizione di un appropriato livello di autonomia nell’apprendimento delle tecniche di progetto di algoritmi e di implementazione che
seguono il paradigma object-oriented (con riferimento a Java).

3) Capacità di trarre conclusioni
L'autonomia di giuduzio nella scelta di soluzioni algoritmiche sulla base dei costi computazionali

L’obiettivo della prova orale, in relazione ai descrittore di Dublino, è quello di valutare:

1) Conoscenze e capacità di comprensione
Il Grado di comprensione e assimilazione del concetto di tipo di dato astratto come strumento di rappresentazione della realtà nonché dei principali algoritmi.

2) Utilizzazione delle conoscenze e capacità di comprensione
La capacità di applicare i concetti teorici assimilati nella risoluzione di problemi nonchè
l'acquisizione di un appropriato livello di autonomia nell’apprendimento delle tecniche di progetto di algoritmi e di implementazione che
seguono il paradigma object-oriented.

3) Capacità di trarre conclusioni
L'autonomia di giuduzio nella scelta di soluzioni algoritmiche sulla base dei costi computazionali


4) Abilità comunicative
La capacità di comunicare con adeguata competenza tecnica con altri partner in attività di gruppo di implementazione su larga scala.

5) Capacità di apprendere
In misura minoritaria, la capacità di apprendimento di nuove tecniche di programmazione e strutture dati più avanzate nonché di diversi linguaggi che seguono il paradigma object-oriented.


Il voto finale sarà attribuito secondo il seguente criterio di valutazione:

30 e lode: conoscenza completa, approfondita e critica degli argomenti, eccellente proprietà di linguaggio, completa ed originale capacità interpretativa, piena capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti;
28 - 30: conoscenza completa e approfondita degli argomenti, ottima proprietà di linguaggio, completa ed efficace capacità interpretativa, in grado di applicare autonomamente le conoscenze per risolvere i problemi proposti;
24 - 27: conoscenza degli argomenti con un buon grado di padronanza, buona proprietà di linguaggio, corretta e sicura capacità interpretativa, buona capacità di applicare in modo corretto la maggior parte delle conoscenze per risolvere i problemi proposti;
20 - 23: conoscenza adeguata degli argomenti ma limitata padronanza degli stessi, soddisfacente proprietà di linguaggio, corretta capacità interpretativa, più che sufficiente capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti;
18 - 19: conoscenza di base degli argomenti principali, conoscenza di base del linguaggio tecnico, sufficiente capacità interpretativa, sufficiente capacità di applicare le conoscenze di base acquisite;
Insufficiente: non possiede una conoscenza accettabile degli argomenti trattati durante il corso.
Programma Programmazione OO in Java. Caratteristiche OO di Java (Incapsulamento, Ereditarietà, Polimorfismo, Template). Implementazione delle strutture dati e degli algoritmi studiati in Java. Lista, pila, coda, grafo in Java.
Testi docente Camil Demetrescu, Umberto Ferraro Petrillo, Irene Finocchi, Giuseppe F. Italiano, Progetto di algoritmi e strutture dati in Java, McGraw-Hill.
Cormen-Leiserson-Rivest: Introduzione agli algoritmi e strutture dati 2a ediz., McGrawHill.
Erogazione tradizionale
Erogazione a distanza No
Frequenza obbligatoria No
Valutazione prova scritta
Valutazione prova orale
Valutazione test attitudinale No
Valutazione progetto No
Valutazione tirocinio No
Valutazione in itinere No
Prova pratica No

Ulteriori informazioni


Documenti inseriti da Francesco Buccafurri

Nessun materiale didattico inserito per questo insegnamento

Documenti inseriti da

Nessun materiale didattico inserito per questo insegnamento

Elenco dei rievimenti:

Descrizione Avviso
Ricevimenti di: Francesco Buccafurri
martedì 11.00-13.00, presso lo studio del docente
Nessun avviso pubblicato
Nessuna lezione pubblicata
Codice insegnamento online non pubblicato

Cerca nel sito

 

Posta Elettronica Certificata

Direzione

Tel +39 0965.1693217/3252

Fax +39 0965.1693247

Indirizzo e-mail


Protocollo

Tel +39 0965.1693422

Fax +39 0965.1693247

Indirizzo e-mail

Didattica e orientamento

Tel +39 0965.16933385

Fax +39 0965.1693247

Indirizzo e-mail


Segreteria studenti

Tel +39 0965.1691475

Fax +39 0965.1691474

Indirizzo e-mail

Amministrazione

Tel +39 0965.1693214

Fax +39 0965.1693247

Indirizzo e-mail


Ricerca

Tel +39 0965.1693422

Fax +39 0965.1693247

Indirizzo e-mail

Social

Facebook

Twitter

YouTube

Instagram