Programmazione con laboratorio (2010/2011)



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 Ugo Solitro
Laboratorio 4 II semestre Ugo Solitro

Orario lezioni

II semestre
Attività Giorno Ora Tipo Luogo Note
Teoria martedì 13.30 - 16.30 lezione Aula E  
Teoria mercoledì 15.30 - 17.30 lezione Aula E  
Teoria venerdì 13.30 - 15.30 laboratorio Laboratorio didattico Delta  
Laboratorio lunedì 10.30 - 13.30 laboratorio Laboratorio didattico Delta  

Obiettivi formativi

Introduzione all'informatica.
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.
I fondamenti della programmazione.
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.
La parte di laboratorio consisterà nello sviluppo pratico di progetti di piccole e medie dimensioni in uno specifico linguaggio di programmazione.

Programma

Introduzione.
Elementi di base dell'Informatica

Parte I - Problemi, algoritmi e programmi.

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

Complementi.
Introduzione alla programmazione a oggetti.

------------------------
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;
- 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
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
Laboratorio Bertacca M. e Guidi A. Programmare in Java McGraw-Hill 2007 978-88-386-6400-7