Programmazione (2008/2009)

Corso disattivato

Codice insegnamento
4S00016
Crediti
10
Coordinatore
Ugo Solitro
L'insegnamento è organizzato come segue:
Modulo Crediti Settore disciplinare Periodo Docenti
Programmazione (laboratorio) 4 INF/01-INFORMATICA 2° Q, 3° Q Ugo Solitro
Programmazione (teoria) 6 INF/01-INFORMATICA 2° Q, 3° Q Ugo Solitro

Obiettivi formativi

Modulo: Programmazione (laboratorio)
-------
Apprendimento dei principi della programmazione e della sua applicazione per la risoluzione dei problemi, in particolare di carattere matematico, per mezzo di uno specifico linguaggio.
Nel modulo di laboratorio si imparerà a programmare attraverso lo sviluppo pratico di progetti in uno specifico linguaggio di programmazione.


Modulo: Programmazione (teoria)
-------
Apprendimento dei principi della programmazione e della sua applicazione per la risoluzione dei problemi, in particolare di carattere matematico, per mezzo di uno specifico linguaggio.
Nel modulo di teoria si apprendono i fondamenti della programmazione imperativa e le tecniche fondamentali per l'analisi e per la soluzione dei problemi; inoltre si introducono i metodi per la valutazione degli algoritmi sia in termini di efficienza che di correttezza.

Programma

Modulo: Programmazione (laboratorio)
-------
In laboratorio si impara a conoscere il linguaggio di programmazione attraverso lo sviluppo di progetti basati sulle idee esposte in aula.
Si studiano i costrutti principali del linguaggio e i problemi legati allo sviluppo concreto delle soluzioni; in particolare si apprendono le abilità fondamentali di editing, compilazione, debugging, gestione di progetti.


Modulo: Programmazione (teoria)
-------
Pre-requisiti: una buona conoscenza dei contenuti, teorici e pratici, dell'insegnamento di Informatica di Base.

Parte I - Problemi, algoritmi e programmi.

- Nozioni di base: problema, specifiche, algoritmo; macchina astratta, compilatore e interprete; linguaggi di programmazione.
- Introduzione al linguaggio di programmazione.
- Programmi elementari: istruzioni di base e costruzione di semplici programmi.
- I tipi di dati. Nozione generale di tipo: caratterizzazione e rappresentazione dei dati. Variabili, espressioni e assegnamento. Tipi di dati astratti.
- I tipi di dati primitivi: caratteristiche, uso e problemi.
- Struttura degli programmi. Istruzioni fondamentali.
- I sotto-programmi: strutturazione, passaggio dei parametri, regole di visibilità.
- Tipi di dati strutturati. Array, puntatori, stringhe e altre strutture dati.
- Introduzione elementare agli oggetti.
- Strutture dati dinamiche.

Parte II - Analisi degli algoritmi.

- Correttezza degli algoritmi: terminazione, proprietà logiche; metodi per la verifica della correttezza.
- Elementi di complessità. Prestazioni degli algoritmi. Valutazione astratta dell'efficienza. Costo computazionale.
- Stime asintotiche di complessità in tempo e in spazio. Il caso peggiore e il caso medio.
- Il costo ammortizzato.
- Sequenze statiche: implementazione e algoritmi.
- Matrici: implementazione, operazioni e algoritmi.
- Sequenze dinamiche: definizione astratta e implementazione; operazioni di base; ricerca, ordinamento, concatenazione e fusione.
- Pile e code: definizione astratta e implementazione; operazioni di base.
- Alberi. Definizione astratta degli alberi binari e implementazione. Operazioni di base. Alberi di ricerca.
- Grafi: introduzione.

Conclusioni. Cenni alla programmazione a oggetti.

Modalità d'esame

Modulo: Programmazione (laboratorio)
-------
L'esame finale è unico per i moduli di teoria e laboratorio e prevede:
- una prova scritta sugli argomenti di teoria e sui progetti sviluppati in laboratorio;
- un colloquio orale (al quale si accede dopo aver superato la prova scritta) nel quale si discutono la prova scritta, l'attività svolta in laboratorio e in generale gli argomenti previsti dal programma d'esame.
La prova d'esame può essere in tutto o in parte sostituita da prove di verifica effettuate durante lo svolgimento del corso.


Modulo: Programmazione (teoria)
-------
L'esame finale è unico per i moduli di teoria e laboratorio e prevede:
- una prova scritta sugli argomenti di teoria e sui progetti sviluppati in laboratorio;
- un colloquio orale (al quale si accede dopo aver superato la prova scritta) nel quale si discutono la prova scritta, l'attività svolta in laboratorio e in generale gli argomenti previsti dal programma d'esame.
La prova d'esame può essere in tutto o in parte sostituita da prove di verifica effettuate durante lo svolgimento del corso.

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
T. Cormen, C. Leiserson, R. Rivest Introduction to algorithms (Edizione 1) MIT Press 1990 0262031418 Testo di consultazione
Stefano Mizzaro Introduzione alla programmazione con il linguaggio Java (Edizione 2) Franco Angeli 2000 8846416961 Testo di introduzione alla programmazione e al linguaggio
Crescenzi, P. - Gambosi, G. - Grossi, R. Strutture di Dati e Algoritmi Pearson Education Italia 2006 8871922735 Testo di introduzione all'analisi degli algoritmi