Search Google Appliance

Programmazione e algoritmi 2

  • Edizioni di altri A.A.:
  • 2019/2020
  • 2020/2021

Dati insegnamento


Lingua Insegnamento:
Italiano 
Testi di riferimento:
- S. Mizzaro. Introduzione alla programmazione con il linguaggio Java. FrancoAngeli. ISBN: 978-88-464-1696-1
- A. Bertossi e A. Montresor. Algoritmi e strutture dati. Seconda edizione. CittàStudi Edizioni. ISBN: 978-88-251-7356-7 
Obiettivi formativi:
L’obiettivo formativo per lo studente è che raggiunga i seguenti risultati di apprendimento:

*Conoscenza e capacità di comprensione*
Il corso intende fornire le conoscenze metodologiche e applicative di base della programmazione ad oggetti, e le capacità di base per l’analisi e la progettazione di algoritmi.

*Capacità di applicare conoscenza e comprensione*
Pur prendendo come linguaggio di riferimento il linguaggio Java, il corso ambisce a fornire agli studenti gli strumenti per poter comprendere ed utilizzare un qualsiasi linguaggio di programmazione orientato agli oggetti. Inoltre, anche con l’aiuto di casi di studio concreti svolti in laboratorio, sarà in grado di analizzare e sviluppare algoritmi per la risoluzione di problemi fondamentali, anche utilizzando strutture dati non banali come alberi e grafi. 
Prerequisiti:
Nessuno 
Metodi didattici:
Lezioni frontali 
Modalità di verifica dell'apprendimento:
*Conoscenza e capacità di comprensione*
La verifica dei risultati di apprendimento sarà effettuata tramite una o più prove scritte ed un colloquio finale (quest’ultimo è facoltativo e/o a discrezione del docente).
La valutazione finale, espressa in trentesimi, tiene conto sia delle prove scritte preliminari che del colloquio di esame.

*Capacità di applicare conoscenza e comprensione*
Durante le prove d’esame si verifica la capacità degli studenti di applicare le conoscenze fornite dal corso al fine di scrivere programmi orientati agli oggetti in Java e di essere in grado di analizzare e progettare strutture dati ed algoritmi efficienti. 

- Introduzione alla programmazione ad oggetti
- L’ereditarietà e il polimorifismo
- La classe String e la classe ArrayList
- Le eccezioni e la gestione dei file
- Grafi e visite di grafi
- Programmazione dinamica e algoritmi greedy
- Algoritmi fondamentali su grafi


- Introduzione alla programmazione ad oggetti
- L’ereditarietà: sottoclassi e superclassi
- Costruttori
- La gerarchia della classi in Java
- Il polimorifismo: overloading e overriding
- Il late binding
- Classi astratte e interfacce
- Operatore instanceof e cast
- I package
- La classe String e la classe ArrayList
- Le eccezioni: lanciare, catturare e rimbalzare eccezioni
- La gestione dei file
- Grafi e loro rappresentazione in memoria
- Visite di grafi: in profondità, in ampiezza
- Ordinamento topologico di un DAG
- Programmazione dinamica
- Algoritmi Greedy
- Algoritmi fondamentali su grafi: problema del minimo albero ricoprente e problema dei cammini minimi