---++ <font color=#006400 size="+3">Diario delle Lezioni e delle Esercitazioni</font> <DIV ALIGN="justify" style="margin-left:5%; margin-right:10%"> <B>Mercoledì 5 marzo 2014 - Lezione 1</B> <BLOCKQUOTE> Presentazione del corso. <br> Sviluppo di Programmi certificati: precondizioni, postcondizioni, invarianti.<br> JAVA: funzioni come metodi statici.<br> Funzione per il calcolo della somma tra due numeri naturali.<br> Funzione che calcola il predecessore. <br> Terminazione.<br> Versione efficiente del calcolo della somma. <BR> </BLOCKQUOTE> <B>Mercoledì 5 marzo 2014 - Laboratorio 1</B> <BLOCKQUOTE> Struttura di un programma JAVA: il programma helloWorld. <br> Rappresentazione di interi con stringhe binarie. </BLOCKQUOTE> <B>Venerdì 7 marzo 2014 - Lezione 2</B> <BLOCKQUOTE> Formalizzazione di una tecnica per dimostrare la correttezza di un programma iterativo. <br> Funzione per il calcolo della differenza, prodotto ed esponenziale. <br> Introduzione alle funzioni ricorsive. <br> Correttezza di una funzione ricorsiva. </BLOCKQUOTE> <B>Martedì 11 marzo 2014 - Lezione 3 (Chierichetti) </B> <BLOCKQUOTE> Funzione differenza: versione di complessità lineare e versione quadratica che itera il predecessore.<br> Calcolo dei tempi di esecuzione di un programma.<br> Cenni al profiling del codice. <br> Moltiplicazione egiziana. <br> </BLOCKQUOTE> <B>Mercoledì 12 marzo 2014 - Laboratorio 2</B> <BLOCKQUOTE> Errori di stack overflow (prodotto ricorsivo).<br> Introduzione agli array.<br> Trasformazione di numeri in base k (con cifre registrare in un array).<br> Somma lineare (nella taglia degli interi) e logaritmica (negli interi).<br> </BLOCKQUOTE> <B>Venerdì 14 marzo 2014 - Lezione 4</B> <BLOCKQUOTE> Funzioni ricorsive: l'esempio di Fibonacci; <br> La pila di record di attivazione delle chiamate di funzione. <br> Sviluppo di programmi a partire dalle asserzioni: Fibonacci iterativo. <br> Funzione ricorsiva efficiente per la funzione di Fibonacci.<br> Trasformazione di un qualsiasi ciclo in funzioni ricorsive. <br> Dimostrazioni di correttezza per funzioni ricorsive per induzione.<br> </BLOCKQUOTE> <B>Martedì 18 marzo 2014 - Lezione 5</B> <BLOCKQUOTE> Costrutto iterativo for. <br> Introduzione agli oggetti. Definizione di variabili String e array. Creazione di oggetti.<br> Heap e Stack.<br> Oggetti mutabili (array) e immutabili (stringhe). <br> Assegnazione tra oggetti: alias e side effects. <br> Un primo programma con array: minimo di un vettore.<br> </BLOCKQUOTE> <B>Mercoledì 19 marzo 2014 - Laboratorio 3 (Salvo)</B> <BLOCKQUOTE> Evidenze sperimentali di oggetti mutabili e immutabili.<br> Stampa di un vettore: versione iterativa e ricorsiva.<br> Evidenze sperimentali che una scansione ricorsiva di un array percorre il vettore "due volte": <br> in avanti (all'attivazione delle chiamate) e all'indietro (al rientro delle chiamate).<br> Array multidimensionali (matrici) in Java come array di array.<br> <b>Esercizi</b>: stampa di una matrice e allocazione del triangolo di Tartaglia. </BLOCKQUOTE> <B>Venerdì 21 marzo 2014 - Lezione 6</B> <BLOCKQUOTE> Discussione conclusiva sull'astrazione procedurale.<br> Astrazione per parametrizzazione. Generalità di una funzione.<br> Esempio: stampa di un vettore. Versione che stampa tutto il vettore.<br> Versione parametrizzata rispetto a indici di inizio e fine per stampare una porzione di vettoe.<br> Versione parametrizzata rispetto a un passo.<br> Iterazione astratta. Ciclo =for (x : a) C=.<br> =System.out.printf("\n")= e portabilità dei programmi.<br> Pillole di Storia 1: Obiettivi di Java: portabilità degli eseguibili. Il Bytecode Java e la Java Virtual Machine.<br> Esempi conclusivi di sviluppo di programmi su array: coefficienti binomiali e baricentro.<br> Riflessioni su complessità asintotica degli algoritmi ed efficienza concreta dei programmi.<br> </BLOCKQUOTE> <B>Martedì 25 marzo 2014 - Lezione 7</B> <BLOCKQUOTE> Pillole di Storia 2: La programmazione a oggetti: dai tipi di dato astratto agli oggetti. SmallTalk.<br> Programmazione a Oggetti: strutture dati + metodi (incapsulamento) + ereditarietà.<br> Metafora per capire gli oggetti: automa (struttura ignota) con interfaccia (pulsanti).<br> Esempio di specifica e implementazione di una classe: tipo Razionale.<br> Funzioni di rappresentazione e di astrazione. Invarianti di tipo di dato.<br> Esempio: versione mutabile e immutabile dei Razionali.<br> </BLOCKQUOTE> <B>Mercoledì 26 marzo 2014 - Laboratorio 4</B> <BLOCKQUOTE> Esempi sulle stringhe. Il problema della verifica se due stringhe sono anagrammi.<br> Efficienza ed eleganza: Programmazione Dinamica. Esempi di Coefficienti Binomiali e Fibonacci.<br> </BLOCKQUOTE> <B>Venerdì 28 marzo 2014 - Lezione 8</B> <BLOCKQUOTE> Costruttori. Overloading dei costruttori. <br> Metodi pubblici e privati. Esempi sui razionali. Uso di =reduce()= per mantenere l'invariante di tipo di dato.<br> Esercizio di programmazione ricorsiva: Baricentro con un'unica passata ricorsiva.<br> </BLOCKQUOTE> <B>Martedì 1 aprile 2014 - Lezione 9</B> <BLOCKQUOTE> Introduzione a Ereditarietà e Sottotipaggio.<br> Regola dell'assegnazione e passaggio di parametri.<br> Tipo statico (apparente) e tipo dinamico (attuale).<br> Controlli del Type Checker e nozione di Type Safety.<br> Meccanismo computazionale run-time: lookup dinamico dei metodi.<br> Metodi ereditati da =Object=: =String toString()= e =boolean equals(Object)=.<br> Overriding: corretta ridefinizione dei metodi ereditati da =Object=. Interferenze con l'overloading di =equals=.<br> Fine tipo =Raz= (razionali mutabili) e =RazImm= (razionali immutabili).<br> </BLOCKQUOTE> <B>Mercoledì 2 aprile 2014 - Laboratorio 5</B> <BLOCKQUOTE> Esempi di definizioni di Classi e Sottoclassi.<br> Punti e Figure. <br> </BLOCKQUOTE> <B>Venerdì 4 aprile 2014 - Lezione 10</B> <BLOCKQUOTE> Esempio sul lookup dinamico dei metodi: classi =Punto=, =PuntoColorato=, =PuntoCartesiano=.<br> Specializzazione dei metodi via overriding. Write stupid methods!<br> </BLOCKQUOTE> <B>Martedì 8 aprile 2014 - Lezione Perduta</B> <BLOCKQUOTE> Lezione Annullata causa altro impegno Aula V. </BLOCKQUOTE> <B>Mercoledì 9 aprile 2014 - Laboratorio 6</B> <BLOCKQUOTE> Esempi di definizioni di Classi e Sottoclassi.<br> Vector, IntSet e Polinomi. <br> </BLOCKQUOTE> <B>Venerdì 11 aprile 2014 - Lezione 11</B> <BLOCKQUOTE> Introduzione alle Interfacce.<br> Esercizi in vista dell'esonero: divisione intera.<br> </BLOCKQUOTE> <B>Martedì 29 aprile 2014 - Lezione 12</B> <BLOCKQUOTE> Introduzione alle eccezioni: eccezioni come oggetti.<br> Uso di eccezioni: sollevamento, cattura, trattamento.<br> Eccezioni in Java: dichiarazione (=throws=), sollevamento esplicito (=throw=).<br> Cattura di Eccezioni: blocco =try-catch=. Analisi sequenziale. Differenza con l'overloading (best matching).<br> Eccezioni checked e unchecked.<br> </BLOCKQUOTE> <B>Mercoledì 30 aprile 2014 - Laboratorio 7</B> <BLOCKQUOTE> Esempi di definizione ed uso di eccezioni.<br> Esempi di definizione ed uso di iteratori.<br> Strutture dati in Java: liste ed alberi.<br> </BLOCKQUOTE> <B>Martedì 6 maggio 2014 - Lezione 13</B> <BLOCKQUOTE> Discussione sul polimorfismo: terminologia.<br> Polimorfismo indotto dal subtyping: esempio, ordinamento di un array di tipo =Comparable[]=.<br> Strutture dati: Liste di =Object=: vantaggi e limiti.<br> Liste polimorfe, usando i Tipi Generici di Java.<br> Traduzione in Java di una definizione di tipo induttivo. <br> </BLOCKQUOTE> <B>Mercoledì 7 maggio 2014 - Laboratorio 8 (Salvo)</B> <BLOCKQUOTE> Discussione Interattiva sulla progettazione di un'applicazione per la gestione del gioco della Dama.<br> </BLOCKQUOTE> <B>Venerdì 9 maggio 2014 - Lezione 14</B> <BLOCKQUOTE> Ancora sui tipi generici: tipi generici e subtyping. <br> Wildcards e limiti superiori e inferiori.<br> Attenzione: covarianza e controvarianza del subtyping. <br> Funzioni come parametro: come fare in Java: Interfacce Funzionali (aka Blocchi)<br> Funzionali sulle liste: =map= e =reduce=.<br> Funzioni come parametro: soluzione più alla moda: Lambda Expressions.<br> </BLOCKQUOTE> <B>Martedì 13 maggio 2014 - Lezione 15</B> <BLOCKQUOTE> Completamento del codice delle liste generiche.<br> Funzioni =toString=, =equals= e =powerset= (con uso di =map= e =reduce=).<br> Alcuni problemi tecnici: instanceof su tipi generici (uso della wildcard) e cast necessari nelle liste. </BLOCKQUOTE> <B>Mercoledì 14 maggio 2014 - Laboratorio 9</B> <BLOCKQUOTE> Esercitazioni su input/output. </BLOCKQUOTE> <B>Venerdì 16 maggio 2014 - Lezione 16 (Chierichetti)</B> <BLOCKQUOTE> Introduzione alle Collection Classes.<br> Interfaccia Collection e diverse classi che implementano collezioni.<br> Vantaggi e svantaggi delle varie collezioni.<br> </BLOCKQUOTE> <B>Martedì 20 maggio 2014 - Lezione 17</B> <BLOCKQUOTE> Lo strano caso della collezione =Stack= e della sua superclasse =Vector=.<br> Generazione di sottotipi per implementare una interfaccia. Esempio: =Addable=.<br> Ridiscussione sul progetto.<br> </BLOCKQUOTE> <B>Mercoledì 21 maggio 2014 - Laboratorio 10</B> <BLOCKQUOTE> Esercitazioni sulle Collection Classes. </BLOCKQUOTE> <B>Venerdì 23 maggio 2014 - Lezione 18</B> <BLOCKQUOTE> Miscellanea: cenni ai package.<br> Miscellanea: rivisitazione di =static= (campi, metodi, inner class) e =final= (campi, metodi, classi).<br> Miscellanea: iteratori definiti come inner class statiche e private. Motivazioni.<br> Un affascinante strumento per scrivere programmi che indagano il codice e la struttura delle classi: Reflection. </BLOCKQUOTE> <B>Martedì 27 maggio 2014 - Lezione 19</B> <BLOCKQUOTE> Miscellanea: extends tra interfacce e dafault methods.<br> Introduzione alle Interfacce grafiche. <br> Le librerie Swing e AWT: caratteristiche generali, pro e contro.<br> Oggetti grafici: Frame, bottoni, Textfields, Labels, finestre di dialogo etc.<br> Gerarchie di eventi e interfacce listener.<br> </BLOCKQUOTE> <B>Mercoledì 28 maggio 2014 - Laboratorio 11 (Salvo)</B> <BLOCKQUOTE> Esercitazioni su interfacce grafiche. Piccoli programmi interattivi.<br> Layouts. Listener.<br> </BLOCKQUOTE> <B>Venerdì 30 maggio 2014 - Lezione 20</B> <BLOCKQUOTE> Esercitazione: crivello di eratostene. Versione "tradizionale" con array di booleani.<br> Crivello di Eratostene: versione "a oggetti", basato sull'idea di lista di primi.<br> </BLOCKQUOTE> <B>Martedì 3 giugno 2014 - Lezione 21</B> <BLOCKQUOTE> Ancora sui generics: alberi binari generici.<br> Esercitazione di ricorsione: il problema della Torre di Hanoi.<br> </BLOCKQUOTE> <B>Mercoledì 4 giugno 2014 - Laboratorio 12 (Salvo)</B> <BLOCKQUOTE> Esercitazioni su interfacce grafiche (2).<br> Il problema della Torre di Hanoi (1): programma che visualizza le mosse graficamente.<br> Il problema della Torre di Hanoi (2): programma che permette all'utente di giocare con il mouse.<br> </BLOCKQUOTE> <B>Venerdì 6 giugno 2014 - Lezione 22</B> <BLOCKQUOTE> Chiusura sulle interfacce grafiche: cenni agli Applets.<br> Specifiche e Testing.<br> Introduzione a tecniche di Testing e Debugging: White Box e Black Box Testing.<br> </BLOCKQUOTE> -- Users.IvanoSalvo - 07 Mar 2014
This topic: Metod_prog/AD
>
WebHome
>
DiarioDelleLezioni
Topic revision: r19 - 2021-02-25 - IvanoSalvo
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback