venerdì 29 maggio 2020

giovedì 28 maggio 2020

Lab del 27/05/2020 (Google meet, 2 ore): moduli ed esercizi sul Builder

Creare moduli e codificarne le dipendenze: requires, exports, requires transitive. Esercizi sul pattern builder.

lunedì 25 maggio 2020

Lezione del 25/05/2020 (Google meet, 2 ore): moduli Java 9, pattern

I moduli Java 9. I primi design pattern: strategy pattern e pattern del singoletto.


Lezione del 22/05/2020 (Google meet, 3 ore): ancora sugli stream

Operazioni su IntStream, DoubleStream, LongStream e passaggio da uno stream all'altro. Ottenere uno stream infinito. L'operazione intermedia flatMap. Ottenere uno stream infinito e iterare su uno stream: il metodo Stream.iterate. IntStream.range e rangeClosed. Copiare gli stream. Importanza dell'ordine delle operazioni. Ottimizzazione dell'ordine di esecuzione. Stream sequenziali e paralleli.

Lezione del 20/05/2020 (Google meet, 1.5 ore): introduzione al pattern singoletto e al pattern builder

Revisione delle specifiche di VerbAtlas. Introduzione al singoletto e al builder.

lunedì 18 maggio 2020

Lezione del 18/05/2020 (Google meet, 2 ore): gli stream

Metodi di Stream: map, limit, skip, collect. Collectors: counting, maxBy/minBy, summingInt, averagingInt, joining, toList, toSet. toCollection, mapping, groupingBy, partioningBy. 

venerdì 15 maggio 2020

Lezione del 15/05/2020 (Google meet, 3 ore): eccezioni e intro agli stream

Generici e covarianza e controvarianza. La classe Optional. Gli stream: definizione; caratteristiche; operazioni intermedie e terminali. Metodi principali dell'interfaccia java.util.stream.Stream. Comportamento "pigro" (lazy) degli stream. Operazioni senza stato e con stato. Stream ottimizzati per i tipi primitivi: IntStream, DoubleStream e LongStream. Come ottenere uno stream: da elenco di valori, da una Collection, da un array, da un file. Il pattern Builder, la sua importanza nel paradigma orientato agli oggetti e il suo uso negli stream mediante operazioni intermedie e terminali. Operazioni intermedie e terminali degli stream.


martedì 12 maggio 2020

Lezione dell'11/05/2020 (Google meet, 2 ore): i generici

Tipi generici. Definire e utilizzare una classe generica. Specificare più tipi generici. Estendere le classi generiche. Esercizio: inverti lista generica. Generici e collezioni: interfacce generiche prototipiche. Definire un metodo generico. Calcolare il massimo di una collezione di elementi di tipo generico. Sicurezza dei generici a tempo di compilazione: confronto con gli array. Jolly come tipi generici. Esempio: metodo generico di somma. Cancellazione del tipo (type erasure). Esempio: cancellazione del tipo nella classe Coppia e nel metodo getMassimo. Esercizio: cancellazione del tipo nella classe Pila.

Lezione dell'08/05/2020 (Google meet, 1.5 ore): presentazione dei progetti

Presentazione dei due progetti: API di VerbAtlas e Traffic!

mercoledì 6 maggio 2020

Lezione del 29/04/2020 (Google meet, 1.5 ore): esercizi sulla ricorsione

Esercizi sulla ricorsione: generazione di stringhe binarie di lunghezza k; generazione di permutazioni di caratteri.

Lezione del 27/04/2020 (Google meet, 2 ore): ricorsione

La ricorsione. Pensare ricorsivamente. Esempio: il fattoriale. Funzionamento della ricorsione: record di attivazione e stack. Non prevedere un caso base: la ricorsione infinita. Esempi: riconoscimento di una stringa palindroma. Ricerca binaria ricorsiva. Utilizzo di metodi di comodo mediante l'overloading. Utilizzo di metodi di comodo mediante l'overloading. Strutture dati ricorsive.