Programmazione con laboratorio (2015/2016)

Codice insegnamento
4S02751
Docente
Ugo Solitro
Coordinatore
Ugo Solitro
crediti
12
Settore disciplinare
INF/01 - INFORMATICA
Lingua di erogazione
Italiano
Periodo
II semestre, I semestre

Orario lezioni

II semestre
Giorno Ora Tipo Luogo Note
martedì 10.30 - 13.30 lezione Aula E  
giovedì 8.30 - 9.30 lezione Laboratorio didattico Alfa  
giovedì 9.30 - 11.30 lezione Laboratorio didattico Alfa  
giovedì 9.30 - 11.30 lezione Aula E  
I semestre
Giorno Ora Tipo Luogo Note
martedì 11.30 - 14.30 lezione Laboratorio didattico Delta  
venerdì 8.30 - 11.30 lezione Aula E  

Obiettivi formativi

Modulo: teoria.
-------
L'insegnamento si propone fornire gli strumenti fondamentali per analizzare e risolvere problemi attraverso lo sviluppo di programmi.
Gli obiettivi specifici del modulo sono la conoscenza de
- i principi basilari della programmazione e dei linguaggi;
- le tecniche fondamentali per l'analisi dei problemi e lo sviluppo degli algoritmi che li risolvono,
- i metodi essenziali per la valutazione degli algoritmi, sia in termini di efficienza che di correttezza.

Modulo: laboratorio.
-------
Gli obiettivi dell'attività pratica (di laboratorio) sono
- la conoscenza essenziale del sistema operativo e di un semplice ambiente di sviluppo,
- l'apprendimento di un linguaggio di programmazione,
- la capacità di sviluppare progetti di piccole e medie dimensioni,
- l'applicazione di tecniche per la valutazione degli algoritmi e dei programmi.

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.

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
Bertossi, Alan e Montresor, Alberto Algoritmi e strutture di dati Città Studi Edizioni, De Agostini Scuola 2010 9788825173567 Testo di riferimento per lo studio e l'analisi degli algoritmi. Sarà adoperato nel II semestre.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein Introduction to Algorithms (Edizione 3) MIT Press 2009 0-262-03384-4 Testo solamente di consultazione. È disponibile in biblioteca.
Walter Savitch Programmazione con Java (Edizione 2) Pearson Italia 2013 9-788871-929613 Testo di riferimento per la programmazione e il linguaggio Java

Modalità d'esame

L'esame finale riguarda tutti gli argomenti dell'insegnamento.
È diviso in due parti: una prova scritta e un colloquio orale.
La prova scritta è costituita da domande ed esercizi.
Il colloquio finale (al quale si è ammessi dopo aver superato la prova scritta) 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.

Opinione studenti frequentanti - 2015/2016