Programmazione

A.A. 2017/2018
Insegnamento per
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
Il corso di Programmazione è un corso di 12 crediti finalizzato all'insegnamento della programmazione. Trattandosi di un corso di base, non richiede alcuna conoscenza specifica pregressa; obiettivo del corso è formare gli studenti alla programmazione in senso tradizionale, mediante l'uso del linguaggio Java.

Struttura insegnamento e programma

Edizione attiva
Responsabile
Moduli o unità didattiche
Unita' didattica
INF/01 - INFORMATICA - CFU: 9
Lezioni: 72 ore

Unita' didattica
INF/01 - INFORMATICA - CFU: 3
Laboratori: 48 ore
Turni:
Turno A
Docente: Santini Massimo
Turno B
Docente: Vigna Sebastiano

Informazioni sul programma
Il corso si compone sia di lezioni frontali teoriche sia di esercitazioni pratiche in laboratorio
Propedeuticità
Nessuna
Prerequisiti e modalità di esame
Metodi di accertamento (modalità d'esame):
L'esame si articola in quattro prove:

1) Prova scritta: in cui si chiede di risolvere esercizi sia a contenuto teorico
che applicativo (sviluppo di frammenti di codice). Non è permessa la consultazione
di alcun materiale. Durata della prova: 2 ore.

2) Orale di teoria: in cui vengono approfondite le basi teoriche della programmazione,
con particolare riferimento al paradigma ad oggetti. Durata della prova: 1/2 ora.

3) Prova di laboratorio: in cui viene proposto un progetto relativamente complesso
il cui sviluppo richiede padronanza delle basi della programmazione ad oggetti.
Durata della prova: 3 ore.

4) Orale di laboratorio: in cui vengono discusse le scelte implementative attuate per
lo sviluppo del progetto proposto alla prova di laboratorio. Durata della prova: 1/2 ora.

Al fine del superamento dell'esame, che avviene superando tutte le quattro prove di cui
sopra, lo studente deve dunque mostrare adeguata conoscenza sia delle basi teoriche
della programmazione (con particolare riguardo alla programmazione ad oggetti) sia una
certa padronanza di tecniche e strumenti di programmazione.
Materiale

G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA (III edizione), Addison-Wesley, Pearson Education Italia, 2008.

K. Arnold, J. Gosling, D. Holmes: Java Programming Language, The 5th Edition, Prentice Hall, 2012.

http://www.oracle.com/technetwork/java/index.html
Metodi didattici
Modalità di erogazione: Lezioni teoriche frontali, esercitazioni in laboratorio.
Modalità di frequenza: Fortemente consigliata.
Unita' didattica
Programma
Teoria

· Cos'è l'informatica
· Algoritmi, esempi. Dagli algoritmi ai programmi
· Linguaggi di programmazione (macchina, assembly, alto livello)
· Informazione (bit, byte, ...)
· Il calcolatore come macchina programmabile
· Architettura del calcolatore: la macchina di von Neumann
· Cenni alla rappresentazione digitale dell'informazione
· Funzionamento della macchina di von Neumann
· Architettura della CPU: ALU e CU
· Un esempio di CPU con relativo linguaggio assembly
· Ciclo di vita del software
· Linguaggi ad alto livello
· Strumenti per la programmazione
· Traduttori, editor
· La Java Virtual Machine (JVM)
· Perché Java
· Programmazione strutturata
· Concetti di variabile, tipo, assegnamento
· Selezione e iterazione
· Introduzione alla programmazione a oggetti
· Aspetti sintattici BNF e carte sintattiche Cenni della grammatica di Java. Primi esempi di programmi in Java
· Invocazioni di metodi
· Invocazione di costruttori
· Classi per I/O
· Prototipi, segnature, overloading
· Classe String: costruttori e oggetti
· Tipi di variabili: primitivi, riferimenti
· La classe Frazione, esempi di utilizzo
· Strutture di controllo in Java
· Selezione: if , switch
· Il tipo boolean e operatori logici
· Cicli: while, do, for
· Il test per le palindrome
· Istruzioni break e continue
· Cicli infiniti
· Espressioni: tipo, valore
· Effetti collaterali
· Lazy evaluation
· Tipi numerici interi e operatori
· Tipi numerici floating point e operatori
· Conversioni di tipo e cast
· Operatore +, il metodo toString
· Tipo char, relazione con i tipi interi
· Regole di precedenza
· Costanti
· Metodi statici
· Classi involucro, boxing e unboxing
· Cenni ai tipi enumerativi e loro uso negli switch
· Array, esempi
· Cicli for-each per array
· Cenni ad array a più dimensioni
· Parametri del main
· Cenni alle classi generiche, la classe Sequenza
· Classe Rettangolo
· Classe Quadrato
· Relazioni fra Quadrato e Rettangolo
o Ereditarietà
o Rappresentazione UML
o Overriding
o Uso dei riferimenti
o Polimorfismo
o instanceof
· Esempio FigureAreaMax
· Classe Cerchio
· Introduzione alle classi astratte
· Riepilogo: gerarchia delle classi, gerarchia dei tipi
· Classe Object
· Uso dei tipi riferimento (promozioni, cast)
· Dynamic binding
· Interfacce
· Interfacce e tipi
· Implementazione di classi: la classe Frazione
· La classe Orario
· Metodi e campi statici
· Modificatore final (per gli attributi)
· Riepilogo sui membri delle classi
· Garbage collection
· Implementazione di un'interfaccia
· Ereditarietà (la classe Quadrato)
· Costruttori e ereditarietà
· Estensioni di classi astratte
· Adombramento di variabili: uso di this
· Uso di super
· Overloading di metodi e costruttori
· Modificatori di accesso
· Modificatore final per i metodi e le classi
· Il metodo equals
· Esempi di classi e ereditarietà
· Invocazione di costruttori e metodi
· Passaggio di parametri
· Varargs
· Organizzazione della memoria
· Stack e record di attivazione
Materiale didattico e bibliografia
G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA (III edizione), Addison-Wesley, Pearson Education Italia, 2008.

K. Arnold, J. Gosling, D. Holmes: Java Programming Language, The 5th Edition, Prentice Hall, 2012.

http://www.oracle.com/technetwork/java/index.html
Unita' didattica
Programma
Laboratorio
· Introduzione a Linux
· Semplici programmi Java
· Selezione
· Iterazione
· Dati, variabili ed espressioni
· Array
· Stringhe e oggetti
· Implementazione di classi
· Ereditarietà e polimorfismo
· File
· Eccezioni
Periodo
Primo semestre
Periodo
Primo semestre
Modalità di valutazione
Esame
Giudizio di valutazione
voto verbalizzato in trentesimi
Docente/i
Ricevimento:
su appuntamento via mail
Sala Dottorato, V piano (edificio Lita), Dip. Fisica, via Celoria 16
Ricevimento:
Su appuntamento.
Studio 5007 - via Celoria, 18
Ricevimento:
Ricevimento su appuntamento per email
Stanza 5014, Dipartimento di Informatica