06-ZPRPLI0/README.md

3.6 KiB

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.

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),
  1. 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.
  1. 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.
  1. Serializacja i deserializacja danych:
  • wczytywanie i zapisywanie danych w XML,
  • wczytywanie i zapisywanie danych w JSON.
  1. Mapowanie obiektowo-relacyjne (ORM):
  • obiekty do transferu danych (DTO),
  • obiekty dostępu do danych (DAO),
  • model CRUD,
  • optymalizacja dostępu (natywne zapytania SQL).
  1. 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.
  1. Serwery aplikacji:
  • osadzanie aplikacji,
  • monitorowanie osadzonej aplikacji,
  • debuggowanie aplikacji (patrz zdalne debuggowanie).
  1. Interfejs użytkownika:
  • serwowanie plików statycznych,
  • obsługa odwołań i przekierowań,
  • integracja z zewnętrznym frameworkiem.
  1. 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.