Dipartimento di Ingegneria e architettura Ingegneria informatica Algoritmi e Strutture Dati ING-INF/05 (6 CFU) – (Ingegneria Informatica) Pds 2023-2024 – III anno

Home Didattica Corsi di Laurea triennali e Magistrali Ingegneria informatica (Ingegneria informatica) Frequentare il corso (Ingegneria Informatica) Pds 2023-2024 Algoritmi e Strutture Dati ING-INF/05 (6 CFU) – (Ingegneria Informatica) Pds 2023-2024 – III anno
Insegnamento Algoritmi e Strutture Dati
CFU 6
Settore Scientifico Disciplinare ING-INF/05
Nr. ore di aula 36
Nr. ore di studio autonomo 114
Mutuazione Nessuna
Annualità III anno
Periodo di svolgimento II Semestre
Docente Ruolo SSD docente
Giovanni Pau PA ING-INF/05
* PO (professore ordinario), PA (professore associato), RTD (ricercatore a tempo determinato), RU (Ricercatore a tempo indeterminato), DC (Docente a contratto).
Propedeuticità Nessuna
Prerequisiti È consigliata la conoscenza della programmazione orientata agli oggetti
Sede delle lezioni Facoltà di Ingegneria e Architettura
Orario delle lezioni

L’orario delle lezioni sarà pubblicato sull’Agenda WEB dell’Università degli Studi di Enna “Kore”

https://gestioneaule.unikore.it/agendaweb_unikore/

 

Obiettivi formativi

L’insegnamento di propone di fornire agli studenti gli strumenti teorici e pratici, anche attraverso il linguaggio di programmazione Python, per affrontare la progettazione di soluzioni algoritmiche corrette ed efficienti, tramite l’uso di opportune strutture dati, per un’ampia gamma di problemi computazionali.

Contenuti del Programma
N. Argomento Tipologia Durata in ore
1 Caratteristiche di algoritmi e strutture dati

Python: operazioni preliminari, IDLE e shell, interprete

Frontale 2
2 Python: commenti, valutazione espressioni, operazioni aritmetiche, variabili e operatori, funzioni predefinite, tipi di dato, stile di programmazione Frontale 3
3 Python: sequenze e flow chart, controllo e selezione, blocchi di codice e indentazione, operatori logici Frontale 3
4 Python: moduli, funzioni e numeri casuali, gestione variabili locali e globali, ambiente grafico turtle e relativi metodi, cicli Frontale 3
5 Python: stringhe, liste, tuple, insiemi e dizionari Frontale 3
6 Python: errori, test e debugging, file, dati e statistica Frontale 3
7 Analisi asintotica di algoritmi Frontale 3
8 Analisi ed implementazione delle strutture dati con programmazione orientata agli oggetti mediante il linguaggio Python: pile, code e code doppie, liste concatenate, alberi, code prioritarie, mappe, tabelle di hash, alberi di ricerca Frontale 16
Risultati di apprendimento (descrittori di Dublino)

I risultati di apprendimento attesi sono definiti secondo i parametri europei descritti dai cinque descrittori di Dublino.

  1. Conoscenza e capacità di comprensione: lo studente alla fine del corso acquisirà una buona conoscenza di algoritmi e delle più importanti strutture dati utilizzate nella programmazione avanzata. Inoltre, sarà in grado di analizzare e comprendere il codice sorgente in linguaggio Python di diversi algoritmi utilizzati per lo sviluppo del software.
  2. Conoscenza e capacità di comprensione applicate: lo studente sarà in grado di valutare le caratteristiche, i vantaggi e le limitazioni di diversi algoritmi e strutture dati. Inoltre, attraverso il linguaggio Python, sarà in grado non solo di progettare, analizzare e valutare le soluzioni software a problemi di media complessità ma anche di sviluppare nuove soluzioni software, valutandone la qualità in termini di semplicità, efficacia ed efficienza.
  3. Autonomia di giudizio: lo studente sarà in grado di effettuare l’analisi sulle problematiche relative alla progettazione software. Inoltre, a partire da precise specifiche, sarà in grado di implementare opportune soluzioni software mediante il linguaggio Python, valutandone la qualità in termini di semplicità, leggibilità, efficienza e possibilità di riutilizzo.
  4. Abilità comunicative: lo studente acquisirà la capacità di comunicare ed esprimere problematiche inerenti all’oggetto del corso. Sarà in grado di sostenere conversazioni su tematiche relative alle implementazioni software di algoritmi e strutture dati efficienti. Inoltre, sarà in grado di utilizzare un linguaggio semplice e chiaro per la descrizione dei processi di analisi e di sintesi di soluzioni software a problemi di media complessità.
  5. Capacità di apprendere: lo studente svilupperà la capacità di apprendere i processi di analisi e di sintesi relativi alla codifica di algoritmi di media complessità ed alla relativa implementazione mediante il linguaggio Python.
Testi per lo studio della disciplina

Testi consigliati

 

Maurizio Boscaini, “Imparare a programmare con Python – il manuale per programmatori dai 13 anni in su,” Apogeo

https://www.apogeonline.com/libri/imparare-a-programmare-con-python-maurizio-boscaini/

 

Kenneth A. Lambert, “Programmazione in Python”, Maggioli Editore

http://www.apogeoeducation.com/programmazione-in-python.html

 

Michael T. Goodrich – Roberto Tamassia – Michael H. Goldwasser, “Data structures and Algorithms in Python,” Wiley

https://www.amazon.it/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275

 

 

 

 

Testi per approfondimenti

 

Michael T. Goodrich – Roberto Tamassia – Michael H. Goldwasser, “Algoritmi e strutture dati in Java,” Apogeo

http://www.apogeoeducation.com/9788891613394-algoritmi-e-strutture-dati-in-java.html

 

Alan A. Bertossi, Alberto Montresor, “Algoritmi e strutture di dati,” CittàStudi

https://www.libreriauniversitaria.it/algoritmi-strutture-dati-bertossi-alan/libro/9788825173956

 

Cay Horstmann – Rance D. Necaise, “Concetti di informatica e fondamenti di Python,” Apogeo

http://www.apogeoeducation.com/informatica/concetti-di-informatica-e-fondamenti-di-python.html

 

Le slide proiettate a lezione che non sono protette da copyright sono fornite dal docente titolare dell’insegnamento e messe a disposizione degli studenti sul sito web dell’Università.

Metodi e strumenti per la didattica

Le lezioni saranno accompagnate da un’analisi di casi di studio e sviluppo di esempi al fine di stimolare una concezione pratica dell’apprendimento sia per la stesura dell’elaborato da presentare in sede d’esame sia per avviare una riflessione, a partire da situazione reali, su cui avanzare ipotesi e soluzioni.

La frequenza dell’insegnamento è fortemente consigliata ma non obbligatoria.

 

Modalità di accertamento delle competenze

L’accertamento delle competenze avverrà attraverso una prova orale interamente basata sulla proposta progettuale dallo studente (o da un gruppo di studenti nel caso di lavoro in gruppo). L’elaborato deve rispettare le direttive, relative all’utilizzo delle strutture dati, che saranno pubblicate dal docente nella sua pagina web. La proposta progettuale è volta a dimostrare l’acquisizione degli argomenti erogati durante le lezioni frontali. La durata del colloquio dipenderà dalla profondità ed ampiezza della proposta progettuale ed indicativamente durerà tra 20 ed i 60 minuti. Ove fosse necessario, gli esaminandi saranno ripartiti in più giornate, secondo un calendario determinato nel giorno dell’appello ovvero, se possibile, anticipatamente sulla base delle prenotazioni pervenute. La calendarizzazione sarà, in tal caso, opportunamente pubblicizzata. La valutazione dell’apprendimento sarà focalizzata sulla valutazione dei risultati attesi, in accordo con i descrittori di Dublino.

 

La prova di esame si intende superata con una votazione minima di 18/30 quando lo studente dimostra:

  • minima conoscenza e comprensione degli argomenti trattati;
  • limitata capacità nell’applicazione delle conoscenze acquisite;
  • sufficiente capacità espositiva.

 

La votazione di 30/30, eventualmente con lode, è assegnata quando lo studente dimostra:

  • ottima conoscenza e comprensione degli argomenti trattati;
  • ottima capacità nell’applicazione delle conoscenze acquisite;
  • eccellente capacità espositiva.

 

La prova di esame si intende non superata se lo studente mostra un livello insufficiente di conoscenza degli argomenti trattati e non dimostra una sufficiente capacità nell’applicazione delle conoscenze acquisite.

Date di esame

Le date di esami saranno pubblicate sull’Agenda WEB dell’Università degli Studi di Enna “Kore”:

https://gestioneaule.unikore.it/agendaweb_unikore/

Modalità e orario di ricevimento

Il ricevimento è in presenza (a meno di nuove misure legate ad emergenze sanitarie o altro). Gli orari di ricevimento sono pubblicati sulla pagina personale del docente:

https://unikore.it/cdl/ingegneria-informatica/persone-e-regolamenti/giovanni-pau/

 

Indietro