This course, with the integrated Laboratory module, aims at delivering the conceptual foundations and practical skills deemed essential for the development of Web applications and, more generally, distributed systems. Typical architectural solutions to be treated include: the client-server paradigm, remote procedure calls, dynamic Web, HTTP request handlers (servlets), the MVC (Model-View-Controller) pattern, and REST API-based Web applications. Development technologies presented are based on the C/Unix and Java platforms and, specifically for the Web, on Java and PHP (and a choice of related frameworks).
General learning objectives and expected results
Knowledge and understanding: students will acquire a precise knowledge and understanding of the conceptual foundations (i.e., fundamental concepts, problem classes and relevant solutions) underlying present-day design and development of distributed systems, including server-side Web applications.
Applying knowledge and understanding: students will become capable of employing solutions and paradigms learned during the course, so as to develop an effective "toolset" of skills, required for the design of distributed systems and server-side Web applications.
Making judgements: students will acquire the ability to assess the relative merits and limits of solutions commonly adopted, within software industry, to tackle problems and scenarios typical of the design of distributed systems and server-side Web applications.
Communication skills: students will learn the terminology and paradigms specific to distributed systems and server-side Web development, and acquire the communication skills required to express and discuss, at a rigorous technical level, problems of interest for the field.
Learning skills: students will become capable of profitaby reading, understanding and making use of available information sources, i.e. textbooks and/or online resources, possibly applying the information acquired to real-world scenarios.
Knowledge and understanding: students will acquire a precise knowledge and understanding of the main technologies for the development of distributed systems, including server side Web applications.
Applying knowledge and understanding: students will become capable of employing technologies introduced and practised during the course, so as to develop an effective "toolset" of practical, development- and deployment-oriented skills in the fields of distributed systems and server-side Web applications.
Making judgements: students will acquire the ability to assess the relative merits and limits of the main technologies available for the development and operations of distributed systems and server-side Web applications.
Communication skills: students will acquire the terminology specific to the design and development of distributed and Web systems, and acquire the communication skills required to express and discuss, at a rigorous technical level, problems of interest within such development tasks.
Learning skills: students will become capable of profitably using technical documentation concerning technologies and solutions commonly available for distributed and Web systems, in order to concretely put them to effective use in tasks of system development or deployment.
Lectures will mainly consist in live sessions dealing with the development of distributed applications, with a special emphasis on server-side web applications. These will be carried out by the lecturer and replicated, with suggested variations, by students, on their notebooks or lab workstations. As a framework and guidance for such sessions, lecture notes will be displayed during the lecture and shared with students through the Studium portal. Notes will provide a precise record of the material presented, as well as pointers to the required reference technical documentation.
Course activity is organized into laboratory sessions guided by the lecturer. Students are required to gain the ability to replicate the exercises proposed, modify them conveniently and tackle design problems conceived along the lines of the former. Laboratory practice aims at enabling students to refine their understanding of the technologies presented and acquire autonomous design and development skills.
Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.
Learning assessment may also be carried out on line, should the conditions require it.
The course will introduce the main concepts, paradigms and architectural aspects pertaining the following topics.
The course will consist in “live coding” laboratory sessions, aimed at achieving development and deployment skills on the following topics: