Programmazione con laboratorio (2011/2012)



Codice insegnamento
4S02751
Crediti
12
Coordinatore
Ugo Solitro
Settore disciplinare
INF/01 - INFORMATICA
Lingua di erogazione
Italiano
L'insegnamento è organizzato come segue:
Attività Crediti Periodo Docenti Orario
Teoria 8 II semestre, I semestre Ugo Solitro
Laboratorio 4 II semestre, I semestre Ugo Solitro

Orario lezioni

I semestre
Attività Giorno Ora Tipo Luogo Note
Teoria martedì 11.30 - 13.30 lezione Aula E  
Laboratorio venerdì 8.30 - 11.30 laboratorio Laboratorio didattico Delta  
II semestre
Attività Giorno Ora Tipo Luogo Note
Teoria martedì 13.30 - 14.30 lezione Aula E  
Teoria martedì 14.30 - 16.30 lezione Aula E  
Laboratorio venerdì 11.30 - 14.30 laboratorio Laboratorio didattico Delta  

Obiettivi formativi

Modulo: teoria.
-------
Introduzione all'informatica.
Studio dei principi della programmazione.
Tecniche di base per l'analisi e risoluzione di problemi con il calcolatore.
Introduzione ai metodi fondamentali per la valutazione degli algoritmi, sia in termini di efficienza che di correttezza.

Modulo: laboratorio.
-------
Apprendimento di un linguaggio di programmazione.
Sviluppo di progetti di piccole e medie dimensioni.

Programma

Modulo: teoria.
-------
Introduzione all'Informatica.

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 e Vettori: 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.
- Argomenti avanzati: introduzione ai grafi e altri argomenti.

- Complementi - Stili di programmazione.
La programmazione imperativa e un'introduzione alla programmazione a oggetti.
------------------------

Modulo: 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.

Modalità d'esame

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;
- una prova orale (al quale si è ammessi dopo aver superato la prova scritta) che consiste in domande di carattere generale sugli argomenti teorici e pratici del corso, e una discussione sulla prova scritta e l'attività svolta in laboratorio.
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
Attività Autore Titolo Casa editrice Anno ISBN Note
Teoria Bertossi, Alan e Montresor, Alberto Algoritmi e strutture di dati Città Studi Edizioni, De Agostini Scuola 2010 9788825173567 testo consigliato per l'analisi degli algoritmi
Teoria Savitch, Walter e Carrano, Frank M. Programmazione con Java (Edizione 1) Pearson Prentice Hall Italia 2010 9-788871-926148 testo di riferimento per la programmazione