Servizi per la didattica
PORTALE DELLA DIDATTICA

Programmazione distribuita I

01NVWOV

A.A. 2018/19

Lingua dell'insegnamento

Italiano

Corsi di studio

Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino

Organizzazione dell'insegnamento
Didattica Ore
Lezioni 39
Esercitazioni in laboratorio 21
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Masala Enrico Professore Associato ING-INF/05 39 0 24 0 7
Collaboratori
Espandi

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 6 B - Caratterizzanti Ingegneria informatica
2018/19
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.
The course is taught in Italian. Course for the Laurea Magistrale degree in Computer Engineering, taught in English during the 2nd semester of the 1st year. The objective of this course is to provide the student with the knowledge and abilities required for developing distributed applications, starting with the so called 'network programming', up to the programming of a web application, including the access to a distributed relational data base. In particular, the course aims at providing the basic knowledge and abilities necessary for evaluating the main design choices for the above applications.
- 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 dei principali aspetti di HTML5, CSS, e Javascript. - Capacità di usare Javascript per la realizzazione di pagine web interattive. - Conoscenza degli aspetti avanzati delle applicazioni web: sessioni, serializzazioni dei dati, standards (JSON, XML), AJAX. - Capacità di realizzare applicazioni web con utilizzo congiunto di programmazione lato client tramite Javascript, lato server basata su PHP, e con utilizzo di una base dati relazionale remota, incluse applicazioni single-page e basate su AJAX. - Conoscenza delle principali problematiche di robustezza, sicurezza, interoperabilità e prestazioni delle applicazioni studiate e relative best practice.
• Knowledge of the socket interface in C, for network programming, including both IPv4 and IPv6 versions. • Ability to apply the knowledge of the socket interface to implement distributed applications, including the case of dual-stack (IPv4 and IPv6) servers. • Knowledge of the main aspects of HTML5, CSS and Javascript. • Ability to use Javascript to develop interactive web pages. • Knowledge of advanced aspects of web application programming: sessions, data serialization, standards (JSON, XML), AJAX. • Ability to develop web applications that jointly use client-side programming (Javascipt), server-side programming (PHP) and interaction with remote relational data bases, including single-page and AJAX-based applications. • Knowledge of robustness, security, interoperability, and performance issues and related best practices
Capacità di programmazione in C di livello avanzato, inclusa la 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. Conoscenze di HTML, PHP con accesso a basi di dati, capacità di sviluppare semplici applicazioni web basate su questi linguaggi.
Advanced C programming ability, including the basics of process management and synchronization in Unix. Knowledge of database management systems and ability to describe operations on them using the SQL language. Knowledge of the main protocols for computer networks, with particular reference to HTTP, TCP, UDP, IPv4 and IPv6. As the practical part of this course is very important, good debugging skills are also required, and the ability to use packet sniffing tools (e.g. Wireshark). Knowledge of HTML, PHP with access to databases, ability to develop simple web applications based on these languages.
• 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,1 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,6 CFU): HTML5 e CSS programmazione client side (Javascript), paradigma Model-View-Controller (MVC) programmazione avanzata server-side in PHP: sessioni, cookie, files, oggetti gestione delle principali problematiche di robustezza, sicurezza, interoperabilità, prestazioni e relative best practices nelle applicazioni web serializzazione dei dati con JSON, XML, AJAX e applicazioni single-page
• Introduction (0,3 CFU): distributed interaction models (client-server, peer-to-peer, 2-tier, 3-tier, ...) architecture of client-server applications and of web applications • Network programming (2,1 CFU): the socket interface network programming in the C language with the socket interface handling concurrency and OS-specific aspects (in Linux) using binary data representation standards (XDR) • Distributed applications based on the web paradigm (3,6 CFU): HTML5 and CSS scripting in the client side (Javascript), Model-View-Controller (MVC) pattern advanced aspects of scripting in the server-side with PHP: session, cookies, files, objects management of robustness, security, interoperability, and performance issues and related best practices in web applications development data serialization with JSON and XML, AJAX and single-page applications
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.
In addition to lectures, the course includes a programming laboratory (21 hours) about the application of the presented techniques. During laboratory time, the students will discuss with the teachers about the solution of the assigned exercises.
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 With jQuery, CSS & HTML5, 4th Ed., O’Reilly, 2014
The teacher will provide material (copy of slides and links to online resources) that will be available on the course web site. Suggested textbooks: • W.R. Stevens, B. Fenner, A. M. Rudoff, Unix Network Programming, Volume 1, 3rd Ed., Pearson, 2004 • R. Nixon, Learning PHP, MySQL & JavaScript With jQuery, CSS & HTML5, 4th Ed., O’Reilly, 2014
Modalità di esame: prova orale obbligatoria; prova di laboratorio; progetto individuale;
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 HTML5, 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. La prova di programmazione di rete richiede di aver svolto tutti gli esercizi della parte socket dei relativi laboratori assegnati durante il corso. La prova ha la durata di circa 2 ore, e richiede di sviluppare un'applicazione di rete effettuando variazioni agli esercizi svolti durante i laboratori, che devono essere pre caricati dallo studente nella propria area personale sui dischi di rete del laboratorio. E' possibile consultare documenti elettronici pre caricati sulla propria area personale (slides, pdf, ecc.) ed un solo blocco di appunti cartacei rilegati marcati con il nome dello studente. La valutazione si basa su tests automatici delle funzionalità richieste dalla traccia. Alcuni di questi tests sono resi disponibili, come guida, agli studenti durante lo svolgimento della prova. La prova web viene valutata insieme al docente, solo se la parte di laboratorio e' sufficiente, tramite verifica manuale delle funzionalità del sito e delle pratiche di programmazione usate, secondo una checklist non nota a priori allo studente e dipendente dalla prova web. Viene anche verificata la conoscenza puntuale da parte dello studente del codice consegnato e la sua capacità di discutere il progetto con riferimento agli argomenti trattati nel corso. Gli studenti che sottomettono soluzioni originali e di buona qualità ad alcuni degli esercizi proposti durante i laboratori di programmazione e hanno una valutazione positiva sono esonerati dalla prova di programmazione di rete ma devono rispondere ad una domanda riguardo la loro soluzione durante l'esame orale. L'esonero è valido per l'anno accademico in corso ma solo per il primo appello in cui si desidera sostenere l'esame.
Exam: compulsory oral exam; practical lab skills test; individual project;
The exam consists of verifying the expected knowledge and skills acquired by the student by means of two practical tests followed by an oral discussion: a programming test on Network Programming (program to be developed in C with given requirements) and a programming test on Web Programming (web site to be developed using HTML5, CSS, JavaScript, PHP, DB access, with given requirements). The two tests will contribute with the same weight to the final mark. The network programming test takes place in the lab in the date of the exam call while for the web programming test an assignment is given about 3 weeks before the exam call and the student develops the solution autonomously at home by the deadline indicated in the assignment. Only the students who have submitted their solution to the web assignment by the deadline are admitted to the network programming test. In order to take the network programming test, it is necessary for the student to have solved all the network programming assignments given in the labs during the course. The network programming test has a duration of about 2 hours. It requires the student to develop the code of some network applications by making some variations on the solutions of the exercises that were proposed in the labs during the course. These solutions must be loaded by each student in his/her personal area on the lab network disks, in the days before the exam. Each student can also load other electronic material in the same area (e.g. slides, pdf, etc) and access this material during the test, while no internet access will be possible during the test. Finally, during the test, each student can bring and use a single piece of paper material, that is, one set of bound notes or book. The evaluation of the network programming test is based on automated tests, some of which are provided to the students during the test. The web programming test solution is evaluated by the teacher together with the student, only if the network programming test has been passed, by means of manual verification of the web application functionalities and programming practices, according to a checklist not previously known by the student and dependent on the web assignment. The teacher also checks that the student has a punctual knowledge of the submitted code and can discuss the project with reference to the topics illustrated in the course. The students who submit good quality and original solutions to some exercises proposed during programming laboratories and get positive evaluation are exempted from the network programming test but are required to answer a question about their solutions during the oral exam. Exemption is valid for the current academic year, but only for the first time the exam is taken.


© Politecnico di Torino
Corso Duca degli Abruzzi, 24 - 10129 Torino, ITALY
m@il