Offerta Didattica

 

INFORMATICA

ALGORITMI E STRUTTURE DATI

Classe di corso: L-31 - Scienze e tecnologie informatiche
AA: 2022/2023
Sedi: MESSINA
SSDTAFtipologiafrequenzamoduli
INF/01BaseLiberaLiberaNo
CFUCFU LEZCFU LABCFU ESEOREORE LEZORE LABORE ESE
96037236036
Legenda
CFU: n. crediti dell’insegnamento
CFU LEZ: n. cfu di lezione in aula
CFU LAB: n. cfu di laboratorio
CFU ESE: n. cfu di esercitazione
FREQUENZA:Libera/Obbligatoria
MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli
ORE: n. ore programmate
ORE LEZ: n. ore programmate di lezione in aula
ORE LAB: n. ore programmate di laboratorio
ORE ESE: n. ore programmate di esercitazione
SSD:sigla del settore scientifico disciplinare dell’insegnamento
TAF:sigla della tipologia di attività formativa
TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio

Obiettivi Formativi

I principali obiettivi del corso sono: - analizzare le principali tecniche di progettazione degli algoritmi - classificare, analizzare, progettare ed implementare algoritmi - valutare i costi in termini di efficienza computazionale - giungere al miglior compromesso tra esigenze conflittuali (costo, semplicità, efficienza)

Learning Goals

The main objectives of the course are: - analyze the main techniques for algorithm design - classify, analyze, design, and implement algorithms - evaluate costs in terms of computational efficiency - choose and implement suitable data structures - make the best compromise among conflicting requirements (cost, simplicity, efficiency)

Metodi didattici

L’insegnamento si compone di sessioni sincrone (lezioni frontali in aula e laboratorio).

Teaching Methods

The teaching consists of synchronous sessions (frontal lectures both in classroom and laboratory).

Prerequisiti

Matematica di base (algebra di base, concetto di funzione) Programmazione procedurale

Prerequisites

Basic mathematics (basic algebra, definition of function) Procedural programming

Verifiche dell'apprendimento

Due prove in itinere durante il semestre, le quali coprono gli argomenti trattati in aula fino alla prova, oppure una prova scritta in occasione degli appelli d'esame, la quale ricopre l'intero programma. Le prove scritte includono esercizi mirati a verificare le capacità di problem solving, progettazione di algoritmi e coding. Il punteggio ha un offset da 0 a 30 e lode.

Assessment

Two mid-term tests during the semester, which cover the topics covered in the classroom up to the test, or a written test on the exam sessions, which covers the entire program. Written tests include exercises aimed at verifying problem-solving, algorithm design, and coding skills. The score has an offset from 0 to 30 with honors.

Programma del Corso

Python 3 - Variabili, espressioni ed istruzioni; Funzioni; Istruzioni condizionali e ricorsione; Funzioni produttive; Iterazione; Stringhe; Liste; Dizionari; Tuple; File; Classi e oggetti; Classi e funzioni; Classi e metodi; Ereditarietà. Algoritmi e strutture dati - Insertion sort; Analisi degli algoritmi; Progettazione degli algoritmi; Notazione asintotica; Dividi et Impera: il metodo di sostituzione per risolvere le ricorrenze, il metodo dell'albero di ricorsione per risolvere le ricorrenze, il metodo dell'esperto per risolvere le ricorrenze, mergesort; Heap e heapsort; Quicksort; Ordinamento in tempo lineare: Countingsort; Alberi e alberi binari; Alberi binari di ricerca; Algoritmi elementari per grafi: rappresentazione dei grafi, visita in ampiezza, visita in profodità; Alberi di connessione minima: algoritmi di Kruskal e Prim; Cammini minimi: algoritmo di Dijkstra.

Course Syllabus

Python 3 - Variabili, espressioni ed istruzioni; Funzioni; Istruzioni condizionali e ricorsione; Funzioni produttive; Iterazione; Stringhe; Liste; Dizionari; Tuple; File; Classi e oggetti; Classi e funzioni; Classi e metodi; Ereditarietà. Algoritmi e strutture dati - Insertion sort; Analisi degli algoritmi; Progettazione degli algoritmi; Notazione asintotica; Dividi et Impera: il metodo di sostituzione per risolvere le ricorrenze, il metodo dell'albero di ricorsione per risolvere le ricorrenze, il metodo dell'esperto per risolvere le ricorrenze, mergesort; Heap e heapsort; Quicksort; Ordinamento in tempo lineare: Countingsort; Alberi e alberi binari; Alberi binari di ricerca; Algoritmi elementari per grafi: rappresentazione dei grafi, visita in ampiezza, visita in profodità; Alberi di connessione minima: algoritmi di Kruskal e Prim; Cammini minimi: algoritmo di Dijkstra.

Testi di riferimento: Python3: 1) Allen Downey, "Pensare in Python - Come pensare da Informatico", Egea 2) Cay Horstmann, Rance D. Necaise. "Concetti di informatica e fondamenti di Python", Seconda edizione Algoritmi e strutture dati: 1) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. "Introduzione agli algoritmi e strutture dati", terza edizione, McGraw-Hill Education 2) Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, Gianluca Rossi. "Strutture di dati e algoritmi. Progettazione, analisi e programmazione", Pearson 3) Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser. "Data Structures and Algorithms in Python", John Wiley & Sons Inc

Elenco delle unità didattiche costituenti l'insegnamento

Docente: LORENZO CARNEVALE

Orario di Ricevimento - LORENZO CARNEVALE

Dato non disponibile
  • Segui Unime su:
  • istagram32x32.jpg
  • facebook
  • youtube
  • twitter
  • UnimeMobile
  • tutti