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])

28 settembre 2021 (Lezione di teoria n° 1)

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

29 settembre 2021 (Lezione di teoria n° 2)

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

30 settembre 2021 (Lezioni di laboratorio n° A.1 e B.1)

  • Tipi riferimento definiti dall’utente
  • Array di tipi riferimento
  • Implementazione di pile in Java

5 ottobre 2021 (Lezione di teoria n° 3)

  • Strutture dati: dizionari
  • Introduzione alle strutture dati elementari: Pile e Code
  • Strutture dati: liste
  • Alberi e loro rappresentazione in memoria
  • Alberi binari di ricerca (introduzione)

6 ottobre 2021 (Lezione di teoria n° 4)

  • Alberi binari di ricerca
  • Heap (I parte)

7 ottobre 2021 (Lezioni di laboratorio n° A.2 e B.2)

  • Implementazione di code in Java
  • Implementazione di liste ordinate in Java

12 ottobre 2021 (Lezione di teoria n° 5)

  • Heap (II parte)
  • Heapsort

13 ottobre 2021 (Lezione di teoria n° 6)

  • 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

14 ottobre 2021 (Lezioni di laboratorio n° A.3 e B.3)

  • Eliminazione di elementi in liste
  • Implementazione di alberi binari di ricerca in Java
  • Verifica sperimentale dell’altezza di un albero di ricerca casuale

19 ottobre 2021 (Lezione di teoria n° 7)

  • Metodi di accesso e di modifica
  • Inizializzazione dei campi di istanza
  • Modificator final e oggetti immutabili
  • Classe String
  • Parola chiave this per richiamare i costruttori
  • Garbage Collector
  • Package e import

20 ottobre 2021 (Lezione di teoria n° 8)

  • Import di classi e metodi statici
  • Introduzione ai Generics
  • Introduzione agli ArrayList
  • Classi involucro

21 ottobre 2021 (Lezioni di laboratorio n° A.4 e B.4)

  • Esercizi su programmazione a oggetti
  • Implementazione di Liste in stile object oriented
  • Java Generics: implementazione di Liste di elementi
  • Introduzione a toString e equals

26 ottobre 2021 (Lezione di teoria n° 9)

  • Ereditarietà
  • Costruttori di classi figlie e parola chiave super
  • Modificatore di accesso “protected”
  • Il polimorfismo: l’overriding
  • Ereditarietà singola
  • Modificatore final per metodi di istanza

27 ottobre 2021 (Lezione di teoria n° 10)

  • Gerarchia delle classi in Java: la classe Object
  • Metodo toString
  • Metodo equals: significato ed implementazione
  • Tipo statico e tipo dinamico di variabili di tipo riferimento
  • Selezione della firma con overriding e overloading

28 ottobre 2021 (Lezioni di laboratorio n° A.5 e B.5)

  • Implementazione del’Heap e dell’HeapSort in Java
  • Esercizi su programmazione a oggetti

2 novembre 2021 (Lezione di teoria n° 11)

  • Possibili relazioni tra classi nella programmazione a oggetti
  • Classi astratte e metodi astratti
  • Esercizi su classi astratte

3 novembre 2021 (Lezione di teoria n° 12)

  • Le interfacce
  • Metodi di default
  • Interfaccia Comparable
  • Introduzione alle tabelle Hash: tabelle a indirizzamento diretto

4 novembre 2021 (Lezioni di laboratorio n° A.6 e B.6)

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

9 novembre 2021 (Lezione di teoria n° 13)

  • Funzioni di hashing
  • Hashing esterno con liste di trabocco
  • Hashing interno: ispezione lineare e hashing doppio

10 novembre 2021 (Lezione di teoria n° 14)

  • Hashing interno: ispezione lineare e hashing doppio
  • Gestione delle cancellazioni nell’hashing interno
  • Le eccezioni in Java (prima parte)

11 novembre 2021 (Lezioni di laboratorio n° A.7 e B.7)

  • Esercizi su programmazione a oggetti
  • Implementazione di Heap con Generics

16 novembre 2021 (Lezione di teoria n° 15)

  • Le eccezioni in Java (seconda parte)
  • Introduzione alla programmazione dinamica

17 novembre 2021 (Lezione di teoria n° 16)

  • Il problema delle attività compatibili
  • Algoritmi Greedy (prima parte)

18 novembre 2021 (Lezioni di laboratorio n° A.8 e B.8)

  • Implementazione di liste con interfacce Iterable e Iterator
  • Esercizi su programmazione a oggetti

23 novembre 2021 (Lezione di teoria n° 17)

  • Algoritmi Greedy (seconda parte)
  • Grafi: introduzione e definizioni
  • Implementazione di grafi tramite liste di adiacenza
  • Implementazione di grafi tramite matrici di adiacenza

24 novembre 2021 (Lezione di teoria n° 18)

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

25 novembre 2021 (Lezioni di laboratorio n° A.9 e B.9)

  • Assegnazione del progetto
  • Classe HashMap

30 novembre 2021 (Lezione di teoria n° 19)

  • Applicazione della visita in profondità: Componenti connesse
  • Applicazione della visita in profondità: Verifica di ciclicità
  • Applicazione della visita in profondità: Ordinamento topologico di un DAG
  • Versione ricorsiva ed iterativa della visita in profondità

1° dicembre 2021 (Lezione di teoria n° 20)

  • Problema del minimo albero ricoprente (MST)
  • Algoritmo di Kruskal
  • Analisi di complessità dell’algoritmo di Kruskal secondo diverse implementazioni
  • Algoritmo di Prim e sua analisi di complessità

2 dicembre 2021 (Lezioni di laboratorio n° A.10 e B.10)

  • Dichiarazioni delle variabili con var (tipo inferito)
  • Esercizi sulla classe HashMap
  • Classe Chrono per la misurazione delle performance di programmi java
  • Esercizi su programmazione a oggetti

7 dicembre 2021 (Lezione di teoria n° 21)

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

9 dicembre 2021 (Lezioni di laboratorio n° A.11 e B.11)

  • 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

14 dicembre 2021 (Lezione di teoria n° 22)

  • Algoritmo di Bellmann-Ford e sua analisi di complessità
  • Problema dei cammini minimi tra tutte le coppie di nodi
  • Algoritmo di Floyd-Warshall e sua analisi di complessità

15 dicembre 2021 (Lezione di teoria n° 23)

  • Esercizi sull’algoritmo di Floyd-Warshall
  • Esercizi su strutture dati

16 dicembre 2021 (Lezioni di laboratorio n° A.12 e B.12)

  • 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
  • Esercizi su programmazione a oggetti

21 dicembre 2021 (Lezione di teoria n° 24)

  • Esercizi su algoritmi per grafi

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