Programmazione con laboratorio (2014/2015)



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 sem., I sem. Ugo Solitro
Laboratorio 4 II sem., I sem. Ugo Solitro

Orario lezioni

I sem.
Attività Giorno Ora Tipo Luogo Note
Teoria venerdì 8.30 - 11.30 lezione Aula E  
Laboratorio martedì 11.30 - 14.30 lezione Laboratorio didattico Alfa dal 9-ott-2014  al 2-dic-2014
Laboratorio martedì 11.30 - 14.30 lezione Laboratorio didattico Delta dal 9-dic-2014  al 30-gen-2015
II sem.
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.
-------
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.

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.

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 Sciuto, Buonanno, Mari Introduzione ai sistemi informatici 5/ed McGraw-Hill 2014 9788838668326 Testo di consultazione sull'informatica di base
Teoria Walter Savitch Programmazione con Java (seconda edizione) (Edizione 2) Pearson 2013 9788871929613 Testo di riferimento per la programmazione