Programmazione con laboratorio (2013/2014)



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 venerdì 8.30 - 11.30 lezione Aula E  
Laboratorio martedì 11.30 - 14.30 laboratorio Laboratorio didattico Delta  
II semestre
Attività Giorno Ora Tipo Luogo Note
Teoria martedì 8.30 - 11.30 lezione Aula E  
Teoria giovedì 15.30 - 16.30 lezione Aula E  
Laboratorio giovedì 16.30 - 18.30 lezione 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.
Applicazione delle tecniche di valutazione degli algoritmi.

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 è unico per i moduli di teoria e laboratorio e prevede:
- una prova di ammissione sugli argomenti presentati in aula e sulla attività di laboratorio;
- la prova finale (al quale si è ammessi dopo aver superato la prova scritta) che consiste in domande di carattere generale, esercizi e una discussione sulla prova scritta e l'attività di 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 di consultazione
Teoria Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein Introduction to Algorithms (Edizione 3) MIT Press 2009 0-262-03384-4 Testo di consultazione
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