Tags:
create new tag
view all tags

DIARIO DELLE LEZIONI ANNI PRECEDENTI

A.A. 2023/2024

Lunedì 26 Febbraio 2024 - Lezioni 1-2

Introduzione

  • Informazioni sul corso.
  • Concetti di algoritmo, di struttura dati, di efficienza; di costo computazionale; di problem solving e di problema computazionale.

Giovedì 29 Febbraio 2024 - Lezioni 3-4-5

Notazione asintotica

  • Definizione e significato degli insiemi O, Ω e Θ
  • Algebra della notazione asintotica
  • Metodo del limite
  • Esempi

Lunedì 4 Marzo 2024 - Lezioni 6-7

Valutazione del costo computazionale (1)

  • Pseudocodice
  • Valutazione del costo computazionale di un algoritmo
  • Un primo esempio
  • Esempi di problemi che si possono risolvere in modo più o meno efficiente e loro costo computazionale
    • somma dei primi n interi
    • valutazione di un polinomio in un punto

Giovedì 7 Marzo 2024 - Lezioni 8-9-10

Valutazione del costo computazionale (2)

  • Esercizi svolti

Il problema della ricerca

  • ricerca sequenziale e suo costo computazionale nel caso migliore, peggiore e medio
  • ricerca binaria e suo costo computazionale nel caso migliore, peggiore e medio

Lunedì 11 Marzo 2024 - Lezioni 11-12

Ricorsione (1)

  • funzioni matematiche ricorsive
  • algoritmi ricorsivi
  • fattoriale: pseudocodice iterativo e ricorsivo;
  • ricerca sequenziale: pseudocodice ricorsivo;
  • ricerca binaria: pseudocodice ricorsivo;
  • equazione di ricorrenza degli algoritmi ricorsivi già visti (fattoriale; ricerca sequenziale; ricerca binaria; numeri di Fibonacci)
  • esempi di algoritmi ricorsivi (potenza di n alla k, somma degli elementi di un array, minimo in un array, array palindromo): pseudocodice ricorsivo e calcolo dell'equazione di ricorrenza.

Giovedì 14 Marzo 2024 - Lezioni 13-14-15

Ricorsione (2)

  • esempi di algoritmi ricorsivi (stampa dei valori in un array, Torri di Hanoi): pseudocodice ricorsivo e calcolo dell'equazione di ricorrenza;

Soluzioni delle equazioni di ricorrenza (1)

  • metodi risolutivi (1):
    • metodo iterativo
    • metodo di sostituzione;
    • metodo dell'albero.

Lunedì 18 Marzo 2024 - Lezioni 16-17

Soluzioni delle equazioni di ricorrenza (2)

  • metodi risolutivi (2):
    • metodo principale
  • esempi di soluzione di equazioni di ricorrenza (1)

Giovedì 21 Marzo 2024 - Lezioni 18-19-20

Soluzioni delle equazioni di ricorrenza (3)

  • esempi di soluzione di equazioni di ricorrenza (2)

Il problema dell'ordinamento (1)

  • algoritmi naif: insertion sort, selection sort, bubble sort; calcolo del costo computazionale;

Lunedì 24 Marzo 2024 - Lezioni 21-22

Soluzioni delle equazioni di ricorrenza (4)

  • esempi di soluzione di equazioni di ricorrenza (3)

Il problema dell'ordinamento (2)

  • albero delle decisioni e teorema sulla limitazione inferiore per il costo computazionale di un algoritmo per confronti

Giovedì 28 Marzo 2024 e Lunedì 1 Aprile 2024 vacanze Pasquali

Giovedì 4 Aprile 2024 - Lezioni 23-24-25

Il problema dell'ordinamento (3)

  • algoritmi efficienti (1):
    • paradigma del Divide et Impera
    • merge sort (pseudocodice e costo computazionale, pseudocodice della funzione Fondi)
    • problematica dell'ordinamento in loco: una parentesi sull'uso della memoria secondaria
    • quick sort (idea e pseudocodice, costo computazionale nei casi migliore e peggiore)
    • pseudocodice della funzione Partiziona
    • un esercizio svolto: Tim Sort (Merge Sort + Insertion Sort per il caso base)

Lunedì 8 Aprile 2024 - Lezioni 26-27

Il problema dell'ordinamento (4)

  • algoritmi efficienti (2):
    • quick sort (costo computazionale nel caso medio, randomizzazione)

Giovedì 11 Aprile 2024 - Lezioni 28-29-30

Il problema dell'ordinamento (5)

  • algoritmi efficienti (3):
    • heap sort: struttura dati heap; Heapify (pseudocodice e costo computazionale) e BuildHeap (pseudocodice)
    • Heap sort (pseudocodice e costo computazionale)

Lunedì 15 Aprile 2024 - Lezioni 31-32

Il problema dell'ordinamento (4)

  • algoritmi lineari
    • counting sort (versione semplificata e versione completa)
    • bucket sort (idea)

Strutture dati fondamentali (1)

  • strutture dati ed insiemi dinamici
  • confronto tra array qualunque e array ordinato

Giovedì 18 Aprile 2024 - Lezioni 33-34-35

Strutture dati fondamentali (2)

  • liste puntate
    • introduzione alle liste concatenate: ricerca e inserimento in testa
    • cancellazione nelle liste concatenate
  • pila
    • le operazioni Push e Pop
  • coda
    • le operazioni enqueue e dequeue
  • code con priorità

Lunedì 22 Aprile 2024 - Lezioni 36-37

Strutture dati fondamentali (3)

  • Esercizio svolto: simulazione di una coda tramite due pile
  • Esercizi svolti sulle liste

Giovedì 25 Aprile 2024 - festa della Liberazione

Lunedì 29 Aprile 2024 - ponte con la festa dei lavoratori

Giovedì 2 Maggio 2024 - Lezioni 38-39-40

Strutture dati fondamentali (4)

  • alberi (1)
    • definizione tramite la nozione di grafo
    • caratterizzazione degli alberi
    • memorizzazione degli alberi:
      • tramite record e puntatori
      • posizionale
      • tramite vettore dei padri
      • confronto delle tre memorizzazioni
  • Ancora esercizi svolti sulle liste

Lunedì 6 Maggio 2024 - Lezioni 41-42

Strutture dati fondamentali (5)

  • alberi (2) * visite di alberi: in-ordine, pre-ordine e post-ordine
      • pseudocodice ricorsivo per memorizzazione con record e puntatori
      • costo computazionale tramite equazione di ricorrenza e metodo di sostituzione
      • esercizi che si risolvono utilizzando le visite: numero di nodi di un albero, ricerca in un albero
      • pseudocodice ricorsivo per memorizzazione con vettore dei padri e costo computazionale
      • visita per livelli
      • esercizi svolti: calcolo dell'altezza e del numero di nodi ad un dato livello

Giovedì 9 Maggio 2024 - Lezioni 43-44-45

Strutture dati fondamentali (6)

  • alberi (3)
    • esercizi svolti: calcolo dell'altezza e del numero di nodi ad un dato livello; trasformazione da memorizzazione tramite vettore dei padri a notazione posizionale
  • dizionari
    • tabelle ad indirizzamento diretto
    • tabelle hash
      • collisioni
      • liste di trabocco
      • tabelle ad indirizzamento aperto
      • tabelle hash
        • hashing doppio

Strutture dati fondamentali (7)

  • Alberi binari di ricerca (ABR) (1):
    • definizione e proprietà dell' "ordinamento orizzontale"
    • algoritmo per la ricerca

Questionari Opis. Codice: SIHRI6GK

Lunedì 13 Maggio 2024 - Lezioni 46-47

Strutture dati fondamentali (7)

  • Alberi binari di ricerca (ABR) (2):
    • algoritmo per il massimo e minimo
    • algoritmo per il successore e predecessore
    • algoritmo di inserimento
    • osservazioni sul costo computazionale delle operazioni viste come funzione dell'altezza

Giovedì 16 Maggio 2024 - Lezioni 48-49-50

Strutture dati fondamentali (8)

  • Alberi binari di ricerca (ABR) (3):
    • Esercizi svolti sugli ABR
    • alberi bilanciati: alberi rosso-neri
      • dimostrazione che gli alberi rosso-neri hanno altezza logaritmica
      • rotazioni
      • algoritmo di inserimento

Lunedì 20 Maggio 2024 - Lezioni 51-52

Esercizi ripeilogativi

Giovedì 23 Maggio 2024 - Lezioni 53-54-55

Esercizi ripeilogativi

Lunedì 27 Maggio 2024 - Lezioni 56-57

Esercizi ripeilogativi

A.A. 2022/2023

Lunedì 20 Febbraio 2023 - Lezioni 1-2

Introduzione (1)

  • Informazioni sul corso.
  • Concetti di algoritmo, di struttura dati, di efficienza; di costo computazionale; di problem solving e di problema computazionale.

Giovedì 23 Febbraio 2023 - Lezioni 3-4-5

Notazione asintotica

  • Definizione e significato degli insiemi O, Ω e Θ
  • Algebra della notazione asintotica
  • Metodo del limite
  • Esempi

Esercizi assegnati:

  • Dimostrare le regole relative all'algebra della notazione asintotica che non sono state dimostrate a lezione
  • Calcolare l'ordine asintotico stretto di alcune funzioni assegnate.

Lunedì 27 Febbraio 2023 - Lezioni 6-7

Valutazione del costo computazionale (1)

  • Pseudocodice
  • Valutazione del costo computazionale di un algoritmo
  • Un primo esempio
  • Esempi di problemi che si possono risolvere in modo più o meno efficiente e loro costo computazionale
    • somma dei primi n interi
    • valutazione di un polinomio in un punto

Esercizi assegnati:

  • Calcolare il costo computazionale del Selection, dell'Insertion Sort e del Bubble Sort (pseudocodice sulle slides)

Giovedì 2 Marzo 2023 - Lezioni 8-9-10

Valutazione del costo computazionale (2)

  • Esercizi svolti

Il problema della ricerca (1)

  • ricerca sequenziale e suo costo computazionale nel caso migliore, peggiore e medio

Lunedì 6 Marzo 2023 - Lezioni 11-12

Il problema della ricerca (2)

  • ricerca binaria e suo costo computazionale nel caso migliore, peggiore e medio

Ricorsione (1)

  • funzioni matematiche ricorsive
  • algoritmi ricorsivi
  • fattoriale: pseudocodice iterativo e ricorsivo;
  • ricerca sequenziale: pseudocodice ricorsivo;
  • ricerca binaria: pseudocodice ricorsivo;

Esercizi assegnati:

  • Progettare degli algoritmi che calcolino quanti elementi di un array appartengono all'intervallo chiuso [a,b] sotto varie ipotesi.

Giovedì 9 Marzo 2023 - Lezioni 13-14-15

Ricorsione (2)

  • equazione di ricorrenza degli algoritmi ricorsivi già visti (fattoriale; ricerca sequenziale; ricerca binaria; numeri di Fibonacci)
  • esempi di algoritmi ricorsivi (potenza di n alla k, somma degli elementi di un vettore, minimo in un array, vettore palindromo, stampa dei valori in un array, Torri di Hanoi): pseudocodice ricorsivo e calcolo dell'equazione di ricorrenza;

Soluzioni delle equazioni di ricorrenza (1)

  • metodi risolutivi (1):
    • metodo iterativo

Esercizi assegnati:

  • Progettare degli algoritmi ricorsivi ed esprimerli tramite pseudocodice che risolvano i seguenti problemi:
    • calcolare il coefficiente binomiale n sopra k;
    • calcolare il MCD tra due interi positivi x ed y come segue:
      • sia y<x
      • se y=0 allora MCD(x,y)=y
      • altrimenti MCD(x,y))MCD(y, x%y) (dove x%y indica il resto della divisione intera tra x e y)

Lunedì 13 Marzo 2023 - Lezioni 16-17

Soluzioni delle equazioni di ricorrenza (2)

  • metodi risolutivi (2):
    • metodo di sostituzione;
    • metodo dell'albero.

Esercizi assegnati:

  • Risolvere con i primi tre metodi alcune equazioni di ricorrenza assegnate

Giovedì 16 Marzo 2023 - Lezioni 18-19-20

Soluzioni delle equazioni di ricorrenza (2)

  • metodi risolutivi (3):
    • metodo principale
  • esempi di soluzione di equazioni di ricorrenza (1)

Esercizi assegnati:

  • Risolvere con tutti i metodi alcune equazioni di ricorrenza assegnate

Lunedì 20 Marzo 2022 - Lezioni 21-22

Soluzioni delle equazioni di ricorrenza (3)

  • esempi di soluzione di equazioni di ricorrenza (2)

Esercizi assegnati:

  • Risolvere alcune equazioni di ricorrenza assegnate

Giovedì 23 Marzo 2023 - Lezioni 23-24-25

Il problema dell'ordinamento (1)

  • algoritmi naif: insertion sort, selection sort, bubble sort; calcolo del costo computazionale;
  • albero delle decisioni e teorema sulla limitazione inferiore per il costo computazionale di un algoritmo per confronti
  • algoritmi efficienti (1):
    • paradigma del Divide et Impera

Esercizi assegnati:

  • Calcolare il costo computazionale dell'algoritmo di Insertion Sort in cui la posizione dell'elemento da inserire viene determinata tramite ricerca binaria.
  • Scrivere in pseudocodice una funzione che, dato un array A ed un indice j, calcoli il valore minimo nel sottoarray A[j..n]. Riscrivere lo pseudocodice del selection sort che utilizzi ripetutamente questa funzione.
  • Modificare l'algoritmo di Bubble Sort in modo che non prosegua la computazione se l’array risulta ordinato (con l'aggiunta di una flag).
  • Dato un array di n elementi, verificare se contiene occorrenze ripetute dello stesso elemento

Lunedì 27 Marzo 2023 - Lezioni 26-27

Il problema dell'ordinamento (2)

  • algoritmi efficienti (2)
    • merge sort (pseudocodice e costo computazionale, pseudocodice della funzione Fondi, problematica dell'ordinamento in loco)
    • cosa non va nel merge sort: una parentesi sull'uso della memoria secondaria
    • quick sort (idea e pseudocodice)
    • pseudocodice della funzione Partiziona
    • un esercizio svolto: Tim Sort (Merge Sort + Insertion Sort per il caso base)

Esercizi assegnati:

  • Scrivere la funzione di fusione ricorsiva
  • Scrivere Merge Sort iterativo

Giovedì 30 Aprile 2023 - Lezioni 28-29-30

Il problema dell'ordinamento (3)

  • quick sort (costo computazionale nei casi migliore e peggiore, costo computazionale nel caso medio, randomizzazione)
  • heap sort: struttura dati heap; Heapify (pseudocodice e costo computazionale) e BuildHeap (pseudocodice)

Esercizi assegnati:

  • Sia dato un array di lunghezza n contenente solo valori 0 e 2. Si progetti un algoritmo con costo computazionale lineare che modifichi l'array in modo che tutte le occorrenze di 0 si trovino più a sinistra di tutte le occorrenze di 2.
  • Si considerino i valori 0 1 2 3 4 5 6 7. Si determini una permutazione di questi valori che generi il caso peggiore per l'algortimo Quick sort.
  • Calcolare il costo computazionale del Quick sort nel caso in cui l'array contenga tutti elementi uguali.

Lunedì 3 Aprile 2023 - Lezioni 31-32

Il problema dell'ordinamento (4)

  • algoritmi efficienti:
    • Build Heap (costo computazionale)
    • Heap sort (pseudocodice e costo computazionale)
  • algoritmi lineari
    • counting sort (versione semplificata e versione completa)
    • bucket sort (idea)

Esercizi assegnati:

  • Scrivere una funzione che restituisca il valore minimo di un HeapMax e calcolarne il costo computazionale
  • Scrivere Heapsort sfruttando la struttura dati HeapMin
  • Scrivere la funzione di inserimento in un HeapMax e calcolarne il costo computazionale

VACANZE PASQUALI: giovedì 6 aprile e lunedì 10 aprile

Giovedì 13 Aprile 2023 - Lezioni 33-34-35

Strutture dati fondamentali (1)

  • strutture dati ed insiemi dinamici
  • confronto tra array qualunque e array ordinato
  • introduzione alle liste concatenate: ricerca e inserimento in testa
  • cancellazione nelle liste concatenate

Esercizi assegnati:

  • vari esercizi di manipolazione delle liste.

Lunedì 17 Aprile 2023 - Lezioni 36-37

Strutture dati fondamentali (2)

  • pila
    • le operazioni Push e Pop
    • code con priorità
    • la struttura dati coda
    • le operazioni enqueue e dequeue
    • Esercizio svolto: simulazione di una coda tramite due pile
    • Esercizio svolto: inserimento in una lista ordinata (versione iterativa e ricorsiva)

Esercizi assegnati:

  • scrivere lo pseudocodice delle funzioni Enqueue e Dequeue quando la coda sia circolare ed implementata su array
  • scrivere lo pseudocodice delle funzioni Pop, Push e Pila_Piena quando la pila sia implementata su array

Giovedì 20 Aprile 2023 - Lezioni 38-39-40

Strutture dati fondamentali (3)

  • Esercizi svolti sulle liste

Lunedì 24 Aprile 2023 - Ponte con la festa della Liberazione

Giovedì 27 Aprile 2023 - Lezioni 41-42-43

Strutture dati fondamentali (4)

  • alberi (1)
    • definizione tramite la nozione di grafo
    • caratterizzazione degli alberi
    • memorizzazione degli alberi:
      • tramite record e puntatori
      • posizionale
      • tramite vettore dei padri
      • confronto delle tre memorizzazioni * visite di alberi: in-ordine, pre-ordine e post-ordine
      • pseudocodice ricorsivo per memorizzazione con record e puntatori
      • costo computazionale tramite equazione di ricorrenza e metodo di sostituzione
      • esercizi che si risolvono utilizzando le visite: numero di nodi di un albero, ricerca in un albero

Esercizi assegnati:

  • scrivere lo pseudocodice di una funzione che, dato un albero in notazione posizionale, lo restituisca tramite vettore dei padri
  • scrivere lo pseudocodice di una funzione che, dato un albero tramite vettore dei padri, lo restituisca in notazione posizionale

Lunedì 1 Maggio 2023 - Festa del lavoro

Giovedì 4 Maggio 2023 - Lezioni 44-45-46

Strutture dati fondamentali (5)

  • alberi (2)
    • visite di alberi
      • pseudocodice ricorsivo per memorizzazione con vettore dei padri e costo computazionale
      • visita per livelli
      • esercizi svolti: calcolo dell'altezza e del numero di nodi ad un dato livello; trasformazione da memorizzazione tramite vettore dei padri a notazione posizionale

  • dizionari (1)
    • tabelle ad indirizzamento diretto
    • tabelle hash
      • collisioni
      • liste di trabocco
      • tabelle ad indirizzamento aperto

Questionari Opis. Codice: 4AEFX2KF

Esercizi assegnati:

  • Pseudocodice iterativo della visita in preordine

Lunedì 8 Maggio 2023 - Lezioni 47-48

  • Strutture dati fondamentali (6)
    • dizionari (2)
      • tabelle hash
        • hashing doppio
  • Alberi binari di ricerca (ABR) (1):
    • definizione e proprietà dell' "ordinamento orizzontale"
    • algoritmo per il massimo e minimo
    • algoritmo per il successore e predecessore
    • algoritmo di inserimento
    • osservazioni sul costo computazionale delle operazioni viste come funzione dell'altezza

Giovedì 11 Maggio 2023 - Lezioni 49-50-51

  • Strutture dati fondamentali (7)
    • Alberi binari di ricerca (ABR) (2):
      • Esercizi svolti sugli ABR
      • alberi bilanciati: alberi rosso-neri
        • dimostrazione che gli alberi rosso-neri hanno altezza logaritmica
        • rotazioni
        • algoritmo di inserimento

Lunedì 15 Maggio 2023 - Laurea honoris causa a Silvio Micali

Giovedì 18 Maggio 2023 - no lezione per indisponibilità dell'aula

Lunedì 22 Maggio 2023 - Lezioni 52-53

Esercizi ripeilogativi

Giovedì 25 Maggio 2023 - Lezioni 54-55-56

Esercizi ripeilogativi

Lunedì 29 Maggio 2023 - Lezioni 57-58

Esercitazione d'esame

-- Tiziana Calamoneri - 2024-02-27

Comments

Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r2 - 2025-03-03 - TizianaCalamoneri






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback