en
Politecnico di Torino
Anno Accademico 2011/12
09EIPDC, 09EIPBQ, 09EIPCM
Algoritmi e programmazione avanzata
Corso di Laurea in Ingegneria Informatica - Torino
Corso di Laurea in Ingegneria Delle Telecomunicazioni - Torino
Corso di Laurea in Ingegneria Elettronica - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
Camurati Paolo Enrico ORARIO RICEVIMENTO PO IINF-05/A 0 0 0 2.4 11
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 5 B - Caratterizzanti Ingegneria informatica
Obiettivi dell'insegnamento

Scopi


Il modulo completa l' avvio alla programmazione quale strumento per la soluzione di problemi. Si accentua il passaggio dalle
capacità analitiche a quelle progettuali.

Il modulo presenta le soluzioni algoritmiche "classiche" dei problemi, e la teoria che sta alla loro base, con particolare
riferimento a realizzazioni in C e affronta casi di studio di maggiori dimensioni risolti mediante strategie algoritmiche
implementate in C.


Prerequisiti


Precedenza di acquisto:

Informatica II



Ulteriore propedeuticità concettuale: è prerequisito fondamentale per il corso la conoscenza della programmazione in linguaggio C.


Programma


  • Analisi di algoritmi: analisi asintotica e complessità di caso peggiore; notazione Ο, Θ, Ω;

  • Algoritmi elementari: ordinamento quadratico (selection sort, insertion sort), lineare (counting sort) e logaritmico (quicksort, heapsort, mergesort); attraversamenti di alberi e grafi

  • Strutture dati: rappresentazione dei dati in memoria; puntatori; allocazione di memoria statica, e dinamica; strutture linkate; gestione della memoria in runtime; strategie per scegliere la struttura dati

  • Ricorsione: il concetto di ricorsione; funzioni matematiche ricorsive; procedure ricorsive semplici; backtrack e implementazione della ricorsione

  • Paradigmi algoritmici: divide-and-conquer; greedy

  • Algoritmi classici: tabelle di hash; alberi binari di ricerca e varianti; B-alberi

  • Algoritmi sui grafi: cammini minimi; alberi ricoperti minimi



Il tutorato in aula privilegia la parte di programma più applicativa relativa alla programmazione in linguaggio C:
Si procederà all'analisi e implementazione degli algoritmi e delle strutture dati oggetto di studio. Tali componenti
verranno utilizzate per lo sviluppo di programmi avanzati in linguaggio C.


Bibliografia

Testi consigliati dal docente responsabile del corso:



Testi di riferimento tradotti in italiano



  • T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduzione agli algoritmi e strutture dati, seconda edizione, McGraw Hill.

  • R. Sedgewick, Algoritmi in C, Pearson Ed. Italia.

  • Brian W. Kernighan, Dennis M. Ritchie, Linguaggio C, Addison Wesley / Pearson Education, Italia.

  • Brian W. Kernighan, Dennis M. Ritchie, Linguaggio C, Jackson Libri (non più in stampa).



Testi di riferimento in lingua inglese



  • T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduction to Algorithms, The MIT Press and McGraw-Hill.

  • Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, Prentice Hall.



Guida alla lettura per [Cormen, 2a edizione, McGraw-Hill, 2005]



  • Cap. 1: Ruolo degli algoritmi nell'elaborazione dei dati
    sez. 1-2

  • Cap. 2: Per incominciare
    sez. 1-3

  • Cap. 6: Heapsort
    sez. 1-5

  • Cap. 7: Quicksort
    sez. 1-2

  • Cap. 8: Ordinamento in tempo lineare
    sez. 2

  • Cap.10: Strutture dati elementari
    sez. 1-2

  • Cap.11: Hashing
    sez. 1-4

  • Cap.12: Alberi binari di ricerca
    sez. 1-3

  • Cap.15: Programmazione dinamica
    sez. 1-5 (accenni)

  • Cap.22: Algoritmi elementari per grafi
    sez. 1-5

  • Cap.23: Alberi di connessione minimi
    sez. 1-2

  • Cap.24: Cammini minimi da sorgente unica
    sez. 1-4





Questa raccolta di materiale, prodotta ad uso interno, è stata realizzata per i moduli del Politecnico di Torino ed è disponibile in formato .pdf.

Ne è vietata la riproduzione e qualsiasi forma di commercializzazione.







Gli argomenti del corso sono trattati nel CD-ROM omonimo.

Per maggiori ragguagli circa le specifiche relative ai CD-ROM prodotti consultare l'Area CD-ROM multimediali.



Ulteriore materiale e aggiornamenti sono disponibili nelle pagine personali del tutore relative alla didattica:



All'indirizzo http://www.cad.polito.it/staff/squillero/dida/09eip/ sono archiviate le risorse (non più aggiornate) degli anni precedenti.






Questa raccolta di materiale, prodotta ad uso interno, è
stata realizzata per i moduli del Politecnico di Torino ed è in formato .pdf.
Ne è vietata la riproduzione e qualsiasi forma di commercializzazione.



Controlli dell'apprendimento / Modalità d'esame


  • L'esame ¿ composto da due scritti.

    Il primo serve a valutare la conoscenza teorica degli algoritmi e delle strutture dati.

    Il secondo la capacità di impostare un programma complesso e la capacità di analizzare un problema (la sintassi del C è un prerequisito).

  • Per superare l'esame ¿ necessario (ma non sufficiente) raggiungere un punteggio ≥ (simbolo del superiore/uguale) 10/15 nel primo scritto (teoria) e ≥ (idem) 4/15 nel secondo (programmazione).

  • I due scritti possono essere svolti in appelli differenti durante l'anno accademico.

  • Dopo lo scritto di programmazione, gli studenti sono tenuti a correggere e completare autonomamente il programma consegnato ed inviare una versione funzionante al tutore. La prova svolta in aula sarà valutata solo dopo aver verificato il funzionamento di tale programma. (Si suggerisce di utilizzare carta carbone per conservare una copia di quanto consegnato in aula).


Orario delle lezioni
Statistiche superamento esami
MATERIALI PUBBLICI

Programma definitivo per l'A.A.2011/12
Indietro