Ingegneria degli Algoritmi

Anno Accademico 2019/2020

News

  • Quarto appello di esame: 10 luglio 2020 @ aula B3
  • Terzo appello di esame: 19 giugno 2020 @ aula B3
  • Secondo appello di esame: 21 febbraio 2019 @ aula C11, 10.00 am - [testo, soluzione, risultati].
  • Primo appello di esame: 30 gennaio 2019 @ aula A1, 10.00 am - [testo, soluzione, risultati].
  • Calendario delle esercitazioni di gennaio con il Dr. Romolo Marotta:
    • Mercoledì 8 gennaio, 9.30-11.00 (Aula B2)
    • Venerdì 10 gennaio, 14.00-15.30 (Aula C1)
    • Mercoledì 15 gennaio, 9.30-11.00 (Aula B2)
    • Venerdì 17 gennaio, 14.00-15.30 (Aula C1)
  • Sono disponibili i risultati della terza challenge algoritmica.
  • Per un imprevisto di natura tecnica, la lezione di mercoledì 18/12 è spostata al 18/12 alle ore 16.00 in aula A1.
  • La lezione di venerdì 13/12 è annullata per allerta meteo. Verrà recuperara lunedì 16, alle ore 14.00, in aula 4.
  • Sono disponibili i risultati della seconda challenge algoritmica.
  • L’esercitazione del 04/12/2019 si terrà in aula C3.
  • Challenge Algoritmica 3: Labirinti. Per partecipare alla challenge, seguire questo link. Scadenza per la consegna: 18 dicembre 2019.
  • Cambio orario delle lezioni Su richiesta degli studenti, la lezione del lunedì viene spostata al venerdì. Il nuovo orario entra in vigore da lunedì 2 dicembre compreso (quindi, la lezione di lunedì 2 dicembre non si terrà). Il nuovo orario è il seguente:
    • Mercoledì, 9.30-11.00 (Aula B2)
    • Venerdì, 14.00-15.30 (Aula C1)
    • Esercitazioni: mercoledì, 16.00-17.30 (Aula A1)
  • Sono disponibili i risultati della prima challenge algoritmica.
  • Challenge Algoritmica 2: Query Bidimensionali. Per partecipare alla challenge, seguire questo link. Scadenza per la consegna: 04 dicembre 2019.
  • Il secondo tutoraggio si terrà mercoledì 20 novembre dalle 16.00 alle 17.30 in aula A1.
  • L’input 2 per la Challenge Algoritmica 1 è stata aggiornata in tutti i repository già creati. Eseguite git pull per aggiornare i file.
  • Venerdì 15/11/2019 si terrà il primo tutoraggio (aula C1, dalle 14.00 alle 15.30) con l’ing. Romolo Marotta.
  • Challenge Algoritmica 1: Hexadoku. Per partecipare alla challenge, seguire questo link. Scadenza per la consegna: 20 novembre 2019.
  • La lezione di mercoledì 9 ottobre non si terrà.
  • Orari delle lezioni:
    • Lunedì, 14.00-15.30 (Aula C1)
    • Mercoledì, 9.30-11.00 (Aula B2)
    • Venerdì, 14.00-15.30 (Aula C1)
  • Nell’anno accademico 2019/2020 il corso passa da 9 CFU a 6 CFU. Per questo motivo, le lezioni del venerdì non saranno tenute. Chi avesse la necessità di sostenere l’esame da 9 CFU (unicamente per gli studenti degli anni accademici precedenti) contatti via email il docente.

Obiettivi del corso

  • Prendere confidenza con la progettazione e l’analisi di algoritmi
  • Capire come si misura l’efficienza degli algoritmi e delle strutture dati
  • Imparare a scegliere quale algoritmo è più conveniente utilizzare per risolvere problemi del mondo reale
  • Implementare algoritmi e strutture dati in Python

Regole d’esame

  • L’esame consiste in una prova scritta
  • La prova scritta conterrà sia domande teoriche che domande pratiche
  • Challenge Algoritmica:
    • Durante il corso, verranno pubblicati tre problemi da risolvere
    • Gli studenti possono consegnare (entro scadenze prestabilite) dei programmi che risolvono questi problemi
    • I programmi corretti verranno organizzati in una graduatoria, in funzione della loro efficienza
    • I primi tre classificati riceveranno 2 punti in più che verranno sommati al voto finale
    • Si può totalizzare un massimo di 4 punti con la Challenge
    • I punti scadono al termine dell’anno accademico

Libro di testo consigliato

T. Cormen, C. Leiserson, L. Rivest, R. Stein. Introduction to algorithms.
3a ed. The MIT Press, 2009, Cambridge

Argomenti delle lezioni, slide e materiale

Le slide e gli esempi di codice verranno pubblicati qui durante il corso

  1. Introduzione (appendice).
  2. Analisi della complessità e tecniche algoritmiche [aggiornato il 17/10/2019].
  3. Il problema dell’ordinamento.
  4. Strutture dati di base: vettori, liste, code, pile [aggiornato l’11/11/2019].
  5. Strutture dati avanzate: alberi, mucchi, insiemi.
  6. Tecniche di hashing e dizionari.
  7. Grafi ed algoritmi sui grafii.

Materiale delle esercitazioni

  • Esercitazione del 27/11/2019: problemi di scheduling - [codice]
  • Esercitazione del 04/12/2019: Alberi AVL - [slide, codice, soluzione]

Materiale di approfondimento