Politecnico di Torino
Politecnico di Torino
Politecnico di Torino
Anno Accademico 2016/17
Distributed programming I
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino
Docente Qualifica Settore Lez Es Lab Anni incarico
Sisto Riccardo ORARIO RICEVIMENTO PO ING-INF/05 40 0 20 8
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 6 B - Caratterizzanti Ingegneria informatica
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.
Risultati di apprendimento attesi
• 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 HTML (including the main aspects of HTML5), CSS and Javascript.
• Ability to apply the knowledge of HTML, CSS and Javascript to develop simple web pages, including the interaction with the user using Javascript.
• Knowledge of web applications that use server-side programming (dynamic web pages) and interaction with relational data bases.
• Ability to develop web applications that use client-side programming (Javascipt), server-side programming (PHP) and interaction with remote relational data bases.
• Knowledge of robustness, security, interoperability, and performance issues and related best practices
Prerequisiti / Conoscenze pregresse
Knowledge of advanced C programming, 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).
• 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,4 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,3 CFU):
 HTML and CSS
 scripting in the client side (Javascript)
 scripting in the server-side (PHP)
 managing sessions (cookies and other mechanisms)
 integration with data bases
Organizzazione dell'insegnamento
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.
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
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, 4th Ed., O’Reilly, 2014
Criteri, regole e procedure per l'esame
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 HTML, 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. The students who pass the network programming test go to the oral discussion where the programming tests are discussed with the student in order to check the student's ability to apply the acquired knowledge and the final mark is assigned.
Orario delle lezioni
Statistiche superamento esami

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

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