en
Politecnico di Torino
Anno Accademico 2012/13
09CBIPC, 09CBIMQ
Programmazione a oggetti
Corso di Laurea in Ingegneria Del Cinema E Dei Mezzi Di Comunicazione - Torino
Corso di Laurea in Matematica Per L'Ingegneria - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
Rivoira Silvano ORARIO RICEVIMENTO     80 0 0 0 12
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 8 B - Caratterizzanti Ingegneria informatica
Presentazione
Insegnamento obbligatorio per la Laurea Triennale in Ingegneria Del Cinema E Dei Mezzi Di Comunicazione. Ha come obbiettivo il completamento della preparazione dello studente a livello di capacita di programmazione con l’insegnamento delle tecniche avanzate di programmazione, in particolare del paradigma di programmazione a oggetti e di un linguaggio capace di supportarlo.
Risultati di apprendimento attesi
Conoscenze: tecniche avanzate di programmazione, in particolare algoritmi, strutture dati e gestione delle versioni; il paradigma di programmazione ad oggetti in termini di classi, oggetti, attributi, comportamenti, messaggi, ereditarietà e polimorfismo; il supporto a tali concetti fornito da un linguaggio di programmazione (Java)

Abilità: capacità di comprendere un problema di programmazione di piccola/media difficoltà (intorno a 10-20 classi), analizzarlo, e risolverlo con (1) la definizione (o scelta da librerie) di classi e relative funzioni e attributi, (2) la progettazione di dettaglio degli algoritmi in ogni funzione, (3) l’implementazione in linguaggio Java ed il collaudo di tutte le classi e funzioni, (4) la conoscenza operativa del linguaggio e del relativo ambiente di sviluppo ed esecuzione.
Prerequisiti / Conoscenze pregresse
Costrutti base di programmazione (tipi, variabili e costanti, decisioni, cicli, procedura e passaggio parametri)
Algortimi (sorting, searching) e strutture dati (vettore, lista linkata, albero, grafo)
Programma
Introduzione (0.5 crediti)
- La programmazione ad oggetti
- Java come linguaggio di programmazione: codice sorgente e bytecode.
- Compilatore, macchina virtuale, ambienti di sviluppo.

Analisi di algoritmi (0.5 CFU)
- analisi asintotica e complessità di caso peggiore
- Algoritmi di ordinamento: ordinamenti quadratico (selection sort, insertion sort), lineare (counting sort) logaritmico (quicksort, heapsort, mergesort);

Strutture dati statiche e dinamiche (1 CFU)
- rappresentazione dei dati in memoria e gestione della memoria in runtime;
- puntatori e riferimenti
- allocazione di memoria statica, su stack, e dinamica;
- strutture linkate;

Gestione di progetti complessi (0.5 CFU)
- modularità
- gestione delle dipendenze
- gestione delle versioni

Programmazione a oggetti base(2.5 CFU)
- Classi, attributi e funzioni di classe
- Ovearloading
- Oggetti, costruttori e parametri
- Package
- Visibilita

Ereditarietà (1 CFU)
- Ereditarietà, polimorfismo e dynamic binding
- Classi astratte, interfacce

Librerie e grafica (2 CFU)
- Classi per l'input/output
- Eccezioni
- Collezioni
- Grafica, swing
Organizzazione dell'insegnamento
Le esercitazioni comprendono sia lo svolgimento di esercizi specifici di approfondimento delle parti teoriche sia lo sviluppo di alcuni progetti software.
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
IJames Gosling, Ken Arnold and David Holmes, The Java Programming Language, 4th Edition, Pearson
Bruce Eckel, Thinking in Java, 3rd edition, Prentice Hall
Schede e materiale fornito dal docente
Criteri, regole e procedure per l'esame
Scrittura di un programma Java, su personal computer, con uso di ambiente di sviluppo e librerie. Il voto viene dato in base alla qualità dell'elaborato misurata in termini di funzionalità correttamente implementate, scelte di progetto e stile di programmazione.
Orario delle lezioni
Statistiche superamento esami

Programma definitivo per l'A.A.2012/13
Indietro