# Web Applications I / Applicazioni Web I (2019/2020)


Material for the course of Web Applications I (in English) and Applicazioni Web I (in Italian) for the Master Degree in Computer Engineering at Politecnico di Torino.


## Course information


Detailed information about the course is available in the dedicated web pages.

| Resource | Web Applications I | Applicazioni Web I |
|---------|---|--------|
| Course website | <http://bit.ly/polito-wa1> | <http://media.polito.it/aw1> |
| YouTube Playlist | [:arrow_forward:](https://www.youtube.com/playlist?list=PLqRTLlwsxDL-e9RexPadqEVaaUgy-Ge8O)|  [:arrow_forward:](https://www.youtube.com/playlist?list=PLuZyhAOPm9pMSXjyRc83gBSUqHIkIE564)|
| GitHub repositories | <https://github.com/polito-WA1-2020> | <https://github.com/polito-WA1-2020> |

## Slides

* [Introduction to the course (English)](./slide/00-Intro-2020-Corno.pdf)
* [Introduction to the course (Italian)](./slide/00-Intro-2020-Masala.pdf)

Javascript

* [Introduction to JavaScript (part 1)](./slide/1-01-javascript-part1.pdf)
* [Introduction to JavaScript (part 2)](./slide/1-02-javascript-part2.pdf)
* [JavaScript exercises](./slide/1-03-javascript-exercises-part1.pdf)
* [Asynchronouos JavaScript programming](./slide/1-04-javascript-async.pdf)
* [Functional Programming in JS](./slide/1-05-javascript-functional.pdf)
* [Prototypes, Classes and Modules](./slide/1-06-javascript-classes.pdf)
* [The 'this' keyword](./slide/1-07-javascript-this.pdf)

Browsers and client-side applications

* [Web Architecture](./slide/2-01-web-architecture.pdf)
* [HTML - a quick introduction](./slide/2-02-html.pdf)
* [CSS](./slide/2-03-css.pdf)
* [JavaScript in the Browser](./slide/2-04-browser_JS_DOM.pdf)
* [HTML5 Forms](./slide/2-05-HTML5_forms.pdf)
* [Fetch API](./slide/2-06-Fetch.pdf)

Web Servers and server-side APIs

* [HTTP](./slide/3-01-HTTP.pdf)
* [Express web server](./slide/3-02-Express.pdf)
* [REST API](./slide/3-03-REST.pdf)
* [CORS](./slide/3-04-CORS.pdf)

React

* [Introduction to React](./slide/4-01-React-intro.pdf)
* [Components, Elements, JSX](./slide/4-02-Components-and-JSX.pdf)
* [Context, Life Cycle, Forms](./slide/4-03-Context-LifeCycle-Forms.pdf)
* [Client-Server interactions](./slide/4-04-Client-Server-React.pdf)
* [React Router](./slide/4-05-React-Router.pdf)
* [JWT - JSON Web Token](./slide/4-06-JWT.pdf)
* [React Hooks](./slide/4-07-Hooks.pdf)



## Laboratories

* [Lab 1: Getting Started with Node.js](./labs/L01-getting-started-node.pdf)
* [Lab 2: Getting Started with HTML and CSS](./labs/L02-getting-started-html-css.pdf)
* [Lab 3: JavaScript in the Browser](./labs/L03-javascript-browser.pdf)
* [Lab 4: More JavaScript in the Browser](./labs/L04-more-javascript-browser.pdf)
* [Lab 5: REST with Express](./labs/L05-express.pdf)
* [Lab 6: Interacting with REST API](./labs/L06-fetch.pdf)
* [Lab 7: Getting started with React](./labs/L07-getting-started-react.pdf)
* [Lab 8: React: State and Life Cycle](./labs/L08-react-state-life-cycle.pdf)
* [Lab 9: React meets REST API](./labs/L09-react-fetch.pdf)
* [Lab 10: Task Manager App - The End](./labs/L10-login-routes.pdf)
