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.
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.
• 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 apply 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
• 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 apply 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
Advanced C programming abilities, 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 data bases, and ability to develop simple web applications based on these languages.
Advanced C programming abilities, 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 data bases, and ability to develop simple web applications based on these languages.
• 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: sessions, cookies, files, objects
management of robustness, security, interoperability, and performance issues and related best practices in web application development
data serialization with JSON and XML, AJAX and single page applications
• 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: sessions, cookies, files, objects
management of robustness, security, interoperability, and performance issues and related best practices in web application development
data serialization with JSON and XML, AJAX and single page applications
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.
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.
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
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 pratica di laboratorio; Progetto individuale;
...
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.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di 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 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.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.