Applicazioni Web I (A-L) a.a. 2020/21

##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. 2020/21)

Insegnanti: Prof. Enrico Masala, Prof. Antonio Servetti

(Link a.a. precedenti: 2019/20)

Avvisi

Laboratori: 2 squadre il LUNEDI’ ore 10:00-11:30 (online) e 11:30-13:00 (in presenza se possibile, aula R1). E’ possibile che si debba usare il software Zoom (installarlo preventivamente se possibile). I link per il collegamento saranno pubblicati prima delle attivita’. Informazioni di maggior dettaglio nell’email inviata a tutti gli studenti iscritti.

NB: Lunedi’ 15 marzo 2021 il lab e’ SOLO ONLINE cosi’ come da disposizioni della Regione Piemonte riguardo le universita’.

Comunicazioni

Tutte le ore di lezione verranno svolte in maniera sincrona su Zoom o VirtualClassroom, così come il turno di laboratorio online. Questa sezione riporta gli altri strumenti asincroni e le occasioni di comunicazione e dialogo, con i docenti e tra studenti.

Per le comunicazioni durante il corso, si userà Slack (*) come strumento principale. Tutte le comunicazioni, siano esse avvisi, link, novità, ecc. avverranno nel workspace dedicato al corso su Slack.

Tutti gli studenti devono, quindi, essere presenti nel workspace Slack del corso, chiamato “AW1 2021 (A-L)”. Per registrarsi al workspace, è necessario usare l’indirizzo mail @studenti.polito.it, mentre è possibile scegliere a piacere un nickname da utilizzare. Il link per la registrazione è https://join.slack.com/t/aw1-2021-a-l/signup.

Gli strumenti del Portale della Didattica saranno usati solamente per comunicazioni realmente importanti e urgenti da veicolare per es. tramite SMS, o a carattere permanente che richiedano un’email (es. inizio corso).

Tramite Slack, i docenti pubblicheranno novità, aggiornamenti, ecc. mentre gli studenti potranno usarlo sia per comunicare tra di loro sia con i docenti, anche fuori dall’orario del corso. Per esempio, gli studenti possono fare domande visibili a tutti i loro colleghi iscritti al corso o privatamente ai docenti, ricevendo una risposta da almeno un docente (e in tempi ragionevoli). Useremo Slack, inoltre, anche come chat durante le lezioni, sfruttando un canale dedicato e attivo durante e nei momenti intorno alle ore di lezione.

(*) Per chi non sa cosa sia Slack, dare un’occhiata a questo tutorial ufficiale. Slack è disponibile sul web, come applicazione desktop e come applicazione mobile. Le app di Slack si possono scaricare a partire da questo link: https://slack.com/downloads/.

Esame

Prove d’esame

Regole d’esame

Questa sezione contiene i testi dei progetti d’esame e le relative scadenze per la consegna. Inoltre, riporta le regole d’esame. Come noterete, le regole d’esame sono in inglese: questo per evitare problemi di allineamento tra i vari corsi italiano e inglese di Applicazioni Web I.

The exam of Web Applications I (WA1), due to the COVID-19 pandemic, will take place as described in the following, typically from remote.

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 (e.g., unclearly or ambiguously expressed requirements). 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.

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 computer 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’s computer which will share the screen with the student. In the eventuality that the oral exam will be done in-person, we will follow the same procedure.

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 6 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, the score assigned at the end of the oral exam, and the results from the BigLabs (if submitted). 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. Please, also notice that the score of the BigLabs will last for an entire year (i.e., 4 exam sessions, until the beginning of a new edition of the course).

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 e’ NECESSARIO PRENOTARSI con l’apposita procedura del portale della didattica. Orario anche sul sito ufficiale del Politecnico qui. NB: Le prime 2 settimane sara’ TUTTO ONLINE, solo lezione.

Giorno Orario Luogo Tipo Note
Lunedi’ 10:00-11:30 online Lab Inizia la terza settimana
Lunedi’ 11:30-13:00 in presenza se possibile (verificare eventuali ordinanze o regolamenti del Politecnico) Lab Inizia la terza settimana
Giovedi 8:30-10:00 online (anche registrato) Lez lezioni in diretta (registrate)
Giovedi’ 10:00-11:30 online (anche registrato) Lez lezioni in diretta (registrate)

Programma

Tutte le videolezioni: youtube playlist, tutto il materiale, incluse le Slides e i testi dei laboratori: github.com/polito-WA1-AW1-2021 (sito unico italiano/inglese). Insegnanti: Enrico Masala (EM), Antonio Servetti (AS)

Data Ora Tipo Argomento Doc. Luogo Video
lunedi’ 1 marzo 2021 10:00 Lez Introduzione al corso EM Online Video
lunedi’ 1 marzo 2021 11:30 Lez Introduzione a Javascript, Array EM Online Video
giovedi’ 4 marzo 2021 8:30 Lez JS: oggetti e funzioni EM Online Video
giovedi’ 4 marzo 2021 10:00 Lez Esercizi su JS (soluzioni), date EM Online Video
lunedi’ 8 marzo 2021 10:00 Lez JS callback, functional, db, promises, async EM Online Video
lunedi’ 8 marzo 2021 11:30 Lez JS callback, functional, db, promises, async EM Online Video
giovedi’ 11 marzo 2021 8:30 Lez JS: esempi prog. funzionale, async, promises, db (esempi) EM Online Video
giovedi’ 11 marzo 2021 10:00 Lez Web architecture EM Online Video
lunedi’ 15 marzo 2021 10:00 Lab Lab1: programmazione JS, DB (soluzione) EM Online  
lunedi’ 15 marzo 2021 11:30 Lab Lab1: programmazione JS, DB (soluzione) AS Online  
giovedi’ 18 marzo 2021 8:30 Lez HTML5, intro a CSS (esempi) EM Online Video
giovedi’ 18 marzo 2021 10:00 Lez CSS, responsive layout, Bootstrap EM Online Video
lunedi’ 22 marzo 2021 10:00 Lab Lab2: HTML e CSS (soluzione) EM Online  
lunedi’ 22 marzo 2021 11:30 Lab Lab2: HTML e CSS (soluzione) AS Online  
giovedi’ 25 marzo 2021 8:30 Lez JS nel browser. (esempi) EM Online Video
giovedi’ 25 marzo 2021 10:00 Lez JS nel browser. JS “this” (video2 da vedere offline) EM Online Video1 Video2
lunedi’ 29 marzo 2021 10:00 Lab Lab3: JS nel browser (soluzione) EM Online  
lunedi’ 29 marzo 2021 11:30 Lab Lab3: JS nel browser (soluzione) AS Online  
—— —— —— VACANZE DI PASQUA —— —— ——
giovedi’ 8 aprile 2021 8:30 Lez Introduzione a React (esempi) EM Online Video
giovedi’ 8 aprile 2021 10:00 Lez React: Element e JSX EM Online Video
lunedi’ 12 aprile 2021 10:00 Lab Biglab1 - parte1 (istruzioni generali di consegna) scadenza 9mag2021 EM Online  
lunedi’ 12 aprile 2021 11:30 Lab Biglab1 - parte1 (istruzioni generali di consegna) scadenza 9mag2021 AS Online  
giovedi’ 15 aprile 2021 8:30 Lez React: hooks e stato EM Online Video
giovedi’ 15 aprile 2021 10:00 Lez React useState (esempio svolto a lezione) EM Online Video
lunedi’ 19 aprile 2021 10:00 Lab Biglab1 - parte2 (istruzioni generali di consegna) scadenza 9mag2021 EM Online  
lunedi’ 19 aprile 2021 11:30 Lab Biglab1 - parte2 (istruzioni generali di consegna) scadenza 9mag2021 AS Aula R1 In presenza
giovedi’ 22 aprile 2021 8:30 Lez React: forms (esempio) EM Online Video
giovedi’ 22 aprile 2021 10:00 Lez React: context (esempio) (esempio validazione form) EM Online Video
lunedi’ 26 aprile 2021 10:00 Lab Biglab1 - parte3 EM Online  
lunedi’ 26 aprile 2021 11:30 Lab Biglab1 - parte3 AS Aula R1 In presenza
giovedi’ 29 aprile 2021 8:30 Lez React Router (esempio lezione) (esempio finale) EM Online Video
giovedi’ 29 aprile 2021 10:00 Lez JS: classi e moduli EM Online Video
lunedi’ 3 maggio 2021 10:00 Lab Biglab1 - parte4 EM Online  
lunedi’ 3 maggio 2021 11:30 Lab Biglab1 - parte4 AS Aula R1 In presenza
giovedi’ 6 maggio 2021 8:30 Lez Server: Express EM Online Video
giovedi’ 6 maggio 2021 10:00 Lez API (esempio lezione) (esempio finale) EM Online Video
9 maggio 2021 23:59 —- SCADENZA CONSEGNA BigLab1(istruzioni generali di consegna) (SOLUZIONE) —- —- RISULTATI
lunedi’ 10 maggio 2021 10:00 Lab Biglab2 - parte1 (istruzioni generali di consegna) scadenza 6giu2021 EM Online  
lunedi’ 10 maggio 2021 11:30 Lab Biglab2 - parte1 (istruzioni generali di consegna) scadenza 6giu2021 AS Aula R1 In presenza
giovedi’ 13 maggio 2021 8:30 Lez Fetch, Interazione client-server con React EM Online Video
giovedi’ 13 maggio 2021 10:00 Lez Lifecycle dei componenti, useEffect EM Online Video
lunedi’ 17 maggio 2021 10:00 Lab Biglab2 - parte2 EM Online  
lunedi’ 17 maggio 2021 11:30 Lab Biglab2 - parte2 AS Aula R1 In presenza
giovedi’ 20 maggio 2021 8:30 Lez useEffect e gestione stato applicazione EM Online Video
giovedi’ 20 maggio 2021 10:00 Lez Esempio react-scores con useEffect (codice sviluppato a lezione ) EM Online Video
lunedi’ 24 maggio 2021 10:00 Lab Biglab2 - parte3 EM Online  
lunedi’ 24 maggio 2021 11:30 Lab Biglab2 - parte3 AS Aula R1 In presenza
giovedi’ 27 maggio 2021 8:30 Lez Autenticazione (Passport.js) EM Online Video
giovedi’ 27 maggio 2021 10:00 Lez Esercizio sull’autenticazione (codice sviluppato a lezione) (versione finale: client e server) EM Online Video
lunedi’ 31 maggio 2021 10:00 Lab Biglab2 - parte4 EM Online  
lunedi’ 31 maggio 2021 11:30 Lab Biglab2 - parte4 AS Aula R1 In presenza
giovedi’ 3 giugno 2021 8:30   (No lezione)      
giovedi’ 3 giugno 2021 10:00 Sem Seminario: Consoft (confermato) in collaborazione con gli altri corsi AW1 EM Online  
6 giugno 2021 23:59 —- SCADENZA CONSEGNA BigLab2(istruzioni generali di consegna) (SOLUZIONE) —- —- RISULTATI
lunedi’ 7 giugno 2021 10:00 Lab Deploy di app React+Express su cloud (Heroku) EM Online  
lunedi’ 7 giugno 2021 11:30 Lab Deploy di app React+Express su cloud (Heroku) AS Online  
giovedi’ 10 giugno 2021 8:30   (No lezione)      
giovedi’ 10 giugno 2021 10:00   Discussione tema esame 1° appello (riassunto domande) EM Online Video

News

2021-06-22: Pubblicata una possibile soluzione del BigLab2
2021-06-08: Pubblicato il testo del progetto da consegnare per il primo appello
2021-06-08: Aggiornata sezione esame (prima versione provvisoria senza ancora i documenti)
2021-06-03: Aggiornato definitivamente il programma fino a fine corso.
2021-06-02: Aggiornato programma e link vari.
2021-05-27: Aggiornato il programma e i vari link lezioni e laboratori.
2021-05-20: Aggiornato il programma e i vari link lezioni e laboratori.
2021-05-14: Pubblicati i risultati della consegna del BigLab1. Maggiori dettagli disponibili nei repository privati dei vari gruppi (sezione “Issue”)
2021-05-05: Aggiornati i link nel programma.
2021-04-29: Aggiornati i link nel programma.
2021-04-22: Aggiornato programma. Confermato seminario giovedi 3 giugno. Lab del 26 maggio anche in presenza.
2021-04-12: Aggiornato link esempi lezioni settimana 5. Inserita scadenza BigLab1 nel calendario.
2021-04-06: Pubblicato un calendario (provvisorio) fino a fine corso.
2021-03-25: Gli esempi visti a lezione sono stati riorganizzati in un unico repository anziche’ in piu’ repository github.
2021-03-25: E’ online un Video di 20 minuti, da vedere appena possibile, che illustra la keyword “this” in JS.
2021-03-18: I laboratori proseguiranno solo online fino a Pasqua 2021, come da disposizioni della Regione Piemonte/Politecnico.
2021-03-08: Lunedi’ 15 marzo 2021 il lab e’ solo online, per entrambi gli slot, come da disposizioni della Regione Piemonte riguardanti la presenza all’universita’.
2021-03-01: Pubblicati i video dei primi 2 slot di lezione.
2021-02-25: Pubblicate le regole d’esame per l’anno in corso.
2021-02-23: Pubblicata la prima versione della pagina del corso.

Pagina ufficiale del Politecnico con la scheda del corso