Applicazioni Web I a.a. 2022/23 - 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. 2022/23)
Insegnanti: Prof. Enrico Masala, Prof. Antonio Servetti, Prof. Eros Fani’
(Link a.a. precedenti: 2019/20 2020/21 2021/22 - con temi d’esame precedenti)
Link utili
GitHub: https://github.com/polito-WA1-AW1-2023
YouTube Playlist: https://www.youtube.com/playlist?list=PLuZyhAOPm9pPEI67ZU8ghnVmEG6SMhT-Q
Telegram: https://t.me/+WnR1ibagHUxkMDI0
Avvisi
Gli avvisi arriveranno tramite Telegram. Link di invito: https://t.me/+WnR1ibagHUxkMDI0
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. La prima settimana NON ci sarà laboratorio e si useranno le prime 3 ore per lezione, come da calendario più sotto in questa pagina.
Comunicazioni
Per le comunicazioni durante il corso, si userà Telegram come strumento principale: Link di invito: https://t.me/+WnR1ibagHUxkMDI0
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 Telegram, 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, ricevendo una risposta da almeno un docente (e in tempi ragionevoli).
Esame
Qui sono pubblicate le tracce dei temi d’esame per l’a.a. 2022/23. E’ possibile consultare quelle degli anni precedenti accedendo alle relative pagine dei corsi: 2019/20 2020/21 2021/22
-
Informazioni generali:
-
Esame #1: CMSmall (scadenza: 25 giugno 2023 ore 23:59)
- Risposte ai dubbi e domande posti sul precedente google doc
- Per ulteriori dubbi scrivere sul canale telegram del corso.
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
-
Esame #2: Posti aereo (scadenza: 9 luglio 2023 ore 23:59)
- Risposte ai dubbi e domande posti sul precedente google doc
- Per ulteriori dubbi scrivere sul canale telegram del corso.
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
-
Esame #3: Indovina chi (scadenza: 7 settembre 2023 ore 23:59)
- Doc che include domande e risposte poste tramite commenti sul google doc
- Per dubbi lasciare commento sul google doc. NON risolvere i commenti.
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
-
Esame #4: Recupero cibo (scadenza: 24 gennaio 2024 ore 23:59)
- Per dubbi lasciare commento sul google doc. NON risolvere i commenti.
- Link per scheletro progetto e sottomissione esame (su GitHub Classroom)
Regole d’esame
Questa sezione riporta le regole d’esame. Le regole d’esame sono riportate in inglese: questo per evitare problemi di allineamento tra i vari corsi italiano e inglese di Applicazioni Web I. In caso di dubbi chiedere chiarimenti al docente.
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”).
The submitted projects will eveluated during the oral discussion. 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.
Each student will be allocated a time slot for the discussion, that will take place in person. Some form of identification (Polito 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. 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 26 marks assigned to the project and 6 to the oral discussion.
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 R1 | Lezione | |
Giovedi’ | 08:30-10:00 | aula 7I - con prese elettriche | Lab (squadra 1) Cognomi A-DI | Inizia la seconda settimana |
Giovedi’ | 10:00-11:30 | aula 7I - con prese elettriche | Lab (squadra 2) Cognomi DJ-PAL | Inizia la seconda settimana |
Giovedi’ | 11:30-13:00 | aula 7I - con prese elettriche | Lab (squadra 3) Cognomi PAM-Z | 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-2023 (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’ 28 febbraio 2023 | 8:30 | Lez | Introduzione al corso | R1 | Video |
martedi’ 28 febbraio 2023 | 10:00 | Lez | Introduzione a Javascript. Array e Stringhe | R1 | Video |
giovedi’ 2 marzo 2023 | 8:30 | Lez | Javascript: oggetti e funzioni | 7I | Video |
giovedi’ 2 marzo 2023 | 10:00 | Lez | Javascript: date, esempi | 7I | Video |
martedi’ 7 marzo 2023 | 8:30 | Lez | Javascript: callbacks e programmazione funzionale | R1 | Video |
martedi’ 7 marzo 2023 | 10:00 | Lez | Javascript: esercizio con oggetti | R1 | Video |
giovedi’ 9 marzo 2023 | 8:30 | Lab | Testo lab1: getting started (soluzione) | 7I | |
giovedi’ 9 marzo 2023 | 10:00 | Lab | Testo lab1: getting started (soluzione) | 7I | |
giovedi’ 9 marzo 2023 | 11:30 | Lab | Testo lab1: getting started (soluzione) | 7I | |
martedi’ 14 marzo 2023 | 8:30 | Lez | JS: programmazione asincrona | R1 | Video |
martedi’ 14 marzo 2023 | 10:00 | Lez | JS: Promises, async e await (esercizio accesso db) | R1 | Video |
giovedi’ 16 marzo 2023 | 8:30 | Lab | Testo lab2: node e database (soluzione) | 7I | |
giovedi’ 16 marzo 2023 | 10:00 | Lab | Testo lab2: node e database (soluzione) | 7I | |
giovedi’ 16 marzo 2023 | 11:30 | Lab | Testo lab2: node e database (soluzione) | 7I | |
da fare entro martedi’ 21 marzo 2023 | Lett | Introduzione ad architetture web, HTML, CSS | - | ||
martedi’ 21 marzo 2023 | 8:30 | Lez | Web architecture, HTML, CSS | R1 | Video |
martedi’ 21 marzo 2023 | 10:00 | Lez | Web architecture, HTML, CSS (esercizio aula) | R1 | Video |
giovedi’ 23 marzo 2023 | 8:30 | Lab | Testo lab 3: HTML e CSS (soluzione) | 7I | |
giovedi’ 23 marzo 2023 | 10:00 | Lab | Testo lab 3: HTML e CSS (soluzione) | 7I | |
giovedi’ 23 marzo 2023 | 11:30 | Lab | Testo lab 3: HTML e CSS (soluzione) | 7I | |
martedi’ 28 marzo 2023 | 8:30 | Lez | JS nel browser | R1 | Video |
martedi’ 28 marzo 2023 | 10:00 | Lez | JS nel browser | R1 | Video |
giovedi’ 30 marzo 2023 | 8:30 | Lab | Testo lab 4: JS nel browser (soluzione) | 7I | |
giovedi’ 30 marzo 2023 | 10:00 | Lab | Testo lab 4: JS nel browser (soluzione) | 7I | |
giovedi’ 30 marzo 2023 | 11:30 | Lab | Testo lab 4: JS nel browser (soluzione) | 7I | |
martedi’ 4 aprile 2023 | 8:30 | Lez | Introduzione a React | R1 | Video |
martedi’ 4 aprile 2023 | 10:00 | Lez | React: elements e JSX | R1 | Video |
VACANZE PASQUALI | |||||
giovedi’ 13 aprile 2023 | 8:30 | Lez | Componenti e stato, con esempio | 7I | Video |
giovedi’ 13 aprile 2023 | 10:00 | Lez | Gestione array nello stato (da slide 19), con esempio | 7I | Video |
martedi’ 18 aprile 2023 | 8:30 | Lez | Forms | R1 | Video |
martedi’ 18 aprile 2023 | 10:00 | Lez | Forms: esempio | R1 | Video |
giovedi’ 20 aprile 2023 | 8:30 | Lab | Testo lab 5: primo progetto in React (soluzione) | 7I | |
giovedi’ 20 aprile 2023 | 10:00 | Lab | Testo lab 5: primo progetto in React (soluzione) | 7I | |
giovedi’ 20 aprile 2023 | 11:30 | Lab | Testo lab 5: primo progetto in React (soluzione) | 7I | |
da fare entro martedi’ 25 aprile 2023 | Lett | La keyword this in Javascript | - | ||
giovedi’ 27 aprile 2023 | 8:30 | Lab | Testo lab 6: forms in React (soluzione) | 7I | |
giovedi’ 27 aprile 2023 | 10:00 | Lab | Testo lab 6: forms in React (soluzione) | 7I | |
giovedi’ 27 aprile 2023 | 11:30 | Lab | Testo lab 6: forms in React (soluzione) | 7I | |
da fare entro martedi’ 2 maggio 2023 | Lett | I moduli in Javascript | - | ||
martedi’ 2 maggio 2023 | 8:30 | Lez | React context. React router. Esempio | R1 | Video |
martedi’ 2 maggio 2023 | 10:00 | Lez | React context. React router. Esempio | R1 | Video |
giovedi’ 4 maggio 2023 | 8:30 | Lab | Lab 7: React routes (soluzione) | 7I | |
giovedi’ 4 maggio 2023 | 10:00 | Lab | Lab 7: React routes (soluzione) | 7I | |
giovedi’ 4 maggio 2023 | 11:30 | Lab | Lab 7: React routes (soluzione) | 7I | |
martedi’ 9 maggio 2023 | 8:30 | Lez | Express. HTTP APIs. | R1 | Video |
martedi’ 9 maggio 2023 | 10:00 | Lez | HTTP APIs. Esercizio | R1 | Video |
giovedi’ 11 maggio 2023 | 8:30 | Lab | Lab 8: APIs con Express (files e soluzione) | 7I | |
giovedi’ 11 maggio 2023 | 10:00 | Lab | Lab 8: APIs con Express (files e soluzione) | 7I | |
giovedi’ 11 maggio 2023 | 11:30 | Lab | Lab 8: APIs con Express (files e soluzione) | 7I | |
martedi’ 16 maggio 2023 | 8:30 | Lez | Fetch. Interazione client-server in React. | R1 | Video |
martedi’ 16 maggio 2023 | 10:00 | Lez | useEffect e lifecycle | R1 | Video |
giovedi’ 18 maggio 2023 | 8:30 | Lab | Lab 9: interazione client-server (solo caricamento dati) (soluzione) | 7I | |
giovedi’ 18 maggio 2023 | 10:00 | Lab | Lab 9: interazione client-server (solo caricamento dati) (soluzione) | 7I | |
giovedi’ 18 maggio 2023 | 11:30 | Lab | Lab 9: interazione client-server (solo caricamento dati) (soluzione) | 7I | |
martedi’ 23 maggio 2023 | 8:30 | Lez | Aspetti avanzati sul lifecycle | R1 | Video |
martedi’ 23 maggio 2023 | 10:00 | Lez | Esercizio su useEffect e fetch | R1 | Video |
giovedi’ 25 maggio 2023 | 8:30 | Lab | Lab 10: interazione client-server completa (soluzione) | 7I | |
giovedi’ 25 maggio 2023 | 10:00 | Lab | Lab 10: interazione client-server completa (soluzione) | 7I | |
giovedi’ 25 maggio 2023 | 11:30 | Lab | Lab 10: interazione client-server completa (soluzione) | 7I | |
martedi’ 30 maggio 2023 | 8:30 | Lez | Autenticazione con Passport.js | R1 | Video |
martedi’ 30 maggio 2023 | 10:00 | Lez | Esercizio su autenticazione | R1 | Video |
giovedi’ 1 giugno 2023 | 8:30 | Lab | Lab 11: autenticazione (soluzione) | 7I | |
giovedi’ 1 giugno 2023 | 10:00 | Lab | Lab 11: autenticazione (soluzione) | 7I | |
giovedi’ 1 giugno 2023 | 11:30 | Lab | Lab 11: autenticazione (soluzione) | 7I | |
martedi’ 6 giugno 2023 | 8:30 | — | — no lezione | ||
martedi’ 6 giugno 2023 | 10:00 | — | — no lezione | ||
giovedi’ 8 giugno 2023 | 8:30 | Lez | Esempio di tema d’esame (a squadre riunite) | 7I | Video |
giovedi’ 8 giugno 2023 | 10:00 | Lez | Esempio di tema d’esame (a squadre riunite) | 7I | Video |
News
2023-06-09: Aggiornato il calendario con i link a tutto il materiale.
2023-06-05: Pubblicato il testo del progetto per il primo appello d’esame.
2023-05-24: Completato il calendario fino a fine corso (salvo imprevisti)
2023-05-15: Aggiornato il calendario con lezioni su fetch, interazione client-server e lifecycle.
2023-05-09: Aggiornato il calendario con le nuove lezioni, lab e soluzioni.
2023-05-02: Aggiornato il calendario con le nuove lezioni, lab e soluzioni.
2023-04-26: Aggiornato il calendario con il testo del lab6 e la soluzione del lab5.
2023-04-18: Precisato, nell’orario sopra, cognomi suddivisione in squadre di lab (v. slides introduzione). Aggiornati link.
2023-04-15: Aggiornato il calendario con le prossime letture e un’indicazione degli argomenti delle prossime lezioni
2023-04-13: Aggiornato il calendario con le nuove lezioni al posto del lab, e il testo del primo lab su React
2023-04-03: Aggiornato il calendario con lezioni e lab prima e dopo Pasqua
2023-03-21: Aggiornato il calendario con link a slides, video, esercizi, soluzioni
2023-03-14: Aggiornato il calendario con link a slides, video, esercizi
2023-03-02: Pubblicati i video della nuova lezione, insieme al link agli esercizi e soluzioni (v. riga del programma)
2023-02-28: Pubblicati i video della prima lezione, sistemati i link alle slides del corso e il programma della settimana.
2023-02-23: Pubblicata la prima versione della pagina del corso.
Pagina ufficiale del Politecnico con la scheda del corso