Politecnico di Torino
Politecnico di Torino
   
Login  
en
Politecnico di Torino
Anno Accademico 2016/17
01NVWOV
Programmazione distribuita I
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
Masala Enrico ORARIO RICEVIMENTO A2 ING-INF/05 39 0 21 0 7
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 6 B - Caratterizzanti Ingegneria informatica
Esclusioni:
03MQP
Presentazione
L’insegnamento, che è erogato in italiano nel secondo semestre del primo anno per la Laurea Magistrale in Ingegneria Informatica, si prefigge di far conoscere le principali tecniche per la realizzazione di applicazioni distribuite, a cominciare dalla cosiddetta "programmazione di rete", per arrivare alla programmazione di un'applicazione distribuita basata sul paradigma web che includa anche l'uso di una base dati relazionale remota.
Inoltre, la trattazione è orientata a consentire allo studente di acquisire le abilità di base necessarie ad affrontare la valutazione e le principali scelte progettuali nell’ambito dei predetti argomenti.
Risultati di apprendimento attesi
- Conoscenza dell'interfaccia socket in C per la programmazione di rete, sia nella versione per IPv4, sia in quella per IPv6.
- Capacità di applicare le conoscenze sull'interfaccia socket per realizzare applicazioni distribuite basate su questa.
- Conoscenza di HTML (incluso i principali aspetti di HTML5), CSS, e Javascript.
- Capacità di applicare le conoscenze sull'HTML e CSS per la realizzazione di pagine web semplici, incluso interazione con l'utente lato client tramite Javascript
- Conoscenza dei meccanismi per la realizzazione di pagine web dinamiche.
- Capacità di realizzare applicazioni web con utilizzo di programmazione lato client tramite Javascript e lato server basata su PHP, e con utilizzo di una base dati relazionale remota.
- Conoscenza delle principali problematiche di robustezza, sicurezza, interoperabilità e prestazioni delle applicazioni studiate e relative best practice.
Prerequisiti / Conoscenze pregresse
Conoscenze sulla programmazione in C di livello avanzato, incluse le basi di gestione, comunicazione e sincronizzazione tra processi in ambiente UNIX. Conoscenze dei sistemi di gestione di basi dati relazionali e capacità di definire operazioni su di essi, in linguaggio SQL. Conoscenze sui principali protocolli per reti di calcolatori, con particolare riguardo a TCP, UDP, IPv4 e IPv6, HTTP. Per le attività di laboratorio, parte fondamentale del corso, sono richieste spiccate abilità di debugging, in particolare di applicazioni scritte in linguaggio C, e la capacità di utilizzare dei tool di analisi di traffico di rete al fine di debugging.
Programma
• Introduzione (0,3 CFU):
 modelli di interazione distribuita (client-server, peer-to-peer, 2-tier, 3-tier, ...)
 architettura delle applicazioni client-server e delle applicazioni web

• Programmazione di rete (2,4 CFU):
 l'interfaccia dei socket
 programmazione di rete in C con l'interfaccia dei socket
 gestione di concorrenza e di aspetti specifici del sistema operativo (in Linux)
 uso di rappresentazioni standard binarie per i dati (XDR)

• Applicazioni distribuite basate sul paradigma web (3,3 CFU):
 HTML e CSS
 programmazione client side (Javascript)
 programmazione server-side (PHP)
 gestione delle sessioni (cookie e altri meccanismi)
 integrazione con i database
Organizzazione dell'insegnamento
Oltre alle lezioni l'insegnamento comprende esercitazioni di laboratorio (21 ore) sull'applicazione delle tecniche presentate. Durante i laboratori gli studenti discuteranno con i docenti le loro soluzioni degli esercizi assegnati.
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
Il docente fornirà il materiale (copia delle trasparenze e link a risorse disponibili online) che sarà disponibile sul sito del corso.

Libri di testo suggeriti:
• W.R. Stevens, B. Fenner, A. M. Rudoff, Unix Network Programming, Volume 1, 3rd Ed., Pearson, 2004
• R. Nixon, Learning PHP, MySQL & JavaScript, 4th Ed., O’Reilly, 2014
Criteri, regole e procedure per l'esame
L'esame consiste nella verifica del possesso delle conoscenze attese e delle abilità pratiche descritte in precedenza, per tramite di due prove pratiche seguite da una discussione orale: una prova di programmazione di rete (sviluppo di un programma in C partendo da requisiti dati) e una prova di programmazione web (sviluppo di una applicazione web usando HTML, CSS, Javascript, PHP e accesso a un DB remoto). Le due prove contribuiscono al voto finale con lo stesso peso. La prova di programmazione di rete si svolge in laboratorio nella data dell'appello mentre per la prova web viene assegnato un esercizio circa 3 settimane prima di ogni appello e lo studente sviluppa la soluzione autonomamente a casa entro la scadenza indicata nell'esercizio. Solo gli studenti che hanno sottomesso la loro soluzione entro la scadenza sono ammessi alla prova di programmazione di rete. Gli studenti che superano la prova di programmazione di rete accedono alla discussione orale nella quale vengono discusse le prove con lo studente valutando le sue capacità di applicare le conoscenze acquisite e viene assegnato il voto finale.
Orario delle lezioni
Statistiche superamento esami

Programma definitivo per l'A.A.2016/17
Indietro



© Politecnico di Torino
Corso Duca degli Abruzzi, 24 - 10129 Torino, ITALY
WCAG 2.0 (Level AA)
Contatti