- Oggetto:
- Oggetto:
TECNOLOGIE WEB: APPROCCI AVANZATI
- Oggetto:
WEB TECHNOLOGIES: ADVANCED APPROACHES
- Oggetto:
Anno accademico 2024/2025
- Codice attività didattica
- CPS0547
- Docente
- Luca Anselma (Titolare dell'insegnamento)
- Corso di studio
- Corso di laurea magistrale in Comunicazione, ICT e media (Classe LM-59)
- Anno
- 1° anno
- Periodo
- Primo semestre
- Tipologia
- Caratterizzante
- Crediti/Valenza
- 9
- SSD attività didattica
- INF/01 - informatica
- Erogazione
- Tradizionale
- Lingua
- Italiano
- Frequenza
- Facoltativa
- Tipologia esame
- Scritto ed orale
- Prerequisiti
-
Nozioni di base di: architettura dei calcolatori; software e sistemi operativi; reti e Internet; linguaggi di programmazione; HTML e CSS, programmazione Web (si veda anche la sezione Testi consigliati e bibliografia/Testi di riferimento).
Basic notions about: computer architectures; software and operating systems; networks and Internet; programming languages; HTML and CSS, Web programming (see also Section Testi consigliati e bibliografia/Testi di riferimento). - Propedeutico a
-
Propedeutico per i corsi di
Intelligenza artificiale,
Programmazione mobile: Android,
Programmazione avanzata: Python e Arduino,
Web of open and secure data.
Preparatory for
Artificial Intelligence,
Mobile programming: Android,
Advanced Programming: Python and Arduino,
Web of open and secure data. - Oggetto:
Sommario insegnamento
- Oggetto:
Avvisi
- Oggetto:
Obiettivi formativi
Oggigiorno, la maggioranza soluzioni informatiche per la gestione dell'informazione, della comunicazione e della conoscenza - tanto in azienda quanto sul territorio e nella Pubblica Amministrazione - sono applicazioni o servizi che si basano sulle tecnologie Web.
L'obiettivo dell'insegnamento è quello di fornire le competenze per sviluppare un'applicazione o servizio Web, utilizzando i corretti paradigmi architetturali e le corrette metodologie di sviluppo.
L'insegnamento si propone di rendere gli studenti e le studentesse autonomi nella scelta e nell'utilizzo degli strumenti necessari per lo sviluppo di applicazioni e servizi Web.
Nowadays, the majority of ICT solutions for the management of information, communication, and knowledge - both for business and for the territory and the Public Administration - are based on Web technologies.
The goal of the course is to enable students to develop a Web-based application or service, using the correct architectural paradigms and the correct development methodologies.
The course aims at making students autonomous in the choice and usage of tools needed to develop Web applications and services.
- Oggetto:
Risultati dell'apprendimento attesi
Al termine dell'insegnamento si avranno le seguenti competenze:
a) Conoscenza e capacità di comprensione: conoscenza delle architetture, dei paradigmi, delle metodologie di programmazione, delle soluzioni tecnologiche per lo sviluppo di applicazioni e servizi Web.
b) Capacità di applicare conoscenza e comprensione: capacità di utilizzare tali conoscenze per realizzare applicazioni e servizi Web.
c) Autonomia di giudizio: capacità di valutare le tecnologie, i paradigmi e le metodologie più appropriate per lo sviluppo di applicazioni e servizi Web.
d) Abilità comunicative: capacità di comunicare e interagire efficacemente con team interdisciplinari di sviluppo Web.
e) Capacità di apprendimento: capacità di apprendere rapidamente ed efficacemente l'utilizzo di nuove metodologie e tecnologie emergenti nell'ambito dello sviluppo Web.
At the end of the course, students will have the following know-how:
a) Knowledge and understanding: knowledge of the architectures, paradigms, programming methodologies, technological solutions for developing Web-based applications and services.
b) Know-how to apply knowledge and understanding: ability to use such a knowledge to develop Web-based applications and services.
c) Autonomy in judgement: ability to evaluate the most suited technologies, paradigms, and methodologies to develop Web-based applications and services.
d) Communication skills: ability to communicate and effectively interact with interdisciplinart Web development teams.
e) Learning skills: ability to quickly learn the usage of new methodologies and technologies for web development.
- Oggetto:
Programma
Il programma dell'insegnamento si articola nei seguenti contenuti:
- Cos'è una applicazione Web: architetture, componenti, tecnologie
- Gestire la componente server-side: Object-oriented PHP:
- introduzione: classi, oggetti, costruttori, metodi, ereditarietà, classi anonime, ...
- interazione con il client: gestire HTTPrequest e HTTPresponse con PHP
- interazione con il Database: la libreria PDO
- gestione delle sessioni
- Gestire la componente client-side: JavaScript e jQuery
- L'interazione asincrona tra client e server: Ajax
- Trasformare un'app in un Web Service: costruire e invocare API REST con PHP
- Cenni su Node.js e sul framework Express
Per ogni argomento sarà dedicato spazio ad esercitazioni pratiche.
Ulteriori dettagli sono disponibili sulla pagina Moodle del corso.
The program of the course will develop the following topics:
- Web applications: architectures, components, technologies;
- Server-side management: Object-oriented PHP:
- -- introduction: classes, objects, constructors, methods, inheritance, anonymous classes, etc.
- -- interaction with the client: managing HTTPrequest and HTTPresponse with PHP
- -- interaction with the Database: the PDO library
- -- session management
- Client-side management: JavaScript and jQuery
- Asynchronous interaction between client and server: the Ajax technology
- Transforming apps into Web Services: building and invoking API REST with PHP
- A brief overview of Node.js and Express
For each topic, some time will be devoted to practical exercises.
Further information will be available on the Moodle page.
- Oggetto:
Modalità di insegnamento
L'insegnamento è organizzato in lezioni frontali affiancate da esercitazioni pratiche per circa un terzo delle ore complessive dell'insegnamento (quindi circa 18 ore su 54), nelle quali si potranno applicare i paradigmi architetturali nonché le metodologie e le tecniche di programmazione descritte nelle lezioni frontali.
The course is organized in frontal lessons, coupled with practice exercises, taking about one third of the overall amount of hours of the course (thus about 18 hours out of 54), in which students will be able to apply the architectural paradigms as well as the programming methodologies and techniques described during frontal lessons.
- Oggetto:
Modalità di verifica dell'apprendimento
L'esame finale rappresenta una valutazione sommativa e consiste in due prove:
- la prima prova è volta a verificare le conoscenze acquisite circa le architetture, i paradigmi, le soluzioni tecnologiche disponibili, le metodologie di programmazione per lo sviluppo di applicazioni e servizi Web, nonché le competenze necessarie per progettare e implementare tali applicazioni;
- la seconda prova è volta a valutare la capacità concreta di progettare e implementare, in modo appropriato ed efficace, applicazioni e servizi Web.
Entrambe le prove avranno la forma dell'interrogazione strutturata.
In base alle condizioni, la prima prova potrà essere un esame scritto o un colloquio orale.
La seconda prova sarà in ogni caso un colloquio orale, in preparazione del quale verrà chiesto di realizzare un progetto (un'applicazione Web/servizio Web) che rispetti i requisiti che verranno comunicati durante il corso e pubblicati online sulla pagina Moodle dell'insegnamento. Tale progetto verrà discusso con il docente durante il colloquio. La valutazione della discussione del progetto terrà conto delle scelte implementative e della capacità di spiegarle correttamente.
Entrambe le prove possono essere sostenute in lingua inglese.
La valutazione, sia della prima che della seconda prova, avverrà sulla base dell'appropriatezza, della completezza e dell'articolazione delle risposte fornite.
Per la versione da 6 cfu, sia la prima prova sia i requisiti del progetto da discutere nella seconda prova saranno ridotti a 2/3 rispetto alla versione da 9 cfu.
La valutazione complessiva sarà in trentesimi (30 punti), che verranno calcolati nel seguente modo:
(a) La valutazione della prima prova apporterà 15 punti e avrà peso 50%.
(b) La valutazione della seconda prova apporterà 15 punti e avrà peso 50%.
The final examination is a summative evaluation and consists in two tests:
- the first test aims at verifying the acquired knowledge concerning architectures, paradigms, available technological solutions, programming methodologies for developing Web-based applications and services, together with the necessary skills for the design and implementation such applications;
- the second test aims at verifying the concrete ability to design and develop, in an appropriate and effective way, Web-based applications and services.
Both tests are in the form of a structured interview.
Depending on external conditions, the first test can be a written examination, or an oral interview.
The second test, in any case, wil be an oral interview; to prepare it students will be asked to develop a project (a Web-based application/service) satisfying the requirements that will be provided during the course and published online (on the course Web page). Such a project will be discussed with the teacher during the oral examination. The evaluation of the project discussion will take into account implementation choices and the ability to correctly explain them.
Both tests can be taken in English.
The evaluation of both the first and the second test will be based on the pertinence, completeness, and structure of students' answers.
For the 6 cfu version of the exam, both the first test and the project requirements to be discussed during the second test will be reduced to 2/3 with respect to the 9 cfu version.
The overall evaluation will be expressed in a standard 1-30 scale and will be calculated in the following way:
(a) The evaluation of the first test will contribute with 15 points, and will represent the 50% of the final score.
(b) The evaluation of the second test will contribute with 15 points, and will represent the 50% of the final score.
Testi consigliati e bibliografia
- Oggetto:
- Libro
- Titolo:
- Web Programming Step by Step, 2nd edition
- Anno pubblicazione:
- 2013
- Editore:
- Lulu
- Autore:
- M. Stepp, J. Miller, V. Kirst
- Note testo:
- http://www.webstepbook.com/
- Obbligatorio:
- No
- Oggetto:
Oltre alle slide del corso e ai case studies che saranno pubblicate online sulla pagina Moodle del corso, si consiglia l'approfondimento delle tematiche trattate attraverso i seguenti testi:
- R. Nixon, Learning PHP, MySQL & JavaScript. A Step-by-Step Guide to Creating Dynamic Websites (6th edition), O’Reilly, 2021.
- E. Zimuel, Sviluppare in PHP 7 (II edizione), Tecniche Nuove, 2019. Il testo può essere acquistato online all'indirizzo https://www.sviluppareinphp7.it/; sono disponibili alcune slide relative alla I edizione (2017): https://www.zimuel.it/slides/unito2017#/
Inoltre, possono essere utili il manuale ufficiale di PHP (https://www.php.net/manual/en/) e alcuni tutorial online gratuti: "AJAX CRUD Tutorial Using jQuery, JSON and PHP - Step by Step Guide!" (https://www.codeofaninja.com/2015/06/php-crud-with-ajax-and-oop.html); "How To Create A Simple REST API in PHP? Step By Step Guide!" (https://www.codeofaninja.com/2017/02/create-simple-rest-api-in-php.html), Laravel API Tutorial: How to Build and Test a RESTful API (https://www.toptal.com/laravel/restful-laravel-api-tutorial).
Ulteriori indicazioni bibliografiche puntuali saranno contenute nelle slide delle lezioni.
Per i prerequisiti si consigliano i seguenti riferimenti:
- L. Console, M. Ribaudo, U. Avalle, F. Carmagnola, F. Cena. Introduzione all’informatica - quarta edizione, Utet, 2010
- P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone. Database Systems - Concepts, Languages and Architectures. McGraw-Hill, 1999
- https://www.w3schools.com/html/
- https://www.w3schools.com/css/
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
- https://www.w3schools.com/sql/
- V. Della Mea, L. Di Gaspero, I. Scagnetto, Programmazione Web Lato Server (seconda edizione aggiornata), Apogeo, 2011
- What is programming: https://www.pluralsight.com/courses/what-is-programming
- Learning to Program, Part 1: Getting Started: https://www.pluralsight.com/courses/learning-programming-javascript
Besides the slides and the case studies which will be published online on the Moodle page, the following readings are suggested in order to gain further insight of the course topics:
- R. Nixon, Learning PHP, MySQL & JavaScript. A Step-by-Step Guide to Creating Dynamic Websites (6th edition), O’Reilly, 2021;
- E. Zimuel, Sviluppare in PHP 7 (II edizione), Tecniche Nuove, 2019. The book can be purchased online at the following address: https://www.sviluppareinphp7.it/; some slides related to the first edition (2017) are available: www.zimuel.it/slides/unito2017#/
Moreover, some free online tutorials can be useful: "AJAX CRUD Tutorial Using jQuery, JSON and PHP - Step by Step Guide!" (https://www.codeofaninja.com/2015/06/php-crud-with-ajax-and-oop.html); "How To Create A Simple REST API in PHP? Step By Step Guide!" (https://www.codeofaninja.com/2017/02/create-simple-rest-api-in-php.html), Laravel API Tutorial: How to Build and Test a RESTful API (https://www.toptal.com/laravel/restful-laravel-api-tutorial).
Further specific references will be available in the slides.
For pre-requirements the following references are suggested:
- L. Console, M. Ribaudo, U. Avalle, F. Carmagnola, F. Cena. Introduzione all’informatica - quarta edizione, Utet, 2010
- P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone. Database Systems - Concepts, Languages and Architectures. McGraw-Hill, 1999
- https://www.w3schools.com/html/
- https://www.w3schools.com/css/
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
- https://www.w3schools.com/sql/
- V. Della Mea, L. Di Gaspero, I. Scagnetto, Programmazione Web Lato Server (seconda edizione aggiornata), Apogeo, 2011
- What is programming: https://www.pluralsight.com/courses/what-is-programming
- Learning to Program, Part 1: Getting Started: https://www.pluralsight.com/courses/learning-programming-javascript
- Registrazione
- Aperta
- Oggetto: