Laurea Magistrale DM270

Il corso verte sulla discussione di problemi di ottimizzazione, in particolare di problemi di ottimizzazione combinatoria, con brevi cenni all'ottimizzazione continua. Si pone come obiettivo quello di familiarizzare lo studente con problemi di ottimizzazione che occorrono frequentemente in applicazioni pratiche, permettendogli di riconoscere la difficoltà del problema e fornendogli gli strumenti per risolvere tali problemi. Gli strumenti vanno dagli algoritmi esatti, in grado di restituire sempre la soluzione ottima di un problema, alle euristiche, alle quali ricorrere quando una risoluzione esatta del problema richiederebbe tempi di esecuzione troppo elevati.

L’insegnamento fornisce una conoscenza di base dei principi di progettazione e dei fondamenti dello sviluppo delle applicazioni mobili, e presenta lo sviluppo su piattaforma Android, su piattaforma iOS, e cross-platform. Viene inoltre presentato il paradigma “aggregate programming” per programmare sistemi distribuiti (come ad es. insiemi di dispositivi mobili) specificando il comportamento globale e derivando automaticamente i comportamenti locali.

Architettura degli Elaboratori II

Il corso si propone di fornire le metodologie e gli strumenti per la programmazione concorrente, ponendo l'enfasi sui vari modelli cui i linguaggi fanno riferimento e sugli strumenti tipici di ogni modello.

Un secondo obiettivo è l'introduzione allo studio di algoritmi per ambienti distribuiti. A tal fine viene  discusso e analizzato un insieme di algoritmi distribuiti "classici" per ambienti a rete.


Sviluppo Software per Componenti e
 Servizi Web


A.A. 2016-2017

CFU: 9 (90 ore, 45 lezioni)‏ -- Numero di ore: 50 (lezione) + 40 ( laboratorio) 

Programma in sintesi: 
 Metodologie e strumenti di Project Management per permettere di  gestire lo sviluppo di progetti Software dall'analisi al testing. Le basi del Project Management unite all'applicazione della metodologie Agile, in particolare xP  di Ingegneria del Software si applicheranno allo sviluppo del progetto svolto in laboratorio.
Controllo di version e GIT  Code repository   BitBucket  
  
Le diverse architetture per la progettazione di applicazioni client/server distribuite sulla rete, dalle soluzioni two-tiers alle three-tiers, tipologie varie di middleware e di oggetti distribuiti: i business objects. La distribuzione dei processi applicativi nelle reti Internet ed Intranet. 
L'architettura per oggetti distribuiti dello standard CORBA: l'IDL, il linguaggio per la definizione delle interfacce, e gli ORB, gli Object Request Broker.   
L'architettura Java 2 Enterprise: gli Enterprise Java Beans. Nuove soluzioni per le applicazioni Internet ed il commercio elettronico: Java Server Pages per le interfacce utente e XML per l'interscambio di dati. I Web Services e gli standard UML. 

Introduzione e utilizzo del framework Spring, in particolare per l'uso di Microservices.

Cenni di soluzioni per Enterprise Application Integration, le Service Oriented Architecture e il Cloud Computing
 
Definizione e successiva realizzazione dell'applicazione distribuita in Java ed EJB, utilizzando l'application server di Sun J2EE e  Netbeans o Eclipse, ambienti di sviluppo per J2EE. Si utilizzera' UML (Unified Modeling Language) nel progetto preliminare di un'applicazione distribuita. Si costruiranno Web Services sia SOAP che RESTful. Inoltre l'applicazione dovra' integrare servizi offerti dagli Open APIpiu' noti, come Facebook, Google e si sviluppera' una parte dell'interfaccia per Smartphone nuova generazione ( Android)

LEZIONI:
  • lunedi 9-11 aula E
  • martedi 11-13 Laboratorio Von Neumann
  • mercoledi 9-11 Laboratorio Von Neumann
  • giovedi 16-18 Laboratorio Von Neumann