L'insegnamento, erogato in italiano nel secondo semestre del primo anno per la Laurea Magistrale in Ingegneria Informatica, presenta le principali tecniche per la realizzazione di applicazioni web distribuite, concentrandosi in particolare sulla programmazione front-end, utilizzando il linguaggio Javascript e un framework di programmazione lato client.
Saranno trattati I principali paradigmi di programmazione necessari per realizzare il front-end di una moderna applicazione web, sia approfondendo le problematiche a livello di codice Javascript sia studiando gli approcci utilizzati da un framework ampiamente utilizzato.
La trattazione è orientata a consentire allo studente/ssa di acquisire le abilità di base necessarie ad affrontare le principali scelte progettuali nell'ambito dei predetti argomenti.
The course, taught in Italian in the second semester of the first year of the Master of Science in Computer Engineering, aims at presenting the main techniques for creating distributed web applications, focusing in particular on the front-end programming, using the JavaScript language and a client-side programming framework.
The main programming paradigms useful for the needs of the front-end of a modern web application will be considered, both by analyzing their impact in term of native JavaScript code, and by studying the approaches provided by a dominant framework.
The topics presentation will enable the student to gain the basic skill to manage the main design choices within the mentioned topics.
- Conoscenza dei principali aspetti di HTML, CSS, e Javascript moderno.
- Capacità di usare Javascript in modo avanzato per la realizzazione di applicazioni web a livello di front-end.
- Conoscenza di base di un framework per la realizzazione di applicazioni web in Javascript.
- Capacità di realizzare applicazioni web complete, anche in modalità "single page application", con l'utilizzo di un semplice backend per le API lato server.
- Conoscenza delle principali problematiche di robustezza, sicurezza, interoperabilità e prestazioni delle applicazioni studiate e relative best practice.
Knowledge of the main aspects of HTML, CSS, Javascript
Ability to use a Javascript at an advanced level for creating web applications at the front-end level.
Basic knowledge of a framework for creating web applications in Javascript
Ability to create complete web applications, also in the ?single page application? modality, by using a simple back-end server.
Knowledge of the main issues regarding robustness, security, interoperability, usability and performance of the studied applications, and their applicable best practices.
- Capacità di programmazione in linguaggi procedurali e object oriented, e relative abilità di debugging.
- Competenze di base di HTML.
- Conoscenza di base delle architetture web e del protocollo HTTP.
- Conoscenze di tipo pratico di database relazionali e SQL.
Ability to program in procedural languages and object oriented languages, and corresponding debugging skills.
Basic knowledge of HTML, SQL and databases.
Basic knowledge of web architectures and of the HTTP protocol.
- Richiami di architetture web, HTML5, CSS.
- Layout complessi, framework CSS. Cenni di web design.
- Javascript come linguaggio. Variabili e oggetti. Esecuzione nel browser ed in Node.js.
- Interazione con un database SQLite in applicazioni Node.js.
- Gestione di form e di tabelle. DOM. Eventi. Callback. Closure.
- Web server e il framework Express.
- JSON. HTTP API. Programmazione asincrona (async/await, Promise, fetch).
- Single Page Applications. Programmazione reattiva. Introduzione a React.
- Applicazioni React. Web Componenti. JSX.
- Autenticazione e autorizzazione di API.
- Architettura di un'applicazione complessa. Routing eventi. Gestione dello stato.
- Esempi di applicazioni.
Recall of web architectures, HTML5, CSS.
Complex layouts, CSS frameworks. Notions of web design.
Javascript as a language. Variables and objects. Execution in the browser and in nodejs.
Handling forms and tables. DOM. Events. Callbacks. Closures.
Ajax. JSON. REST. CRUD operations. Asynchronous programming (async/await, Promise, Fetch).
Single Page Applications. Reactive programming. Introduction to ReactJS.
React applications. Web Components. JSX.
Introduction to authentication and authorization.
Architecture of a complex application. Event routing. State management.
Deployment and publication of applications.
Application examples.
Le comunicazioni con i docenti e i partecipanti al corso avverranno tramite strumenti di messaggistica (per esempio, con un gruppo Telegram).
Le comunicazioni con i docenti e i partecipanti al corso avverranno tramite strumenti di messaggistica (per esempio, con un gruppo Telegram).
Oltre alle lezioni frontali e a esercitazioni svolte in aula (4 crediti), il corso include delle esercitazioni di laboratorio (2 crediti) sull'applicazione delle tecniche presentate in aula. Circa il 60% delle ore in aula saranno dedicate a lezioni teoriche mentre il restante 40% sarà dedicato allo sviluppo di esercizi (un'applicazione web sarà costruita incrementalmente per illustrare i vari argomenti affrontati). Gli studenti e le studentesse sono invitate a seguire le ore in aula con il loro computer così da programmare insieme al docente. Gli esercizi svolti in classe saranno condivisi online subito dopo il loro svolgimento. Tutte le lezioni e gli esercizi in aula saranno comunque video-registrati e resi disponibili online.
I laboratori consisteranno nell'applicazione delle tecniche apprese in aula, costruendo in maniera incrementale un'applicazione web di complessità crescente. Durante i laboratori gli studenti e le studentesse discuteranno con i docenti le loro soluzioni agli esercizi assegnati. Il materiale relativo ai laboratori sarà gestito attraverso una piattaforma basata su Git (per esempio, GitHub). I laboratori si svolgeranno in aule normali e i partecipanti dovrebbero lavorare sul proprio computer.
In addition to classes, that include both lectures and exercises in classroom (4 credits), the course includes laboratory exercises (2 credits) on the application of the presented techniques.
The laboratories will consist in the application of the techniques learnt during the classes, by incrementally building a web application of increasing complexity. During the labs the students will discuss with the teachers on their solutions to the assigned exercises. The lab material will be managed through a Git-based platform.
Il docente fornirà il materiale (copia delle slide e link a risorse disponibili online) sul sito del corso: https://elite.polito.it.
Molte risorse informative sono liberamente disponibili su web (https://developer.mozilla.org, https://reactjs.org/, https://javascript.info/, ecc).
Alcuni libri di testo suggeriti per approfondimenti personali:
M. Haverbeke, Eloquent Javascript (https://eloquentjavascript.net/)
A. Accomazzo, A. Lerner, N. Murray, C. Allsopp, D. Guttman, T. McGinnis, Fullstack React, 2019
The teacher will provide the material (copy of slides and links to on-line resources) on the website of the course.
Many useful resources are also freely available on the web (https://developer.mozilla.org, https://reactjs.org/, https://javascript.info/, etc).
Some suggested textbooks for personal in-depth study:
M. Haverbeke, Eloquent Javascript (https://eloquentjavascript.net/)
A. Accomazzo, A. Lerner, N. Murray, C. Allsopp, D. Guttman, T. McGinnis, Fullstack React, 2019
Slides; Esercizi; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni dell’anno corrente; Video lezioni tratte da anni precedenti;
Lecture slides; Exercises; Exercise with solutions ; Lab exercises; Lab exercises with solutions; Video lectures (current year); Video lectures (previous years);
E' possibile sostenere l’esame in anticipo rispetto all’acquisizione della frequenza
You can take this exam before attending the course
Modalità di esame: Prova orale obbligatoria; Elaborato progettuale individuale;
Exam: Compulsory oral exam; Individual project;
...
L'esame consiste nella verifica delle conoscenze e delle abilità descritte nei campi sopra. Tale verifica sarà effettuata tramite lo sviluppo di un progetto individuale, seguito da una discussione orale. Il progetto consisterà nella creazione di un'applicazione web utilizzando le conoscenze acquisite durante il corso. Per ogni sessione di esame, un esercizio sarà assegnato 20 giorni prima la data dell'esame stesso. Solo gli studenti che invieranno la loro soluzione prima della scadenza saranno ammessi alla discussione orale. L'applicazione web è valutata dai docenti, che verificheranno la sua funzionalità e le tecniche di programmazione adottate secondo delle specifiche che dipenderanno dallo specifico esame. La conoscenza dettagliata del codice sorgente consegnato sarà verificata durante l'esame orale, insieme all'abilità di discutere il progetto alla luce degli argomenti trattati nel corso stesso.
L'intero processo di assegnazione del progetto, sviluppo e consegna finale sarà gestita dalla piattaforma GitHub. L'esame orale si svolgerà in un'aula o in un laboratorio.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Compulsory oral exam; Individual project;
Exam modality: mandatory oral colloquium to discuss the individual project.
The exam consists in the verification of the above described expected knowledge and practical skills, through a practical test, followed by an oral discussion. The test consists in creating a web application using the knowledge gained in the course.
For the test, an exercise will be assigned about 3 weeks in advance of each exam date. Only students who submit their solution before the deadline are admitted to the oral test.
The web application is evaluated by the teacher during the oral session, by verifying the functionality of the web application, the adopted programming techniques, according to a checklist that depends on the test. The detailed knowledge of the submitted source code by the student is also checked, with his ability to discuss the project in light of the course topics.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.