Diario delle lezioni

Ogni lezione è da 2 ore.

Totale:

  • 24 lezioni (48 ore) per il modulo di teoria da 6 CFU.
  • 2*12=24 lezioni (2*24 = 48 ore) per il modulo di Laboratorio da 3 CFU, sdoppiato in due canali (A[A-L] e B[M-Z])

27 settembre 2022 (Lezione di teoria n° 1)

  • Presentazione del corso e delle modalità d’esame
  • Richiami di programmazione strutturata
  • Richiami di complessità di programmi

28 settembre 2022 (Lezione di teoria n° 2)

  • Tipi riferimento definiti dall’utente
  • Variabili e Oggetti in memoria
  • Stack e Heap nei tipi riferimento

29 settembre 2022 (Lezioni di laboratorio n° A.1 e B.1)

  • Tipi riferimento definiti dall’utente
  • Array di tipi riferimento
  • Array multidimensionali
  • Esercizi

4 ottobre 2022 (Lezione di teoria n° 3)

  • Tipi riferimento definiti ricorsivamente
  • Garbage collector della JVM
  • Strutture dati: introduzione alle liste
  • Strutture dati: dizionari
  • Strutture dati elementari: Pile e Code con loro implementazione in Java

5 ottobre 2022 (Lezione di teoria n° 4)

  • Alberi e loro rappresentazione in memoria
  • Alberi binari di ricerca (parte prima)

6 ottobre 2022 (Lezioni di laboratorio n° A.2 e B.2)

  • Esercizi su pile e code
  • Implementazione di liste ordinate in Java (prima parte)

11 ottobre 2022 (Lezione di teoria n° 5)

  • Alberi binari di ricerca (parte seconda)
  • Heap per implementare code con priorità (prima parte)

12 ottobre 2022 (Lezione di teoria n° 6)

  • Heap per implementare code con priorità (seconda parte)
  • Heapsort

13 ottobre 2022 (Lezioni di laboratorio n° A.3 e B.3)

  • Implementazione di liste ordinate in Java (seconda parte)
  • Implementazione di alberi binari di ricerca in Java (prima parte)

18 ottobre 2022 (Lezione di teoria n° 7)

  • Introduzione alla programmazione orientata ad oggetti
  • Incapsulamento
  • Campi di istanza e campi di classe
  • Metodi di istanza e campi di classe
  • Costruttori e costruttore di default
  • Parola chiave this
  • Modificatori di accesso e Information hiding

19 ottobre 2022 (Lezione di teoria n° 8)

  • Metodi di accesso e di modifica
  • Inizializzazione dei campi di istanza
  • Modificator final e oggetti immutabili
  • Classe String
  • Package e import

25 ottobre 2022 (Lezione di teoria n° 9)

  • Import di classi e metodi statici
  • Introduzione ai Generics
  • Introduzione agli ArrayList
  • Classi involucro
  • Ereditarietà (prima parte)

26 ottobre 2022 (Lezione di teoria n° 10)

  • Ereditarietà (seconda parte)
  • Costruttori di classi figlie e parola chiave super
  • Modificatore di accesso “protected”
  • Il polimorfismo: l’overriding
  • Ereditarietà singola
  • Modificatore final per metodi di istanza e per classi
  • Gerarchia delle classi in Java: la classe Object
  • Metodo toString

27 ottobre 2022 (Lezione di teoria n° 11)

  • Metodo equals: significato ed implementazione
  • Possibili relazioni tra classi nella programmazione a oggetti
  • Parola chiave var
  • Tipo statico e tipo dinamico di variabili di tipo riferimento
  • Selezione della firma con overriding e overloading (I parte)

2 novembre 2022 (Lezione di teoria n° 12)

  • Selezione della firma con overriding e overloading (II parte)
  • Classi astratte e metodi astratti
  • Esercizi su classi astratte
  • Le interfacce (I parte)

3 novembre 2022 (Lezioni di laboratorio n° A.4 e B.4)

  • Implementazione di alberi binari di ricerca in Java (seconda parte)
  • Verifica sperimentale dell’altezza di un albero di ricerca casuale

4 novembre 2022 (Lezioni di laboratorio n° A.5 e B.5)

  • Implementazione di Code in stile object oriented
  • Java Generics: implementazione di Code di elementi
  • Creazione e utilizzo di archivio Jar per librerie
  • Calcolo dell’altezza di un albero binario di ricerca in modo iterativo (sfruttando una coda di nodi)

8 novembre 2022 (Lezione di teoria n° 13)

  • Le interfacce (II parte)
  • Cenni a interfaccia Comparable e Iterable
  • Introduzione alle tabelle Hash: tabelle a indirizzamento diretto
  • Tabelle Hash: Funzioni di hashing

9 novembre 2022 (Lezione di teoria n° 14)

  • Hashing esterno con liste di trabocco
  • Hashing interno: ispezione lineare e hashing doppio
  • Gestione delle cancellazioni nell’hashing interno

10 novembre 2022 (Lezioni di laboratorio n° A.6 e B.6)

  • Esercizi su programmazione a oggetti, ereditarietà e classi astratte

14 novembre 2022 (Lezione di laboratorio n° A.7)

  • Esercizi su programmazione a oggetti, ereditarietà e classi astratte

15 novembre 2022 (Lezione di teoria n° 15)

  • Le eccezioni in Java

16 novembre 2022 (Lezione di teoria n° 16)

  • Introduzione alla programmazione dinamica

17 novembre 2022 (Lezione di laboratorio n° B.7)

  • Esercizi su programmazione a oggetti, ereditarietà e classi astratte

22 novembre 2022 (Lezione di teoria n° 17)

  • Il problema delle attività compatibili
  • Algoritmi Greedy

24 novembre 2022 (Lezioni di laboratorio n° A.8 e B.8)

  • Implementazione di liste di Generics con interfacce Iterable e Iterator

28 novembre 2022 (Lezione di teoria n° 18)

  • Grafi: introduzione e definizioni
  • Implementazione di grafi tramite liste di adiacenza
  • Implementazione di grafi tramite matrici di adiacenza
  • Visita in ampiezza di grafi: analisi e proprietà

29 novembre 2022 (Lezione di teoria n° 19)

  • Applicazione della visita in ampiezza: cammini con il minor numero di archi
  • Visita in profondità di grafi: analisi e proprietà
  • Applicazione della visita in profondità: Verifica di ciclicità

30 novembre 2022 (Lezione di teoria n° 20)

  • Applicazione della visita in profondità: Ordinamento topologico di un DAG
  • Versione ricorsiva ed iterativa della visita in profondità
  • Problema del minimo albero ricoprente (MST)
  • Algoritmo di Kruskal
  • Analisi di complessità dell’algoritmo di Kruskal secondo diverse implementazioni
  • Algoritmo di Prim

1° dicembre 2022 (Lezioni di laboratorio n° A.9 e B.9)

  • Classe HashMap
  • Esercizi sulla classe HashMap
  • Assegnazione del progetto

6 dicembre 2022 (Lezione di teoria n° 21)

  • Algoritmo di Prim: analisi di complessità
  • Dimostrazione di correttezza algoritmi di Prim e Kruskal
  • Problema dei cammini minimi da singola sorgente

7 dicembre 2022 (Lezione di teoria n° 22)

  • Algoritmo di Dijkstra e sua analisi di complessità
  • Algoritmo di Bellmann-Ford e sua analisi di complessità

13 dicembre 2022 (Lezione di teoria n° 23)

  • Problema dei cammini minimi tra tutte le coppie di nodi
  • Algoritmo di Floyd-Warshall e sua analisi di complessità
  • Esercizio sull’algoritmo di Floyd-Warshall

14 dicembre 2022 (Lezione di teoria n° 24)

  • Esercizi su algoritmi per grafi
  • Chiarimento su visita completa in profondità
  • Esercizi su selezione delle firme

15 dicembre 2022 (Lezioni di laboratorio n° A.10 e B.10)

  • Esercizi su programmazione a oggetti

20 e 21 dicembre 2022 (Lezioni di laboratorio n° A.11 e B.11)

  • Java Generics: type erasure
  • Invarianza dei Generics e Covarianza degli Array
  • Array di Generics: problematicità
  • Java Generics: metodi generici
  • Java Generics: Wildcards e wildcards bounded
  • Lettura e scrittura di file di testo in Java
  • Lettura e scrittura di file di binari in Java: interfaccia Serializable
  • Esercizi su programmazione a oggetti

22 dicembre 2022 (Lezioni di laboratorio n° A.12 e B.12)

  • Esercizi in preparazione all'esame

Scopri cosa vuol dire essere dell'Ud'A

SEDE DI CHIETI
Via dei Vestini,31
Centralino 0871.3551

SEDE DI PESCARA
Viale Pindaro,42
Centralino 085.45371

email: info@unich.it
PEC: ateneo@pec.unich.it
Partita IVA 01335970693

icona Facebook   icona Twitter

icona Youtube   icona Instagram