Vinaora Nivo Slider 3.x
Laurea Triennale
Vinaora Nivo Slider 3.x
Laurea Magistrale
Vinaora Nivo Slider 3.x
Informazioni per le nuove Matricole
Vinaora Nivo Slider 3.x
F.A.Q.

Vinaora Nivo Slider 3.x
Guida dello Studente - Laurea Triennale
Vinaora Nivo Slider 3.x
Guida dello Studente - Laurea Magistrale
Vinaora Nivo Slider 3.x
Piani di Studio
Vinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.x
Premio letterario Galileo per la divulgazione scientifica 2021
CyberChallenge.it
Presentazione Corso di Laurea in Ingegneria Informatica 2020/2021
Ingegneria.POT

Ultimi Avvisi

ACADEMY

Le Academy sono delle iniziative di formazione professionalizzante sviluppate dal DIETI in collaborazione con aziende quali Apple, Deloitte, CISCO, Accenture, Capgemini, TIM ed altre ancora. L'idea è di allargare le competenze fornite nei Corsi di Studio del Dipartimento con un approccio esperenziale ed a diretto contatto con il mondo del lavoro. Alcune di queste iniziative consentono anche di acquisire dei crediti formativi riconosciuti nei Corsi di Studio del nostro Dipartimento.

CANALI SOCIAL

Per ricevere aggiornamenti, puoi iscriverti ai nostri canali social su Facebook, Telegram, Instagram, LinkedIn, Twitter oppure al gruppo Teams Contact Point

UNIVERSITALY

Universitaly è il portale del Ministero dell'Istruzione, dell'Università e della Ricerca, creato appositamente per accompagnare gli studenti nel loro percorso di studi. Il sito è una vera e propria porta d’ingresso che permette di entrare nel mondo dei corsi di laurea e istruzione superiore in Italia. Link Universitaly

SCHEDA DELL'INSEGNAMENTO (SI)
SSD ING-INF/05

LAUREA TRIENNALE IN INGEGNERIA INFORMATICA

ANNO ACCADEMICO: 2022-2023

 

INFORMAZIONI GENERALI - DOCENTE

DOCENTE: RAFFAELE DELLA CORTE

TELEFONO: 0817683820

EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

 

INFORMAZIONI GENERALI - ATTIVITÀ

INSEGNAMENTO INTEGRATO (EVENTUALE): 
MODULO (EVENTUALE):
CANALE (EVENTUALE):
ANNO DI CORSO (I, II, III): III
SEMESTRE (I, II): II
CFU: 9

 

INSEGNAMENTI PROPEDEUTICI

(se previsti dall'Ordinamento del CdS)

Programmazione

 

EVENTUALI PREREQUISITI

...................................................................................................................................................

 

OBIETTIVI FORMATIVI

Il corso ha l'obiettivo di fornire conoscenze e competenze di programmazione avanzata in ambito concorrente e distribuito, introducendo gli strumenti per la programmazione ed il debugging di applicazioni multithreading e su rete in linguaggio Java e Python, e fornendo le basi del concetto di middleware e delle diverse soluzioni adottate in ambito industriale, soffermandosi principalmente sul modello orientato ai messaggi e sul modello a servizi, con applicazioni su tecnologie reali. Il corso introduce inoltre gli strumenti per la programmazione di web-application, sia front-end che back-end.

 

RISULTATI DI APPRENDIMENTO ATTESI

(Descrittori di Dublino)

Conoscenza e capacità di comprensione

Lo studente deve dimostrare di conoscere e saper comprendere i problemi di programmazione concorrente e distribuita, principalmente nell'ambito di applicazioni in linguaggio Java e Python, nonché le caratteristiche delle differenti tecnologie middleware. Il percorso formativo intende fornire agli studenti le conoscenze e gli strumenti metodologici, teorici e pratici necessari per riconoscere, analizzare e risolvere problemi legati allo sviluppo di applicativi multithreading e su rete, consentendo agli studenti di padroneggiare lo sviluppo di progetti software avanzati in Java e Python.

 

Capacità di applicare conoscenza e comprensione 

Lo studente deve dimostrare di essere in grado di risolvere problemi concernenti la programmazione concorrente e distribuita, utilizzando le competenze metodologiche, teoriche e pratiche di programmazione avanzata presentate al corso per la realizzazione di progetti software, multithreading e su rete, in linguaggio Java e Python.

 

PROGRAMMA-SYLLABUS

Programmazione concorrente e su rete in Java.

Richiami sul linguaggio Java e classi contenitore. Programmazione concorrente in Java. Threads in Java, stati di un thread, pool di threads. Sincronizzazione in Java. Monitor Java e il package java.util.concurrent di Java 1.5. Build automation tool e debugging in Java. Programmazione generica, reflection ed annotazioni in Java.

Programmazione su rete in Java. Il package java.net. Socket TCP in Java: classi Socket e ServerSocket. Socket UDP in Java: classi DatagramSocket e DatagramPacket. Server multithread. Astrazione di oggetto remoto. Proxy-Skeleton.

 

Modelli di middleware.

Definizione e proprietà del livello middleware. Enterprise Application Integration (EAI). Chiamata di procedura remota (RPC), scambio di messaggi (MOM), elaborazione transazionale (TP), spazio delle tuple (TS), accesso a dati remoti (RDA), oggetti distribuiti (DOM), modello a componenti (CM), web services, microservizi.

 

Modello a scambio di messaggi.

Specifica Java Message Service (JMS), client e provider. Comunicazione point-to-point e publish-subscribe. Modello di programmazione JMS. Messaggi JMS ed aspetti avanzati.

 

Modello a servizi ed implementazione web-app application.

Cenni a SOAP e ai servizi RPC. RESTful Web Services, risorsa e Uniform Resource Identifier (URI). Servizi RESTful e metodi HTTP. Implementazione di RESTful Web Services con framework Java ed implementazione di web-app con HTML, Javascript e framework per lo sviluppo front-end.

 

Il linguaggio Python.

Tipi di dato, costrutti di controllo, passaggio parametri, data collection, file, funzioni, moduli e debugging in Python. Programmazione object-oriented in Python: classi, oggetti, ereditarietà, polimorfismo, classi astratte. Programmazione concorrente e su rete in Python: multithreading, sincronizzazione, socket. Esempi di integrazione multi-linguaggio. Data Science in Python

 

MATERIALE DIDATTICO

●        Trasparenze delle lezioni del corso.

●        Libri di testo:

  ○         B. Eckel “Thinking in Java”.

  ○         L. H. Etzkorn "Introduction to Middleware - Web Services, Object Components, and Cloud Computing".

  ○         Semmy Purewal “Learning Web App Development”.

  ○         Craig Walls “Spring in Action”.

  ○         Allen B. Downey “Think Python”.

  ○         Mark Lutz “Programming Python”.

●        Materiale esercitativo.

●        Risorse disponibili in rete.

 

MODALITÀ DI SVOLGIMENTO DELL'INSEGNAMENTO

Lezioni frontali ed esercitazioni guidate svolte in aula.

 

VERIFICA DI APPRENDIMENTO E CRITERI DI VALUTAZIONE

a) Modalità di esame:

L'esame si articola in prova:
 Scritta e orale
 Solo scritta o intercorso a metà  
 Solo orale  
 Discussione di elaborato progettuale   
 Altro (prova al calcolatore)

 

In caso di prova scritta i quesiti sono (*):
 A risposta multipla  
 A risposta libera  
 Esercizi numerici  

 

 

b) Modalità di valutazione:

L'esito della prova scritta è vincolante ai fini dell'accesso alla prova orale. Si prevede inoltre la possibilità di pianificare prove intercorso eventualmente a sostituzione della prova scritta.

 

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.