PAJC

Live teams

Qui trovate tutte le informazioni ed il materiale relativo al mio corso di Programmazione Avanzata Java e C.

Per quanto concerne l’anno accademico 2023/2024 il materiale (slide ed esercizi) verrà messo on-line durante lo svolgimento del corso, trovate il materiale qui.

Se vi perdete una lezione o volete ripassare un argomento vi ricordo che anche il materiale dello scorso anno è disponibile on-line (come sempre il corso si evolve nel tempo ma gli argomenti dello scorso anno sono analoghi a quelli attuali quindi potete sfruttare i video oltre alle dispense dispense_old)).

Programma dettagliato del corso

Il corso affronta aspetti di programmazione avanzata in ambienti Java e C.

Al termine del corso lo studente sarà in grado di progettare e realizzare applicazioni Java grafiche distribuite in grado di funzionare in rete quali: giochi interattivi, sistemi di simulazione, comunicazione, etc. Se da un lato Java è il linguaggio che utilizzeremo per creare sistemi complessi il C sarà fondamentale per comprendere come tali sistemi sono implementati a livello macchina.

Per quanto concerne Java i temi affrontati sono: J1) Ripasso dei prerequisiti:

  • approccio Java alla programmazione ad oggetti
  • classi, interfacce, ereditarietà, polimorfismo
  • gestione delle eccezioni
  • accesso al file system
  • strutture dati base: ArrayList, Set, HashMap
  • la gestione della memoria ed il garbage collector
  • i tool di sviluppo: java, javac, eclipse

J2) Programmazione funzionale:

  • classi anonime
  • lambda expression
  • method reference
  • interfaccie funzionali
  • computing stream
  • pattern di sviluppo ad eventi

J3) Sviluppo di GUI tramite Java Swing:

  • elementi base di gestione dell’interfaccia grafica
  • componenti grafici di Java Swing
  • gestione degli eventi base tramite listener
  • layout manager
  • creazione di componenti custom tramite composition
  • le primitive grafiche Java Swing
  • il ciclo di eventi in Java AWT/Swing

J4) I Thread

  • introdizione: processi e thread
  • approccio Java nella gestione dei thread
  • classe Thread, le interfacce Runnable e Callable
  • executor services e thread pooling
  • valori ritornati e oggetti Future
  • schedulazione dei task
  • gestione della concorrenza: sincronizzazione, semafori, oggetti atomici

J5) Comunicazione Client/Server

  • introduzione alla comunicazione in rete TCP/IP
  • i Socket in Java
  • creazione di un server applicativo multithread
  • creazione di un client applicativo miltithread
  • creazione di protocolli di comunicazione
  • integrazione nel modello MVC della comunicazione client/server
  • creazione di sistemi distribuiti

Per quanto concerne il linguaggio C i temi affrontati sono: C1) Ripasso dei prerequisiti:

  • tipi base e la loro gestione in memoria
  • strutture dati (struct)
  • typedef
  • strutture di controllo e passaggio dei parametri
  • i tool di sviluppo: complilatori C, Visual Studio Code

C2) La gestione dinamica della memoria

  • stack ed heap
  • passaggio di parametri nello stack
  • array, array multidimensionali, stringhe
  • puntatori
  • dualità puntatori ed array
  • allocazione dinamica (malloc, free)
  • passaggio di puntatori a funzioni
  • creazione di puntatori a funzioni

C3) Strutture dati ed algoritmi

  • creazione di strutture dati dinamiche utilizzando puntatori
  • algoritmi per la creazione e gestione di code/buffer
  • algoritmi per la creazione e gestione di stack
  • algoritmi per la creazione e gestione di liste concatenate
  • algoritmi di ricerca: sequenziale, binaria
  • algoritmi di ordinamento: bubble sort, selezione, inserimento, shell sort, quick sort
Video delle lezioni

Tutti i video delle lezioni e dei lab per l'anno 2020/2021 sono on-line sul canale youtube: Redolfi PAJC 2020/2021 Video

Back
Next