Choć frontend jest nieodłączną częścią większości aplikacji webowych, to proces jego wytwarzania znacząco zmienił się w ostatnich latach. Gwałtowny rozwój frameworków, bibliotek i preprocesorów sprawił, że programiści borykają się dziś z zupełnie innymi problemami niż jeszcze dekadę temu. Za zmianami ciężko jest nadążyć, nic więc dziwnego, że wiele osób nie rozumie z czym wiąże się rola Frontend Developera.
Wykład ma na celu przybliżyć słuchaczom tę rolę i związane z nią odpowiedzialności, a także przekazać wiedzę umożliwiającą wytworzenie pierwszych frontendowych aplikacji. Poruszymy zarówno aspekty techniczne jak i te bardziej teoretyczne, by nie zależeć od konkretnych rozwiązań.
Program przedmiotu będzie oparty na [Roadmapie Frontendowej](https://roadmap.sh/frontend). Przejdziemy przez interesujący podzbiór zagadnień, gdzieniegdzie dorzucając dodatkowe tematy.
Poniższa lista tematów jest orientacyjna. W zależności od potrzeb, na niektóre z nich poświęcimy więcej (lub mniej) czasu.
1. Podstawy działania Internetu
1. HTML
* Podstawy HTML
* Dobre praktyki i konwencje
* Formularze i walidacja
1. CSS
* Podstawy CSS
* Tworzenie Layoutu: Float, Grid, Flexbox, Positioning, Box Model
* Responsywny design
* Preprocesory CSS
* BEM
1. JavaScript
* Podstawy JavaScriptu
* Manipulacja DOM
* ES6+
* Zaawansowane pojęcia: Hoisting, Event Bubbling, Scope, Prototype, Shadow DOM
* Event Loop
* TypeScript
1. Komunikacja z Backendem
* REST, *SOAP?*, *GraphQL?*
1. Menadżer Pakietów
1. Narzędzia
* Bundlery: Webpack, EsBuild
* NPM
* Lintery i formatery
1. Frameworki/Biblioteki
* Przegląd dostępnych opcji
* Podstawy React'a
1. Nowoczesny CSS
* Styled Components
* CSS Modules
* Frameworki CSS: Material, Bootstrap, inne?
1. Testowanie Aplikacji
1. Optymalizacja
*Wymagania: podstawowa umiejętność programowania, podstawowa znajomość dowolnego systemu kontroli wersji*