Applicazioni Web I (a.a. 2019/20) - CONCLUSO
Il corso è CONCLUSO e le informazioni di questa pagina NON sono più aggiornate e NON sono valide per il corrente anno accademico. Sono online al solo fine di consultazione, per esempio per i temi d’esame passati.
(01UDFOV) Applicazioni Web I (a.a. 2019/20)
Insegnanti: Prof. Enrico Masala, Prof. Luigi De Russis
Avvisi
(Consultare sempre anche gli avvisi nel portale della didattica. Le email e gli SMS arriveranno tramite tale strumento)
Laboratori: 2 squadre il VENERDI’ (NON giovedi’) ore 8:30-10:00 (squadra 1, cognome che inizia da A a L incluso) e 10:00-11:30 (squadra 2, cognome che inizia da M a Z). Si usera’ il software Zoom (installarlo preventivamente se possibile). I link per il collegamento saranno pubblicati a breve. Informazioni di maggior dettaglio nell’email inviata a tutti gli studenti iscritti.
Sessione interattiva di Domande & Risposte (Q&A) tramite Virtual Classroom (attendere il link che arriva via email o sull’app del Politecnico): tutti i giovedi’ ore 10:00-11:30. Prima di tale momento possibilmente ascoltare tutti i video già pubblicati fino a quel momento.
Esame
Prove d’esame
- Esame #1: noleggio auto (scadenza: 28 giugno 2020 ore 23:59)
- Video Chat per chiarimenti: venerdi’ 12 giugno 2020 ore 9:00-11:00
- Canale Slack per discussioni e domande: #esame1-noleggio-auto
- Documento online con le risposte poste sul canale Slack (inglese, e italiano in fondo)
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
- Esame #2: Kanban board (scadenza: 12 luglio 2020 ore 23:59)
- Video Chat per chiarimenti: martedi’ 30 giugno 2020 ore 9:00-11:00
- Canale Slack per discussioni e domande: #esame2-kanban
- Documento online con le risposte poste sul canale Slack (inglese, e italiano in fondo)
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
- Esame #3: Scheduling (scadenza: 9 settembre 2020 ore 23:59)
- Video Chat per chiarimenti: mercoledi’ 26 agosto 2020 ore 9:00
- Canale Slack per discussioni e domande: #esame3-scheduling
- Documento online con le risposte poste sul canale Slack (inglese, e italiano in fondo)
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
- Esame #4: Pizza (scadenza: 20 gennaio 2021 ore 23:59)
- Video Chat per chiarimenti: venerdi’ 8 gennaio 2021 ore 9:30
- Canale Slack per discussioni e domande: #esame4-pizza
- Documento online con le risposte
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
- Informazioni aggiuntive:
Regole d’esame
NB: Le regole sono scritte in inglese per evitare errori di allineamento tra i corsi italiano e inglese. PER EVENTUALI DUBBI sull’interpretazione del testo inglese, chiedere al docente in una delle sessioni interattive (es. videochat).
The exam of Web Applications I (WA1), due to the COVID-19 emergency, will take place from remote as described in the following.
The exam consists in a web application project to be developed according to the specifications that will be published 20 days in advance with respect to each official exam date (“data appello”), plus an oral discussion of such project. For each official date a new assignment, different from the previous one, will have to be developed. The assignment is valid ONLY for the official exam date to which it is explicitly connected.
The web application project must be developed by each student INDIVIDUALLY. During the oral exam each student should be able to prove that he/she was able to develop the project in full autonomy by showing complete and full knowledge of every part of his/her project solution.
Before the deadline (typically, the official exam date), the final version of the project will have to be submitted according to the provided technical instructions.
If instructions are not carefully followed, for instance if the project cannot be run and tested as is by the teacher with the standard configuration (as per the technical instructions), the exam will be considered as failed.
A few days after publishing the assignment the teachers will be available in a video-chat to discuss potential doubts about the assignment (unclearly or ambiguously expressed requirements etc.). Any interested student will be able to participate in the question-answer session, or to ask questions over Slack.
The submission deadline for the project is at 23:59 of the day before the official exam date.
For submitting the exam, it is mandatory to enroll in the exam booking (“prenotazione esami”). The students admitted to the exam will be those that are correctly enrolled AND have turned in the project before the deadline. There will be no penalty for students who enroll but do not submit the project (they will be marked as “absent”).
After the submission deadline, the teachers will evaluate the submitted solutions and provide a score for each one of them. Depending on the number of submissions, such process might take some days. Also, projects which do not meet minimum criteria will be evaluated as insufficient, with consequent failure of the exam, without the possibility to access the oral exam. Minimum criteria will be specified in the exam text.
The evaluation criteria for the submitted project will be: functional completeness, absence of unhandled errors, client-server organization, component architecture according to the React guidelines, clarity and organization of the code.
Then, a schedule will be published for the oral exam. Each student deemed sufficient for the project part will be allocated to a time slot, during which he/she will be remotely connected with the teacher (with some other students as witnesses as required by the official examination rules by the Politecnico). The student will have to show some form of identification (ID card or passport, etc.) before the discussion, and he/she will be alone in front of the PC with the webcam turned on. The aim of the oral exam is to ensure that each student developed the web application by him/herself, and to evaluate how much the student can explain the exact behaviour of the code. The source code will be opened by on the teacher PC which will share the screen with the student.
Therefore, during the oral exam the student must be able to explain everything about the project that is asked by the teacher. This includes, but is not limited to, the reasons behind the architectural choices for his/her own application, the details about how any specific fragment of code works, why it was implemented in that way, and what alternatives could have been used, etc.
The evaluation criteria for the oral will be: (theoretical and practical) knowledge of the project design, (theoretical and practical) knowledge of the project code base, readiness and clarity in the replies.
There will be 24 marks assigned to the project, and 8 marks assigned to the oral discussion. The minimum project score to be admitted to the oral discussion is 12. The oral is mandatory (students can refuse to take the oral, of course, and the score will be nullified). The final score after the oral can not be refused.
The final mark will be the sum of the scores for the submitted project and the score assigned at the end of the oral exam. If the exam results in a failure, even just for the oral part, the score for the project will NOT be carried over to the next official exam dates: the new project corresponding to the new exam date will have to be developed.
Since the exam is essentially the design of an application with rather generic specifications, it is not acceptable that the submitted solutions are excessively similar among them, which would indicate that the solution has not been developed autonomously. Similarity checks will be run after the deadline. In this case the exam will be considered as failed and the students notified about the situation.
RECOMMENDATIONS:
Each student, during the oral exam, must be able to immediately find and carefully explain any part of the code in the project that implements a given feature asked by the teacher. Therefore, it is strongly recommended that the student carefully rehearse and review the code shortly before the oral exam. Situations in which the student claims not to be able to “remember” things (where the code is, in which file, why it works that way, etc.) due to any reason (for instance “it has been a few days since I developed it”, or similar claims) will lead to immediate exam failure.
As in any programming assignment, during the development phase, it is possible to search online for suggestions and examples about how to solve specific programming issues, which can be incorporated in the final solution. However, regardless of the source, the student must be able to explain how the code submitted as the final solution works, regardless of the source (online examples, templates, etc.). Verbatim copy of portions of code without the student being able to explain how it works will be subject to strong penalty in the final mark if found during oral examination.
In the solution, it is recommended to employ all the good practices and good programming techniques explained during the lectures. Strong deviations from such patterns will have to be duly justified during the oral exam and, if not adequately justified, will cause a reduction of the final mark, and potentially also a failed exam.
Regarding the use of external libraries/templates/modules: as a general rule, the use of the techniques shown during the classes is preferred. The use of external modules and libraries for non-essential functions is allowed: examples are date/time handling, presentation aspects, predefined components (e.g. calendars), and similar items.
If React requires the use of certain programming patterns, those must be followed. As an example, it is NOT allowed to use JQuery or JS directly to modify DOM content within the browser. It is NOT allowed to use frameworks different from React (Vue, Angular, etc.). It is not allowed to use server-side technologies different from those shown in the classes: express, with SQLite to implement db access, and the React internal web server must be used. Also, remember that the solution MUST be submitted in a way that can be readily tested by the teacher with the commands specified in the technical instructions. Any solution not running in this way will be considered as failed.
Orario
NB: Se in presenza fisica verificare anche l’orario sul sito ufficiale del Politecnico qui
Giorno | Orario | Luogo | Tipo | Note |
---|---|---|---|---|
Venerdi’ | 08:30-10:00 | online (via Zoom) | Lab (squadra 1) | Inizia la seconda settimana |
Venerdi’ | 10:00-11:30 | online (via Zoom) | Lab (squadra 2) | Inizia la seconda settimana |
Venerdi’ | 08:30-10:00 | online | Aula 7i | lezioni preregistrate, link sotto |
Venerdi’ | 10:00-11:30 | online | Aula 7i | lezioni preregistrate, link sotto |
Giovedi’ | 10:00-11:30 | online (via Virtual Classroom) | Q&A | salvo indicazioni contrarie. Attendere il link per l’accesso (via email o su App PoliTO) |
Programma
Tutte le videolezioni: youtube playlist, tutto il materiale, incluse le Slides e i testi dei laboratori: github.com/polito-WA1-2020 (sito unico italiano/inglese). Insegnanti: Enrico Masala (EM), Luigi De Russis (LDR)
Data | Ora | Tipo | Argomento | Doc. | Luogo | Risorsa |
---|---|---|---|---|---|---|
— | — | Lez | Introduzione al corso | EM | - | Video |
— | — | Lez | Introduzione a Javascript (parte 1) | EM | - | Video |
— | — | Es | Esercizi di Javascript (parte 1) (files degli esercizi) | EM | - | Video |
venerdi’ 13 mar 2020 | 10:00-11:30 | Videochat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video VC in portale didattica* |
— | — | Lez | Architettura del web (parte 1) | EM | - | Video |
— | — | Lez | Architettura del web (parte 2) | EM | - | Video |
— | — | Lez | Introduzione a Javascript (parte 2a): oggetti, funzioni | EM | - | Video |
— | — | Lez | Introduzione a Javascript (parte 2b): callbacks, dates | EM | - | Video |
giovedi’ 19 mar 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video VC in portale didattica* |
venerdi’ 20 marzo 2020 | 8:30-10:00 | Lab 1 | Laboratorio (testo), squadra 1 (A-L) (soluzione) | EM | - | Link: https://zoom.us/j/386847425 |
venerdi’ 20 marzo 2020 | 10:00-11:30 | Lab 1 | Laboratorio (testo), squadra 2 (M-Z) (soluzione) | EM | - | Link https://zoom.us/j/691220240 |
— | — | Lez | Introduzione rapida all’HTML | EM | - | Video |
— | — | Lez | CSS parte 1 | EM | - | Video |
— | — | Lez | CSS parte 2 | EM | - | Video |
giovedi’ 26 mar 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video VC in portale didattica* |
venerdi’ 20 marzo 2020 | 8:30-10:00 | Lab 2 | Laboratorio (testo), squadra 1 (A-L) (soluzione) | LDR | - | Link https://zoom.us/j/122152133 |
venerdi’ 20 marzo 2020 | 10:00-11:30 | Lab 2 | Laboratorio (testo), squadra 2 (M-Z) (soluzione) | EM | - | Link https://zoom.us/j/134558955 |
— | — | Lez | JS nel browser | EM | - | Video |
— | — | Lez | JS nel browser: esempi | EM | - | Video |
— | — | Lez | Programmazione JS asincrona | EM | - | Video |
giovedi’ 2 apr 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video |
venerdi’ 3 apr 2020 | 8:30-10:00 | Lab 3 | Laboratorio (testo), squadra 1 (A-L) (soluzione) | LDR | - | Link Zoom |
venerdi’ 3 apr 2020 | 10:00-11:30 | Lab 3 | Laboratorio (testo), squadra 2 (M-Z) (soluzione) | EM | - | Link Zoom |
— | — | Lez | Programmazione funzionale in JS | EM | - | Video |
— | — | Lez | Prototipi, classi, moduli in JS (parte 1) | EM | - | Video |
— | — | Lez | Prototipi, classi, moduli in JS (parte 2) | EM | - | Video |
— | — | Lez | this keyword in JS | EM | - | Video |
— | — | Lez | HTML5 forms | EM | - | Video |
— | — | — | Sospensione di Pasqua (no lezioni o lab il 9 e 10 aprile 2020) | - | - | — |
giovedi’ 16 apr 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video |
venerdi’ 17 apr 2020 | 8:30-10:00 | Lab 4 | Laboratorio (testo), squadra 1 (A-L) (soluzione) | LDR | - | Link Zoom |
venerdi’ 17 apr 2020 | 10:00-11:30 | Lab 4 | Laboratorio (testo), squadra 2 (M-Z) (soluzione) | EM | - | Link Zoom |
— | — | Lez | HTTP | EM | Video | |
— | — | Lez | ExpressJS web framework | EM | Video | |
— | — | Lez | REST API | EM | Video | |
— | — | Lez | Esempio app client-server (parte lato server) (codice) | EM | Video | |
giovedi’ 23 apr 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video |
venerdi’ 24 apr 2020 | 8:30-10:00 | Lab 5 | Laboratorio (testo), squadra 1 (A-L) (soluzione) | LDR | - | Link Zoom |
venerdi’ 24 apr 2020 | 10:00-11:30 | Lab 5 | Laboratorio (testo), squadra 2 (M-Z) (soluzione) | EM | - | Link Zoom |
— | — | Lez | Fetch API | EM | - | Video |
— | — | Lez | Esempio app client-server (parte lato client) (codice della lezione) (codice finale) | EM | - | Video |
— | — | Lez | Introduzione a React (esempio-manuale) (esempio-standard) | EM | - | Video |
NO Videochat (lab anticipato causa festa 1 maggio) | ||||||
giovedi’ 30 apr 2020 | 8:30-10:00 | Lab 6 | Laboratorio (testo), squadra 1 (A-L) (soluzione) | LDR | - | Link Zoom |
giovedi’ 30 apr 2020 | 10:00-11:30 | Lab 6 | Laboratorio (testo), squadra 2 (M-Z) (soluzione) | EM | - | Link Zoom |
— | — | Lez | React Elements, JSX, Components (parte 1) | EM | - | Video |
— | — | Lez | React Elements, JSX, Components (parte 2) | EM | - | Video |
— | — | Lez | Esempio React: creazione componenti (codice sorgente visto nella lezione) | EM | - | Video |
giovedi’ 7 mag 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video |
venerdi’ 8 mag 2020 | 8:30-10:00 | Lab 7 | Laboratorio (testo), squadra 1 (A-L) (soluzione) | LDR | - | Link Zoom |
venerdi’ 8 mag 2020 | 10:00-11:30 | Lab 7 | Laboratorio (testo), squadra 2 (M-Z) (soluzione) | EM | - | Link Zoom |
— | — | Lez | React Context, Livecycle and Forms (parte 1) | EM | - | Video |
— | — | Lez | React Context, Livecycle and Forms (parte 2) | EM | - | Video |
— | — | Lez | Continuazione esempio React: forms (Codice sorgente visto nella lezione) | EM | - | Video |
giovedi’ 14 mag 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video |
venerdi’ 15 mag 2020 | 8:30-10:00 | Lab 8 | Laboratorio (testo), squadra 1 (A-L) (soluzioni 1 e 2) | LDR | - | Link Zoom |
venerdi’ 15 mag 2020 | 10:00-11:30 | Lab 8 | Laboratorio (testo), squadra 2 (M-Z) (soluzioni 1 e 2) | EM | - | Link Zoom |
— | — | Lez | Interazione client-server in React | EM | - | Video |
— | — | Lez | CORS: Cross-origin resource sharing | EM | - | Video |
Esempi | Esempi uso doppio server ed esempio react-scores con caricamento da server REST | n/a | ||||
giovedi’ 21 mag 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video |
venerdi’ 22 mag 2020 | 8:30-10:00 | Lab 9 | Laboratorio (testo), squadra 1 (A-L) (soluzione) | EM | - | Link Zoom |
venerdi’ 22 mag 2020 | 10:00-11:30 | Lab 9 | Laboratorio (testo), squadra 2 (M-Z) (soluzione) | EM | - | Link Zoom |
— | — | Lez | React Router | EM | - | Video |
— | — | Lez | JWT | EM | - | Video |
Esempi | Esempi react router e react-scores con JWT | n/a | ||||
giovedi’ 28 mag 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni. Include una spiegazione dell’esempio react-scores con JWT | EM | - | Video |
venerdi’ 29 mag 2020 | 8:30-10:00 | Lab 10 | Laboratorio (testo), squadra 1 (A-L) | LDR | - | Link Zoom |
venerdi’ 29 mag 2020 | 10:00-11:30 | Lab 10 | Laboratorio (testo), squadra 2 (M-Z) | EM | - | Link Zoom |
— | — | Lez | Hooks | EM | - | Video |
giovedi’ 4 giu 2020 | 10:00-11:30 | Video chat | Discussione, domande e risposte (Q&A) riguardo le precedenti lezioni | EM | - | Video |
venerdi’ 5 giu 2020 | 8:30-10:00 | Lab 11 | Laboratorio (testo), squadra 1 (A-L) | LDR | - | Link Zoom |
venerdi’ 5 giu 2020 | 10:00-11:30 | Lab 11 | Laboratorio (testo), squadra 2 (M-Z) | EM | - | Link Zoom |
— | — | Lez | Esempi | EM | - | Video |
9 giugno 2020 | — | — | Pubblicazione del progetto da sviluppare per l’esame (solo per l’appello del 29 giugno 2020) | v. sopra | ||
NO laboratorio, NO videochat | ||||||
venerdi’ 12 giu 2020 | 9:00-11:00 | Video chat | Domande e risposte (Q&A) riguardo il progetto per l’esame primo appello (noleggio auto) | EM | - | Video |
martedi’ 30 giu 2020 | 9:00-11:00 | Video chat | Domande e risposte (Q&A) riguardo il progetto per l’esame secondo appello (kanban board) | EM | - | Video |
mercoledi’ 26 ago 2020 | 9:00-10:00 | Video chat | Domande e risposte (Q&A) riguardo il progetto per l’esame terzo appello (scheduling) | EM | - | Video VC in portale didattica |
venerdi’ 8 gennaio 2021 | 9:30-10:30 | Video chat | Domande e risposte (Q&A) riguardo il progetto per l’esame quarto appello (pizza) | EM | - | Video VC in portale didattica |
*Video VC in portale didattica: questi video (delle video chat) sono stati rimossi da YouTube su segnalazione di studenti che non desideravano che apparissero i loro nomi (visibili sulla chat) in video accessibili pubblicamente. Resta quindi solamente la possibilità di accedere alla registrazione tramite il meccanismo della Virtual Classroom, nel portale della didattica, sulla pagina del corso, per i soli iscritti. I video successivi non hanno problemi in quanto sono stati realizzati tramite doppio schermo e non includono mai la chat.
News
2021-01-13: Pubblicata versione finale del tema d’esame per il quarto appello.
2021-01-08: Pubblicato il video della videochat Q&A per il quarto appello (sul portale della didattica) e il documento con domande e risposte.
2020-12-29: Pubblicato il tema d’esame per il quarto appello.
2020-08-31: Corretto errore di battitura nel tema d’esame per il terzo appello: si può DISDIRE (non prenotare) l’appuntamento prenotato.
2020-08-31: Pubblicata versione finale del tema d’esame per il terzo appello.
2020-08-26: Pubblicato il video della videochat Q&A per il terzo appello (sul portale della didattica).
2020-08-24: Aggiornato il calendario con la data della sessione Q&A per il terzo appello.
2020-06-30: Pubblicate la videochat e le risposte relative al secondo appello, e la versione finale del tema d’esame.
2020-06-23: Pubblicato il tema d’esame per il secondo appello
2020-06-13: Pubblicata versione finale del tema d’esame per il primo appello
2020-06-11: Pubblicate le FAQ complete per l’esame in generale e per il primo appello
2020-06-09: Pubblicato il tema d’esame per il primo appello
2020-06-04: Aggiunto il link alla videochat 11, ultima lezione della teoria (Hooks)
2020-05-28: Aggiornato il calendario fino a fine corso. Aggiunti slides ed esempi della settimana. Pubblicato il giorno della chat di domande risposte relative al progetto per l’esame primo appello
2020-05-23: Aggiunti nuovi esempi su github (doppio server e react-scores con caricamento da server)
2020-05-19: Aggiunta nuova lezione, link a soluzione e prossimi laboratori
2020-05-16: Pubblicate le regole d’esame (v. inizio pagina)
2020-05-12: Aggiornato i link per le lezioni della settimana e i laboratori
2020-05-06: Aggiornato il calendario con prossime lezioni e laboratori
2020-04-28: Rimosso i primi 3 video della videochat da Youtube. I contenuti restano comunque accessibili tramite portale della didattica. Nuovo video introduzione a React (non necessario per lab 6)
2020-04-27: Aggiunto link a nuova lezione ed esempio, testo e link per il lab 6.
2020-04-22: Aggiunto link a video di esempio pratico applicazione client-server (parte lato server)
2020-04-21: Aggiornato i link alle lezioni, soluzioni dei lab, link per lab 5.
2020-04-15: Link zoom per lab 4 disponibili, aggiornamento calendario fino a fine mese
2020-04-11: aggiunta la lezione su prototipi, classi e moduli
2020-04-09: aggiunte le 3 lezioni su JS e HTML5 con relativo materiale e video
2020-04-05: aggiornato il link di esempi di JS nel browser
2020-04-01: Lezione JS su programmazione asincrona ora online (non necessaria per il lab 3). Lab 3 pubblicato.
2020-03-31: Lezioni JS nel browser disponibili (contenuti da conoscere per il lab 3).
2020-03-25: Soluzioni lab 1 online. Link zoom lab 2 disponibile. Testo lab2 disponibile.
Pagina ufficiale del Politecnico con la scheda del corso