Diario delle lezioni A.A. 2016/2017
Ogni lezione è da 2 ore.
Totale:
· 24 lezioni (48 ore) per il modulo di teoria da 6 CFU.
· 12 lezioni (24 ore) per il modulo di Laboratorio da 3 CFU, sdoppiato in due canali (A[A-L] e B[M-Z])
12 settembre 2016 (Lezione di teoria n° 1)
· Presentazione del corso di laurea
· Presentazione del corso e delle modalità d’esame
· Paradigmi di programmazione
· Linguaggi di alto livello
· Compilatore ed Interprete
12 e 13 settembre 2016 (Lezioni di laboratorio n° A.1 e B.1)
· Java ed Eclipse: installazione e primi programmi
· Bytecode: compilazione ed interpretazione in Java
· Output in Java
· Introduzione alle variabili
· Commenti in Java
14 settembre 2016 (Lezione di teoria n° 2)
· Il sistema binario: bit, byte e loro multipli
· Hardware e Software
· Linguaggio macchina
· Codifica binaria di numeri interi; complemento a 2
· Rappresentazione mantissa ed esponente
· Tipi primitivi del linguaggio Java
· Non tutto è calcolabile: halting problem.
19 settembre 2016 (Lezione di teoria n° 3)
· Variabili, tipi, identificatori
· Tipi primitivi del Java
· Dichiarazione, Inizializzazione ed assegnazione di variabili
· Sintassi e semantica dei linguaggi di programmazione
· Espressioni ed effetti collaterali
· Operatori per tipi numerici
· Conversione implicita e conversione esplicita (cast)
19 e 20 settembre 2016 (Lezioni di laboratorio n° A.2 e B.2)
· Esercizi su variabili ed assegnamento
· Esercizi su Operatori aritmetici per numeri interi e numeri in virgola mobile
· Esercizi su input e output
· Esercizi su conversione implicita e conversione esplicita (cast)
21 settembre 2016 (Lezione di teoria n° 4)
· Espressioni booleane
· Operatori relazionali
· Operatori booleani
· Leggi di De Morgan
· Problema / algoritmo / programma
· I diagrammi di flusso
· Comando if e If…else
· Comando vuoto
· Comando blocco
26 settembre 2016 (Lezione di teoria n° 5)
· Esercizi su diagrammi di flusso
· Ambito di visibilità delle variabili e blocchi
· Comando while e suo diagramma di flusso strutturato
· Programmazione strutturata versus programmazione con salti
· Comando do…while e suo diagramma di flusso strutturato
· Equivalenza comandi while e do…while
26 e 27 settembre 2016 (Lezioni di laboratorio n° A.3 e B.3)
· Esercizi su visibilità variabili
· Esercizi su array
· Comando while e do…while: gioco indovinello; somma e media di numeri
28 settembre 2016 (Lezione di teoria n° 6)
· Introduzione agli array
· Tipi primitivi vs tipi riferimento
· Stack e Heap
· Array monodimensionali: dichiarazione, creazione, accesso
· Esercizi sui cicli con array
3 ottobre 2016 (Lezione di teoria n° 7)
· Comando for
· Equivalenza tra comandi while, do…while e for
· Array multidimensionali
3 e 4 ottobre 2016 (Lezioni di Laboratorio n° A.4 e B.4)
· Esercizi su array
· Esercizi su cicli
5 ottobre 2016 (Lezione di teoria n° 8)
· Comando for each
· Comando switch e comando break
· Comandi etichettati
· Comando break
· Comando continue
· Espressione condizionale
· Esercizi su array e comandi iterativi
11 ottobre 2016 (Lezione di Laboratorio n° B.5)
· Esercizi su array
· Esercizi su cicli
12 ottobre 2016 (Lezione di teoria n° 9)
· Metodi
· Parametri formali e Parametri attuali
· Parametri di tipo primitivo e di tipo riferimento
· Stack e Heap nella chiamata dei metodi
· Simulazione programmi con Stack e Heap
17 ottobre 2016 (Lezione di teoria n° 10)
· Ricerca lineare e ricerca binaria
· Esercizi su array e cicli
17 e 18 ottobre 2016 (Lezioni di Laboratorio n° A.5 e B.6)
· Esercizi su array e cicli
· Esercizi su metodi
· Esercizio: conteggio elementi non ripetuti in array
19 ottobre 2016 (Lezione di teoria n° 11)
· Ordinamento per selezione
· Ordinamento per inserimento
· Esercizio: controllo se array è ordinato
24 ottobre 2016 (Lezione di teoria n° 12)
· Esercizio: Ordinamento a bolle
· Overloading di metodi
· Ricorsione
· Albero delle chiamate ricorsive
· Esercizio: fattoriale (versione ricorsiva ed iterativa)
24 e 25 ottobre 2016 (Lezioni di Laboratorio n° A.6 e B.7)
· Esercizi su array e cicli
· Esercizi su metodi
· Esercizio: conteggio elementi non ripetuti in array
26 ottobre 2016 (Lezione di teoria n° 13)
· Evoluzione dello stack nelle chiamate ricorsive
· Iterazione e ricorsione
· Esercizio: potenza (versione ricorsiva ed iterativa)
· Tipi riferimento definiti dall’utente: costrutto class
· Differenza tra tipi primitivi e tipi riferimento
2 novembre 2016 (Lezione di teoria n° 14)
· Esercizi in classe in preparazione alla prova parziale
7 novembre 2016 (Lezione di teoria n° 15)
· Prova parziale
7 e 8 novembre 2016 (Lezioni di Laboratorio n° A.7 e B.8)
· Correzione prova parziale
· Esercizi su tipi riferimento definiti dall’utente
· Operatore “.”
· Array di tipi riferimento
9 novembre 2016 (Lezione di teoria n° 16)
· Introduzione alla programmazione ad oggetti e sue caratteristiche (incapsulamento, ereditarietà, polimorfismo)
· Incapsulamento e occultamento di informazione
· Variabili di istanza e metodi di istanza
· Variabili di classe e metodi di classe
· Modificatori di accesso public e private
· Costruttore di default
· Costruttori definiti dall’utente
· Parola chiave “this”
14 novembre 2016 (Lezione di teoria n° 17)
· Blocco di inizializzazione
· Modificatore final
· Metodi di accesso (get) e di modifica (set)
· La classe String e i suoi metodi principali
· Metodo toString()
14 e 15 novembre 2016 (Lezioni di Laboratorio n° A.8 e B.9)
· I package
· Invocazione di metodi come scambio di messaggi tra oggetti
· Invocazione di altri costruttori con la parola chiave “this”
· Esercizi su programmazione a oggetti: il cambio di prospettiva rispetto alla programmazione strutturata
16 novembre 2016 (Lezione di teoria n° 18)
· Ereditarietà
· Polimorfismo (overriding e overloading)
· Tipi di dato ed ereditarietà
· Tipo statico e tipo dinamico delle variabili
· Modificatore di accesso: protected e modificatore vuoto (a livello di package)
· Classe Object e gerarchia delle classi
21 novembre 2016 (Lezione di teoria n° 19)
· Modificatore “final” applicato a metodi e classi
· Selezione della firma a tempo di compilazione e del metodo che sovrascrive a tempo di esecuzione
· Metodi astratti e classi astratte
· ArrayList
· Classi involucro
21 e 22 novembre 2016 (Lezioni di Laboratorio n° A.9 e B.10)
· ArrayList: i metodi add, set, get, size, clear, remove, indexOf
· Classi involucro
· Boxing e Unboxing automatici
· ArrayList con tipi generici
23 novembre 2016 (Lezione di teoria n° 20)
· Interfacce
· Implementazione di default
· Implementazione di più interfacce
28 novembre 2016 (Lezione di teoria n° 21)
· Eccezioni
· Eccezioni controllate e non controllate
· Gestione delle eccezioni: try-catch-finally
· Esercizi
28 e 29 novembre 2016 (Lezioni di Laboratorio n° A.10 e B.11)
· Esercizi su interface: gli iteratori
· Esercizi su programmazione ad oggetti
30 novembre 2016 (Lezione di teoria n° 22)
· Operatore instanceof
· Metodo equals
· Esercizi
5 dicembre 2016 (Lezione di teoria n° 23)
· Esercizi in preparazione all’esame
5 e 6 dicembre 2016 (Lezioni di Laboratorio n° A.11 e B.12)
· Esercizi in preparazione all’esame
7 dicembre 2016 (Lezione di Laboratorio n° A.12)
· Esercizi in preparazione all’esame
7 dicembre 2016 (Lezione di teoria n° 24)
· Esercizi in preparazione all’esame