2022-10-03 17:20:57 +02:00
|
|
|
|
# Zajęcia laboratoryjne z programowania grupa nr 11 studia zaoczne 2022/2023
|
|
|
|
|
|
|
|
|
|
# Cele przedmiotu
|
|
|
|
|
|
|
|
|
|
Celem przedmiotu jest zapoznanie studentów z procesem pracy nad złożonym serwisem internetowym
|
|
|
|
|
z uwzględnieniem różnych jego aspektów (przetwarzanie danych, współpraca z bazą danych,
|
|
|
|
|
komunikacja sieciowa, wymiana informacji pomiędzy różnymi elementami systemu informatycznego,
|
|
|
|
|
interfejs użytkownika). W ramach przedmiotu studenci wykonują samodzielnie różne podmoduły projektu,
|
|
|
|
|
które ostatecznie integrują w jeden złożony serwis.
|
|
|
|
|
|
|
|
|
|
Student otrzymuje dowolność w wyborze technologii, z której będzie korzystał w celu wykonania
|
|
|
|
|
projektu, ale ma także możliwość wyboru ścieżki wyznaczonej przez prowadzącego. Przedmiot oceniany
|
|
|
|
|
jest na podstawie indywidualnych obron projektów.
|
|
|
|
|
|
|
|
|
|
# Wymagania wstępne w zakresie wiedzy, umiejętności oraz kompetencji społecznych
|
|
|
|
|
|
|
|
|
|
Wymagania: Znajomość zasad programowania obiektowego, wiedza z zakresu: Technologii Internetowych,
|
|
|
|
|
Systemów Operacyjnych, Baz Danych. Umiejętność pracy z materiałami dodatkowymi, samodzielnego
|
|
|
|
|
pozyskiwania informacji i analizy przykładów.
|
|
|
|
|
|
2022-10-03 18:53:34 +02:00
|
|
|
|
# Zagadnienia poruszane na laboratorium
|
|
|
|
|
|
|
|
|
|
1. Przygotowanie środowiska programistycznego:
|
|
|
|
|
- utworzenie repozytorium,
|
|
|
|
|
- wybór edytora kodu źródłowego,
|
|
|
|
|
- logowanie komunikatów.
|
|
|
|
|
- pomiar pokrycia kodu testami,
|
|
|
|
|
- automatyczna weryfikacja kodu,
|
|
|
|
|
- automatyzacja (zapewnienie testowania, kompilowania, pomiaru pokrycia kodu i jego weryfikacji,
|
|
|
|
|
oraz budowy artefaktów programistycznych za pomocą jednego polecenia),
|
|
|
|
|
|
|
|
|
|
2. Programowanie sterowane przez testy:
|
|
|
|
|
- rodzaje testów,
|
|
|
|
|
- testy jednostkowe:
|
|
|
|
|
- Red-Green-Refactor;
|
|
|
|
|
- testy behawioralne;
|
|
|
|
|
- asercje;
|
|
|
|
|
- mockowanie;
|
|
|
|
|
- testy sparametryzowane,
|
|
|
|
|
- testy eksploracyjne,
|
|
|
|
|
- debuggowanie kodu:
|
|
|
|
|
- dobre praktyki,
|
|
|
|
|
- krokowe uruchamianie programu,
|
|
|
|
|
- przerwania warunkowe,
|
|
|
|
|
- zdalne debuggowanie.
|
|
|
|
|
|
|
|
|
|
3. Paradygmat programowania funkcyjnego:
|
|
|
|
|
- logika predykatów,
|
|
|
|
|
- funkcje i ich składanie,
|
|
|
|
|
- wyrażenia lambda,
|
|
|
|
|
- wzorzec projektowy map-reduce,
|
|
|
|
|
- wzorzec projektowy Maybe (wartości opcjonalne) i obsługa wartości `null`,
|
|
|
|
|
- wzorzec projektowy Try: obsługa wyjątków,
|
|
|
|
|
- wzorzec projektowy Either i Railway Oriented Programming,
|
|
|
|
|
- algorytm dziel i zwyciężaj na przykładzie wielowątkowego przetwarzania strumieniowego.
|
|
|
|
|
|
|
|
|
|
4. Serializacja i deserializacja danych:
|
|
|
|
|
- wczytywanie i zapisywanie danych w XML,
|
|
|
|
|
- wczytywanie i zapisywanie danych w JSON.
|
|
|
|
|
|
|
|
|
|
5. Mapowanie obiektowo-relacyjne (ORM):
|
|
|
|
|
- obiekty do transferu danych (DTO),
|
|
|
|
|
- obiekty dostępu do danych (DAO),
|
|
|
|
|
- model CRUD,
|
|
|
|
|
- optymalizacja dostępu (natywne zapytania SQL).
|
|
|
|
|
|
|
|
|
|
6. Usługi sieciowe:
|
|
|
|
|
- dostęp do zewnętrznych usług sieciowych REST:
|
|
|
|
|
- z linii poleceń (curl);
|
|
|
|
|
- z dedykowanej aplikacji klienckiej;
|
|
|
|
|
- z własnoręcznie napisanego kodu,
|
|
|
|
|
- tworzenie usług sieciowych w oparciu o REST API:
|
|
|
|
|
- metody dostępu (GET, POST, PUT, DELETE);
|
|
|
|
|
- obsługa nieprawidłowych żądań: kody błędów;
|
|
|
|
|
- obsługa różnych formatów wartości zwracanej,
|
|
|
|
|
- obsługa generowania pliku "w locie",
|
|
|
|
|
- obsługa wgrywania plików na serwer.
|
|
|
|
|
|
|
|
|
|
7. Serwery aplikacji:
|
|
|
|
|
- osadzanie aplikacji,
|
|
|
|
|
- monitorowanie osadzonej aplikacji,
|
|
|
|
|
- debuggowanie aplikacji (patrz zdalne debuggowanie).
|
|
|
|
|
|
|
|
|
|
8. Interfejs użytkownika:
|
|
|
|
|
- serwowanie plików statycznych,
|
|
|
|
|
- obsługa odwołań i przekierowań,
|
|
|
|
|
- integracja z zewnętrznym frameworkiem.
|
|
|
|
|
|
|
|
|
|
9. Integracja usług sieciowych:
|
|
|
|
|
- zabezpieczanie usług OAuth,
|
|
|
|
|
- autoryzacja i korzystanie z zewnętrznych usług.
|
|
|
|
|
|
|
|
|
|
# Kryteria zaliczenia
|
|
|
|
|
|
|
|
|
|
Zaliczenie zajęć polega na (inkrementalnym!) przygotowaniu projektu, który
|
|
|
|
|
pokrywa zagadnienia poruszane na zajęciach.
|