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 jest oparta o poprzednią edycję wykładu, w zależności od potrzeb może ulec zmianie.
1. Wstęp, działanie internetu i HTML
1. Podstawy CSS: Box model, Składnia, Selektory, Kaskada stylów, Jednostki
1. Layout: Display, Pozycjonowanie, z-index, Float, Flex, Grid
1. Organizacja stylów (BEM), responsywność (historia i praktyka) i formularze
1. Podstawy JS: Historia, cechy charakterystyczne, typy, funkcje, obiekty, arraye, JSDoc
1. Zaawansowane koncepcje JS: This, Funkcyjny JS, Scope, Hoisting, Klasy, Error Handling i Asynchroniczność
1. Manipulacja DOM: Działanie przeglądarek, zarządzanie DOM i obsługa Eventów
1. Połączenie z API: Teoria, Fetch, Cookies, LocalStorage, CORS
1. TypeScript i NPM: Motywacja, podstawy typowania
1. Modułowość JSa, Bundlery i Transpilery
1. Framework: React
1. Framework: Vue
1. CSS-in-JS vs Preeprocesory vs Tailwind
1. Biblioteki komponentów: podejścia
1. Testowanie
*Wymagania: podstawowa umiejętność programowania, podstawowa znajomość dowolnego systemu kontroli wersji*