Applicazioni Web I a.a. 2021/22 - 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. 2021/22)
Insegnanti: Prof. Enrico Masala, Prof. Antonio Servetti
(Link a.a. precedenti: 2019/20 2020/21 - con temi d’esame precedenti)
Link utili
GitHub: https://github.com/polito-WA1-AW1-2022
YouTube Playlist: https://www.youtube.com/playlist?list=PLuZyhAOPm9pNj46XkNvtHLgQNCutui0ti
Slack: https://join.slack.com/t/aw1-2022/signup
Avvisi
Gli avvisi arriveranno tramite Slack. Tutti devono registrarsi, usando la propria email @studenti.polito.it, utilizzando il link di invito: https://join.slack.com/t/aw1-2022/signup
Laboratori: 3 squadre il GIOVEDI’ ore 8:30-10:00, 10:00-11:30, 11:30-13:00. Maggiori dettagli la prima settimana di corso, in quella settimana non ci sarà laboratorio e si useranno le 3 ore per lezione, come da calendario più sotto in questa pagina.
Comunicazioni
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 2022”. 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-2022/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).
(*) 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
Qui saranno pubblicate le tracce dei temi d’esame. E’ possibile consultare quelle degli anni precedenti accedendo alle relative pagine dei corsi: 2019/20 2020/21
- Informazioni generali:
- Istruzioni per la sottomissione tramite GitHub Classroom
- FAQ riguardo le regole d’esame
- Errori frequenti e come evitarli v.2.1 (IMPORTANTE!) (versione precedente 2.0)
- Esame #1: Piano di studi (scadenza: 22 giugno 2022 ore 23:59)
- Canale Slack per discussioni e domande: #esame1-pianostudi
- Documento con domande/risposte poste come commenti sul google doc originale, o su slack
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
- Esame #2: Indovinelli (scadenza: 14 luglio 2022 ore 23:59)
- Canale Slack per discussioni e domande: #esame2-indovinelli
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
- Esame #3: Categorie (scadenza: 1 settembre 2022 ore 23:59)
- Canale Slack per discussioni e domande: #esame3-categorie
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
- Esame #4: Form griglia (scadenza: 3 novembre 2022 ore 23:59)
- Canale Slack per discussioni e domande: #esame4-form-griglia
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
- Esame #5: Poke (scadenza: 19 gennaio 2023 ore 23:59)
- Canale Slack per discussioni e domande: #esame5-poke
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
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 consists of a web application project to be developed according to the specifications published 20 days in advance of each official exam date (“data appello”), plus an oral discussion of such a project. For each official date a new assignment will have to be developed. The web application project must be developed during the 20 days by each student INDIVIDUALLY. During the oral exam, each student should be able to prove that they were able to develop the project in full autonomy by showing complete and full knowledge of every part of their submitted solution.
The final version of the project must be submitted before the deadline, according to the provided technical instructions. If such instructions are not carefully followed, the exam will be considered failed. This includes, for instance, if the project cannot be run and tested as-is by the teacher with the required configuration.
A few days after publishing the assignment, the teachers will be available to discuss potential doubts about it (e.g., unclear or ambiguous requirements). Any interested student will be able to ask questions asynchronously. After such a clarification phase, a “final” version of the text will be published.
The submission deadline for the project is 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. Depending on the number of submissions, such a process might take several days. Projects that do not meet minimum criteria will be evaluated as insufficient, with consequent exam failure, 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, and 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 a time slot for the discussion, that will take place in person. Some form of identification (ID card or passport, etc.) is required. The oral exam aims to ensure that each student has developed the web application by themselves and to evaluate how much the student can explain the exact behavior of the code. The source code will be opened on the teacher’s computer. We will follow the same procedure if the oral exam is done remotely (for those who are duly authorized, only).
Therefore, during the oral exam, the student must be able to explain every aspect of the project. This includes, but is not limited to, the reasons behind the architectural choices for their application, how any specific fragment of code works, why it was implemented in that way, 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 codebase, readiness, and clarity in the replies.
There will be 24 marks assigned to the project and 6 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 exam **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). Please, also notice that the score of the BigLabs will last for an entire year (i.e., until the new edition of the course starts).
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 failed, and the students will be notified about the situation.
Recommendations
During the oral exam, each student 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, we recommended that the student carefully rehearse and review the code shortly before the oral exam.
As in any programming assignment, it is possible to search online for suggestions and examples about solving specific programming issues during the development phase, which can be incorporated into 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.).
In the solution, it is recommended to employ all the good practices and sound programming techniques explained during the lectures. Substantial deviations from such patterns will have to be duly justified during the oral exam. If not adequately justified, they will cause a reduction of the final mark and potentially 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 functions such as date/time handling, presentation aspects, predefined components (e.g., calendars), and similar items are allowed.
If React requires certain programming patterns, those must be followed. For example, it is NOT allowed to use JQuery or JS directly to modify DOM content within the browser. It is not allowed to use server-side technologies other than 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.
Orario
L’orario sul sito ufficiale del Politecnico è qui.
NB: Le aule per i laboratori NON sono dotate di propri PC, è indispensabile partecipare muniti di PROPRIO COMPUTER, collegabile alle prese elettriche presenti nei banchi e alla rete WiFi.
Giorno | Orario | Luogo | Tipo | Note |
---|---|---|---|---|
Martedi’ | 08:30-11:30 | aula 27 | Lezione | |
Giovedi’ | 08:30-10:00 | aula 8I - con prese elettriche | Lab (squadra 1) | Inizia la seconda settimana |
Giovedi’ | 10:00-11:30 | aula 8I - con prese elettriche | Lab (squadra 2) | Inizia la seconda settimana |
Giovedi’ | 11:30-13:00 | aula 9I - con prese elettriche | Lab (squadra 3) | Inizia la seconda settimana |
Programma
Tutte le videolezioni: youtube playlist, tutto il materiale, incluse le Slides e i testi dei laboratori: github.com/polito-WA1-AW1-2022 (sito unico italiano/inglese).
NB: Le aule per i laboratori NON sono dotate di propri PC, è indispensabile partecipare muniti di PROPRIO COMPUTER, collegabile alle prese elettriche presenti nei banchi e alla rete WiFi.
Codice sviluppato durante le lezioni (su GitHub)
Data | Ora | Tipo | Argomento | Aula | Video |
---|---|---|---|---|---|
martedi’ 1 marzo 2022 | 8:30 | Lez | Introduzione al corso | 27 | Video |
martedi’ 1 marzo 2022 | 10:00 | Lez | Introduzione a Javascript | 27 | Video |
giovedi’ 3 marzo 2022 | 8:30 | Lez | Javascript: oggetti e funzioni | 8I | Video |
giovedi’ 3 marzo 2022 | 10:00 | Lez | Esercizi di Javascript (GitHub): array e oggetti | 8I | Video |
martedi’ 8 marzo 2022 | 8:30 | Lez | Esercizi di Javascript (GitHub): oggetti arrays callbacks | 27 | Video |
martedi’ 8 marzo 2022 | 10:00 | Lez | Javascript: programmazione funzionale e asincrona (inizio) | 27 | Video |
giovedi’ 10 marzo 2022 | 8:30 | Lab | Lab 1 squadra 1: primi passi con node (possibile soluzione) | 8I | - |
giovedi’ 10 marzo 2022 | 10:00 | Lab | Lab 1 squadra 2: primi passi con node (possibile soluzione) | 8I | - |
giovedi’ 10 marzo 2022 | 11:30 | Lab | Lab 1 squadra 3: primi passi con node (possibile soluzione) | 9I | - |
martedi’ 15 marzo 2022 | 8:30 | Lez | JS Async Programming, interfacciamento SQLite | 27 | Video |
martedi’ 15 marzo 2022 | 10:00 | Lez | JS Promises, async, await. Esempi (su GitHub) (Nota: l’audio originale è andato perso ed è stato rifatto, c’è anche il video dell’anno scorso nel link a destra) | 27 | Video / Video a.a. 20/21, esempio |
giovedi’ 17 marzo 2022 | 8:30 | Lab | Lab 2 squadra 1: progr. async in node (possibile soluzione) | 8I | - |
giovedi’ 17 marzo 2022 | 10:00 | Lab | Lab 2 squadra 2: progr. async in node (possibile soluzione) | 8I | - |
giovedi’ 17 marzo 2022 | 11:30 | Lab | Lab 2 squadra 3: progr. async in node (possibile soluzione) | 9I | - |
da fare entro lunedi’ 21 marzo 2022 | Lettura | Introduzione ad architetture web, HTML, CSS | - | - | |
martedi’ 22 marzo 2022 | 8:30 | Lez | Review della lettura tramite slides Architetture web, HTML, CSS. | 27 | Video |
martedi’ 22 marzo 2022 | 10:00 | Lez | Esempi di HTML, CSS (con Bootstrap 5) | 27 | Video |
giovedi’ 24 marzo 2022 | 8:30 | Lab | Lab 3 squadra 1: HTML e CSS (possibile soluzione) | 8I | - |
giovedi’ 24 marzo 2022 | 10:00 | Lab | Lab 3 squadra 2: HTML e CSS (possibile soluzione) | 8I | - |
giovedi’ 24 marzo 2022 | 11:30 | Lab | Lab 3 squadra 3: HTML e CSS (possibile soluzione) | 9I | - |
martedi’ 29 marzo 2022 | 8:30 | Lez | JS nel browser | 27 | Video |
martedi’ 29 marzo 2022 | 10:00 | Lez | JS nel browser: eventi, ed esempi | 27 | Video |
giovedi’ 31 marzo 2022 | 8:30 | Lab | Lab 4 squadra 1: JS nel browser (possibile soluzione) | 8I | - |
giovedi’ 31 marzo 2022 | 10:00 | Lab | Lab 4 squadra 2: JS nel browser (possibile soluzione) | 8I | - |
giovedi’ 31 marzo 2022 | 11:30 | Lab | Lab 4 squadra 3: JS nel browser (possibile soluzione) | 9I | - |
da fare entro lunedi’ 4 prile 2022 | Lettura | La parola chiave ‘this’ in Javascript (slides) | - | Video (a.a. precedente) | |
martedi’ 5 aprile 2022 | 8:30 | Lez | Introduzione a React | 27 | Video |
martedi’ 5 aprile 2022 | 10:00 | Lez | React: elements e JSX | 27 | Video |
Istruzioni sottomissione Biglabs, e traccia generale Biglab1 | |||||
giovedi’ 7 aprile 2022 | 8:30 | Lab | BigLab 1a squadra 1: setup di React | 8I | - |
giovedi’ 7 aprile 2022 | 10:00 | Lab | BigLab 1a squadra 2: setup di React | 8I | - |
giovedi’ 7 aprile 2022 | 11:30 | Lab | BigLab 1a squadra 3: setup di React | 9I | - |
martedi’ 12 aprile 2022 | 8:30 | Lez | React: props e state, hooks per gestione stato, forms, ed esempi | 27 | Video |
martedi’ 12 aprile 2022 | 10:00 | Lez | React: props e state, hooks per gestione stato, forms, ed esempi | 27 | Video |
VACANZE PASQUALI | |||||
giovedi’ 21 aprile 2022 | 8:30 | Lab | BigLab 2a squadra 1: componenti e stato | 8I | - |
giovedi’ 21 aprile 2022 | 10:00 | Lab | BigLab 2a squadra 2: componenti e stato | 8I | - |
giovedi’ 21 aprile 2022 | 11:30 | Lab | BigLab 2a squadra 3: componenti e stato | 9I | - |
martedi’ 26 aprile 2022 | 8:30 | Lez | React forms (continuazione). Esercizio | 27 | Video |
martedi’ 26 aprile 2022 | 10:00 | Lez | React context | 27 | Video |
giovedi’ 28 aprile 2022 | 8:30 | Lab | BigLab 3a squadra 1: stato e forms | 8I | - |
giovedi’ 28 aprile 2022 | 10:00 | Lab | BigLab 3a squadra 2: stato e forms | 8I | - |
giovedi’ 28 aprile 2022 | 11:30 | Lab | BigLab 3a squadra 3: stato e forms | 9I | - |
da fare entro lunedi’ 2 maggio 2022 | Lettura | Moduli in Javascript (slides) | - | - | |
martedi’ 3 maggio 2022 | 8:30 | Lez | React router | 27 | Video |
martedi’ 3 maggio 2022 | 10:00 | Lez | Esercizio su router | 27 | Video |
giovedi’ 5 maggio 2022 | 8:30 | Lab | BigLab 4a squadra 1: router | 8I | - |
giovedi’ 5 maggio 2022 | 10:00 | Lab | BigLab 4a squadra 2: router | 8I | - |
giovedi’ 5 maggio 2022 | 11:30 | Lab | BigLab 4a squadra 3: router | 9I | - |
domenica 8 maggio 2022 | 23:59 | SCADENZA Consegna Biglab1 (istruzioni GH Classroom ) (istruzioni Biglab1 con link assignment) UNA POSSIBILE SOLUZIONE | RISULTATI | ||
martedi’ 10 maggio 2022 | 8:30 | Lez | Express | 27 | Video, (video a.a. 2020/21) |
martedi’ 10 maggio 2022 | 10:00 | Lez | HTTP API, esercizi | 27 | Video, (video a.a. 2020/21) |
Istruzioni sottomissione Biglabs, e traccia generale Biglab2 | |||||
giovedi’ 12 maggio 2022 | 8:30 | Lab | BigLab 1b squadra 1 | 8I | - |
giovedi’ 12 maggio 2022 | 10:00 | Lab | BigLab 1b squadra 2 | 8I | - |
giovedi’ 12 maggio 2022 | 11:30 | Lab | BigLab 1b squadra 3 | 9I | - |
da fare entro lunedi’ 16 maggio 2022 | Lettura | Il problema dei 2 server (da leggere almeno fino a slide 14) | - | - | |
martedi’ 17 maggio 2022 | Lez | Review della lettura. Uso di fetch. | 27 | Video | |
martedi’ 17 maggio 2022 | 10:00 | Lez | useEffect e lifecycle, primi esempi. | 27 | Video |
giovedi’ 19 maggio 2022 | 8:30 | Lab | Biglab 2b squadra 1 | 8I | - |
giovedi’ 19 maggio 2022 | 10:00 | Lab | Biglab 2b squadra 2 | 8I | - |
giovedi’ 19 maggio 2022 | 11:30 | Lab | Biglab 2b squadra 3 | 9I | - |
martedi’ 24 maggio 2022 | 8:30 | Lez | Regole d’esame. Aspetti avanzati del lifeCycle | 27 | Video |
martedi’ 24 maggio 2022 | 10:00 | Lez | Completamento esempi useEffect | 27 | Video |
giovedi’ 26 maggio 2022 | 8:30 | Lab | Biglab 2c squadra 1 | 8I | - |
giovedi’ 26 maggio 2022 | 10:00 | Lab | Biglab 2c squadra 2 | 8I | - |
giovedi’ 26 maggio 2022 | 11:30 | Lab | Biglab 2c squadra 3 | 9I | - |
martedi’ 31 maggio 2022 | 8:30 | Lez | Autenticazione con Passport.js | 27 | Video |
martedi’ 31 maggio 2022 | 10:00 | Lez | Esempio di autenticazione | 27 | Video |
giovedi’ 2 giugno 2022 | VACANZA, no lab (2 giugno) | ||||
martedi’ 7 giugno 2022 | NO LEZIONE (parte teorica terminata) | ||||
giovedi’ 9 giugno 2022 | 8:30 | Lab | Biglab 2d squadra 1 | 8I | - |
giovedi’ 9 giugno 2022 | 10:00 | Lab | Biglab 2d squadra 2 | 8I | - |
giovedi’ 9 giugno 2022 | 11:30 | Lab | Biglab 2d squadra 3 | 9I | - |
domenica 12 giugno 2022 | 23:59 | SCADENZA Consegna Biglab2 (istruzioni GH Classroom ) (istruzioni Biglab2 con link per accettare l’assignment) UNA POSSIBILE SOLUZIONE | RISULTATI |
News
2022-06-17: Pubblicati i risultati del BigLab2 ed una possibile soluzione
2022-06-16: Aggiornati gli ultimi link nel calendario del corso
2022-06-10: Pubblicato il testo definitivo del progetto per il primo appello d’esame
2022-06-01: Pubblicato il testo del progetto per il primo appello d’esame
2022-05-25: Pubblicato link ad una possibile soluzione del BigLab1
2022-05-24: Aggiornati i link, in particolare il video che contiene la discussione delle regole aggiornate dell’esame
2022-05-23: Aggiornate le regole d’esame
2022-05-18: Pubblicati i risultati del BigLab1
2022-05-16: Aggiornato il calendario fino al termine del corso (salvo variazioni impreviste)
2022-05-13: Aggiunto la lettura 4 (il problema dei 2 server)
2022-05-11: Aggiornato i links e il calendario con il BigLab2 e relativa scadenza
2022-04-27: Aggiornato calendario e links
2022-04-25: Aggiornati i link con nuove lezioni
2022-04-06: Aggiornato il calendario con BigLab1 e relativa scadenza
2022-04-03: Aggiornati i link delle nuove lezioni, precisato che il Biglab1 è da consegnare solo al termine dei 4 lab relativi
2022-03-29: Aggiornati i link delle nuove lezioni, inserita la seconda lettura
2022-03-24: Aggiornati i link rilevanti al materiale già pubblicato (video, lab, e soluzioni)
2022-03-16: Aggiunto link per letture da fare entro lezione del 21 marzo 2022.
2022-03-15: Aggiornato il calendario con nuove informazioni, testo del lab2 e link della lezione.
2022-03-09: Pubblicato il testo del primo laboratorio
2022-02-24: Aggiornati i link per le prime lezioni
2022-02-22: Pubblicata la prima versione della pagina del corso.
Pagina ufficiale del Politecnico con la scheda del corso