Diario delle lezioni

Dove non diversamente specificato, le lezioni sono 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])

23 settembre 2025 (Lezione di teoria n° 1)

  • Presentazione del corso e delle modalità d’esame
  • Richiami di programmazione strutturata
  • Modelli di calcolo: Macchina di Turing e Random Access Machine
  • Non calcolabilità di tutti i problemi

24 settembre 2025 (Lezione di teoria n° 2)

  • Notazioni asintotiche
  • Complessità di algoritmi
  • Complessità di programmi
  • Tipi di dato definiti dall’utente
  • Variabili e Oggetti in memoria
  • Tipi di dato definiti ricorsivamente

25 settembre 2025 (Lezioni di laboratorio n° A.1 e B.1)

  • Tipi definiti dall’utente
  • Sistema dei tipi: type checking statico tramite linter
  • Liste di tipi definiti dall’utente
  • Implementazione di Stack in Python (usando dataclass)
  • Esercizi

30 settembre 2025 (Lezione di teoria n° 3)

  • Introduzione alle strutture dati elementari e ai dizionari
  • Strutture dati elementari: Code con loro implementazione in Python (usando dataclass)
  • Alberi e loro rappresentazione in memoria
  • Alberi binari di ricerca e loro implementazione in Python (prima parte)

1° ottobre 2025 (Lezione di teoria n° 4)

  • Alberi binari di ricerca e loro implementazione in Python (seconda parte)
  • Heap: introduzione e definizioni

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

  • Strutture dati: introduzione alle liste
  • Garbage collector
  • Implementazione di liste ordinate in Python (prima parte)

7 ottobre 2025 (Lezione di teoria n° 5)

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

8 ottobre 2025 (Lezione di teoria n° 6)

  • Heapsort (II parte)
  • Esercizi su Heap
  • Introduzione alla programmazione orientata ad oggetti
  • Incapsulamento
  • Introduzione a campi e metodi di istanza e campi di classe

9 ottobre 2025 (Lezioni di laboratorio n° A.3 e B.3)

  • Implementazione di liste ordinate in Python (seconda parte) con esercizi
  • Dal dataclass alla definizione di classi in stile object oriented

14 ottobre 2025 (Lezione di teoria n° 7 da 1 ora)

  • Costruttori
  • Campi di istanza e campi di classe
  • Metodi di istanza

15 ottobre 2025 (Lezione di teoria n° 8 da 3 ore)

  • Metodi di classe e metodi statici
  • Information hiding in Python
  • Metodi di accesso e di modifica.
  • Proprietà (alternativa a utilizzo metodi di accesso e modifica)
  • Sistema di dichiarazione di tipi
  • Funzioni come oggetti: passate come parametro, ritornate da altre funzioni

16 ottobre 2025 (Lezioni di laboratorio n° A.4 e B.4)

  • Implementazione di Pile e Code in stile object oriented (OOP)
  • Implementazione di alberi binari di ricerca in Python in OOP (prima parte)

17 ottobre 2025 (Lezioni di laboratorio n° A.5 e B.5)

  • Implementazione di alberi binari di ricerca in Python in OOP (seconda parte)
  • Verifica sperimentale altezza media alberi binari di ricerca
  • Cast nel sistema dei tipi di Python

21 ottobre 2025 (Lezione di teoria n° 9)

  • Ereditarietà
  • Costruttori di classi figlie e parola chiave super
  • Modificatore di accesso per protezione a livello di classe (__) e di gerarchia di classi (_)
  • Il polimorfismo: l’overriding
  • Gerarchia delle classi: la classe object
  • I metodi di classe in Python e il parametro cls
  • Final per campi di istanza
  • final per metodi di istanza e per classi
  • Possibili relazioni tra classi nella programmazione a oggetti
  • Erediterietà singola e mulipla
  • Introduzione al Method Reolution Order

22 ottobre 2025 (Lezione di teoria n° 10)

  • Method Resolution Order (o Linearizzazione)
  • Strctural subtyping: Protocolli
  • Eccezioni in Python: gerarchia, sollevare e catturare eccezioni

23 ottobre 2025 (Lezioni di laboratorio n° A.6 e B.6)

  • Protocolli Iterarable e Itarator e loro applicazione a liste di interi definite come nuovi tipi
  • Esercizi di programmazione orientata agli oggetti in Python

24 ottobre 2025 (Lezioni di laboratorio n° A.7 e B.7)

  • Esercizi di programmazione orientata agli oggetti in Python

4 novembre 2025 (Lezione di teoria n° 11)

  • Precisazione sul metodo __eq__
  • List comprehension
  • Generatori
  • Introduzione ai Generics
  • Implementazione di code con tipi generici

5 novembre 2025 (Lezione di teoria n° 12)

  • Calcolo dell’altezza di un albero binario di ricerca in modo iterativo (sfruttando una coda di nodi)
  • Classi astratte e metodi astratti
  • Espressioni numeriche implementate con ereditarietà e classi astratte

6 novembre 2025 (Lezioni di laboratorio n° A.8 e B.8)

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

11 novembre 2025 (Lezione di teoria n° 13)

  • Esercizi in preparazione all’esonero
  • Introduzione alle tabelle Hash: tabelle a indirizzamento diretto

12 novembre 2025 (Lezione di teoria n° 14)

  • Tabelle Hash: Funzioni di hashing e collisioni
  • Hashing esterno con liste di trabocco
  • Hashing interno: introduzione

18 novembre 2025 (Lezione di teoria n° 15)

  • Hashing interno: ispezione lineare e hashing doppio
  • Gestione delle cancellazioni nell’hashing interno
  • Introduzione alla programmazione dinamica

19 novembre 2025 (Lezione di teoria n° 16)

  • La proprietà della sottostruttura ottima
  • Il problema delle attività compatibili
  • Introduzione agli algoritmi Greedy

20 novembre 2025 (Lezioni di laboratorio n° A.9 e B.9)

  • Insiemi in Python
  • Dizionari in Python
  • Esercizi

25 novembre 2025 (Lezione di teoria n° 17)

  • Algoritmi Greedy
  • Grafi: introduzione e prime definizioni
  • Componenti connesse in grafi non diretti
  • Componenti fortemente connesse

26 novembre 2025 (Lezione di teoria n° 18)

  • Implementazione di grafi tramite liste di adiacenza
  • Implementazione di grafi tramite matrici di adiacenza
  • Visita in ampiezza di grafi: introduzione e proprietà
  • Applicazione della visita in ampiezza: cammini di lunghezza minima
  • Visita in profondità di grafi: analisi e proprietà (prima parte)

27 novembre 2025 (Lezioni di laboratorio n° A.10 e B.10)

  • Esercizi su programmazione a oggetti, ereditarietà e classi astratte
  • Assegnazione del progetto
  • Correzione dell’esonero (prima parte)

28 novembre 2025 (Lezioni di laboratorio n° A.11 e B.11)

  • Libreria EzGraphics per progetto
  • Correzione dell’esonero (seconda parte)
  • Esercizi su programmazione a oggetti, ereditarietà e classi astratte

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