Skip to Main Content (Press Enter)

Logo UNIRC
  • ×
  • Home
  • Corsi
  • Insegnamenti
  • Professioni
  • Persone
  • Pubblicazioni
  • Strutture
  • Attività
  • Competenze

UNI-FIND
Logo UNIRC

|

UNI-FIND

unirc.it
  • ×
  • Home
  • Corsi
  • Insegnamenti
  • Professioni
  • Persone
  • Pubblicazioni
  • Strutture
  • Attività
  • Competenze
  1. Insegnamenti

85T010 - ALGORITMI E STRUTTURE DATI

insegnamento
ID:
85T010
Durata (ore):
48
CFU:
6
SSD:
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Sede:
REGGIO DI CALABRIA
Url:
Dettaglio Insegnamento:
INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI/Homeland Security Anno: 2
INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI/GENERALE Anno: 2
INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI/Elettronica e Biomedica Anno: 2
INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI/INTERNET E CYBERSECURITY Anno: 2
Anno:
2025
  • Dati Generali
  • Syllabus
  • Corsi
  • Persone
  • Altre Info

Dati Generali

Periodo di attività

Primo Ciclo Semestrale (22/09/2025 - 19/12/2025)

Syllabus

Obiettivi Formativi

Gli obiettivi formativi del corso sono i seguenti:


  • Comprendere computabilità e complessità degli algoritmi.
  • Analizzare strutture dati fondamentali e loro proprietà.
  • Progettare e valutare algoritmi di ricerca, ordinamento e su grafi.
  • Applicare tecniche Divide et Impera e Greedy.
  • Implementare strutture dati e algoritmi in Java con paradigma OOP.
  • Valutare efficienza e correttezza delle soluzioni.



Prerequisiti

Conoscenza dei fondamenti della programmazione e conoscenza basilare del linguaggio Java e dell'ambiente di esecuzione Eclipse.



Metodi didattici

Lezioni frontali ed esercitazioni. Le esercitazioni, che riguardano principalmente l'implementazione delle strutture dati in Java, sono condotte attraverso metodi didattici interattivi che favoriscono il lavoro di gruppo, l'acquisizione di competenze pratiche e il ruolo proattivo dello studente.



Verifica Apprendimento

Prova scritta della durata due ore che verte sulla soluzione in Java di problemi che necessitano l'uso corretto di strutture dati e prova orale che mira ad accertare le conoscenze acquisite su tutto il programma del corso.


Il punteggio, che tiene conto sia della prova scritta sia della prova orale, verrà attribuito secondo il seguente schema:


30 - 30 e lode Eccellente Lo studente: - dimostra una conoscenza completa e dettagliata della materia: conosce i contenuti rilevanti, utilizza una terminologia corretta, individua e spiega i principali concetti, integra approfondimenti personali nella propria sintesi; - evidenzia una comprensione eccellente della materia: distingue chiaramente tra le idee principali e quelle di sopporto, sa inquadrare i punti chiave, rinforza gli argomenti con riferimenti al materiale integrativo o ad approfondimenti individuali, sviluppa collegamenti interdisciplinari; - manifesta capacità ben consolidate di applicare le conoscenze e di analizzare i risultati; - espone la materia in modo chiaro e strutturato: il suo discorso è organizzato, logico, maturo e conciso.

28 - 29 Ottimo Lo studente: - dimostra una conoscenza approfondita della materia: conosce i contenuti rilevanti, utilizza una terminologia corretta, individua e spiega la maggior parte dei principali concetti; - evidenzia una solida comprensione della materia: inquadra la maggior parte dei punti chiave benché non sempre distingua bene gli argomenti principali da quelli meno importanti, discute gli argomenti con riferimenti al materiale integrativo o ad approfondimenti individuali; - manifesta ottime capacità di applicare le conoscenze e di analizzare i risultati; - espone la materia in modo chiaro e articolato: il suo discorso è organizzato, logico, maturo ed essenziale, pur ammettendo qualche imprecisione.

25 - 27 Buono Lo studente: - dimostra un’ampia conoscenza della materia: conosce, anche se non spiega completamente, i contenuti rilevanti; utilizza la terminologia, ma non sempre in modo preciso; individua i concetti chiave, ma non riesce a spiegarli completamente o con precisione. - evidenzia una comprensione adeguata della materia: distingue i punti chiave importanti, ma non riesce a inquadrarli completamente; - manifesta buone capacità di applicare le conoscenze; - espone in modo chiaro, ma non sempre completo, con un’organizzazione schematica e pensieri talvolta frammentati e ripetitivi.

22 - 24 Discreto Lo studente: - dimostra un’accettabile conoscenza della materia: conosce la maggioranza dei contenuti ma manifesta lacune, mostra una certa confusione in alcuni concetti importanti anche se non essenziali; - evidenzia una comprensione essenziale della materia: non riesce sempre a inquadrare tutti i suoi argomenti o talvolta lo fa con imprecisione; - manifesta discrete capacità di applicare i concetti fondamentali della materia; - espone in modo corretto, ma senza una struttura del tutto chiara e coerente, inserendo in alcuni punti dello sviluppo materiale poco rilevante.

18 - 21 Sufficiente Lo studente: - dimostra una limitata conoscenza della materia: conosce i contenuti più rilevanti ma manifesta numerose lacune, individua una buona parte dei concetti chiave ma non riesce a illustrarli con completezza e precisione; - dimostra una comprensione basica della materia: ha qualche difficoltà a distinguere i punti chiave e non sempre riesce a inquadrarli compitamente per incompletezza o imprecisione; - manifesta incertezze nell’applicare i concetti fondamentali della materia; espone in modo poco chiaro e confuso, usa la lingua in modo poco organizzato, con pensieri frammentati e ripetitivi, non sempre utilizza la terminologia con precisione.

Insufficiente Lo studente: - dimostra una conoscenza scarsa e frammentaria della materia: non conosce i contenuti essenziali, manifestando estese lacune, e non individua i concetti chiave; - manifesta gravi errori di comprensione, non risponde a numerose domande o non risolve numerosi problemi; manifesta errori nell’applicare i concetti fondamentali della materia; - non raggiunge un livello accettabile di articolazione del pensiero relativo alla materia.


Testi

  • Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, Algoritmi e strutture dati, McGraw-Hill.
  • 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. Bertossi, Strutture, Algoritmi, Complessita', ECIG, Universita' di Pisa.
  • Cay Horstmann, Concetti di informatica e fondamenti di Java, Apogeo.



Contenuti

Introduzione (1 CFU)

Problemi e algoritmi

Cenni sulla nozione di Calcolabilita’ e sulla tesi di Church-Turing.

Complessità computazionale di problemi ed algoritmi (notazione O, Omega, Theta).

Richiami di nozioni di relazione di equivalenza e d'ordine.

Insiemi parzialmente ordinati e reticoli.

Struttura della memoria durante l'esecuzione dei programmi e tipi di passaggio degli argomenti.


Tipi di Dato e Strutture Dati (1.5 CFU)

Vettori, Matrici, Matrici Simmetriche, Liste, Liste Ordinate, Pile, Code, Heap, Alberi Binari di Ricerca, Alberi Generali, Code di Priorita', Insiemi, Dizionari, Tabelle Hash, Grafi Orientati e Non Orientati, Grafi Pesati.

Algoritmi Fondamentali, Tecniche di Programmazione e Algoritmi su Grafi (1.5 CFU)

Algoritmi di Base su Grafi (Raggiungibilita' di nodi in un grafo, Componenti Connesse,

Albero Ricoprente)

Tecniche di Ricerca e di Ordinamento

Heap Sort

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).

Esempi di Applicazione alle Reti di Computer degli Algoritmi su Grafi (routing, connettivita’, etc.).

Programmazione OO in Java (2 CFU)

Caratteristiche OO di Java (Incapsulamento, Ereditarietà, Polimorfismo, Generics, Interfacce) Implementazione delle strutture dati e degli algoritmi studiati in Java e studio di librerie standard di Java



RISULTATI ATTESI


I risultati attesi del corso, in accordo ai descrittori di Dublino, sono

i seguenti:



Conoscenze e capacità di comprensione:

Gli studenti acquisiranno una conoscenza approfondita dei concetti fondamentali della computabilità, della complessità computazionale e delle strutture dati, con una comprensione critica delle tecniche di progettazione algoritmica e delle applicazioni pratiche nei linguaggi di programmazione object-oriented.

Capacità di applicare conoscenze e comprensione:

Gli studenti saranno in grado di applicare le conoscenze acquisite per progettare, implementare e ottimizzare algoritmi in Java, utilizzando correttamente strutture dati e tecniche di programmazione. Saranno in grado di risolvere problemi complessi in modo autonomo e rigoroso, integrando concetti teorici con la pratica.

Autonomia di giudizio:

Gli studenti svilupperanno la capacità di analizzare criticamente problemi computazionali, scegliendo e giustificando le soluzioni più adeguate in termini di complessità e risorse. Saranno in grado di valutare vantaggi e svantaggi di diverse tecniche e approcci, considerando scenari reali o ipotetici.

Capacità di comunicazione:

Gli studenti saranno in grado di comunicare chiaramente concetti complessi, soluzioni algoritmiche e strutture dati a interlocutori specialisti e non specialisti, utilizzando un linguaggio tecnico preciso e strumenti appropriati come diagrammi, pseudocodice e codice Java documentato.

Capacità di apprendimento:

Gli studenti acquisiranno competenze di apprendimento autonomo per approfondire ulteriormente le tematiche del corso e affrontare nuove tecnologie e paradigmi di programmazione. Saranno in grado di accedere a fonti scientifiche, analizzarle criticamente e integrarle nel loro processo di apprendimento continuo.


Altre informazioni

Codice Teams: 9jvzmzo

Canale utilizzato per distribuire agli studenti esercitazioni e altro materiale didattico.


Corsi

Corsi

INGEGNERIA INFORMATICA, ELETTRONICA E DELLE TELECOMUNICAZIONI 
Laurea
3 anni
No Results Found

Persone

Persone (2)

BUCCAFURRI Francesco
Gruppo 09/IINF-05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
AREA MIN. 09 - Ingegneria industriale e dell'informazione
Settore IINF-05/A - Sistemi di elaborazione delle informazioni
Docenti di ruolo di Ia fascia
De Angelis Vincenzo
Docenti
No Results Found

Altre Info

Insegnamento principale

ALGORITMI E STRUTTURE DATI
  • Utilizzo dei cookie

Realizzato con VIVO | Designed by Cineca | 26.4.3.0