diff --git a/README.md b/README.md index 0a2df3c..eb6af87 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Zajęcia laboratoryjne z programowania grupa nr 11 studia zaoczne 2022/2023 -# Cele przedmiotu +## 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, @@ -8,17 +8,17 @@ komunikacja sieciowa, wymiana informacji pomiędzy różnymi elementami systemu 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 +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 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 +## Zagadnienia poruszane na laboratorium 1. Przygotowanie środowiska programistycznego: - utworzenie repozytorium, @@ -81,16 +81,58 @@ oraz budowy artefaktów programistycznych za pomocą jednego polecenia), - monitorowanie osadzonej aplikacji, - debuggowanie aplikacji (patrz zdalne debuggowanie). -8. Interfejs użytkownika: +8. Interfejs użytkownika i logika biznesowa: - serwowanie plików statycznych, - obsługa odwołań i przekierowań, -- integracja z zewnętrznym frameworkiem. +- integracja z zewnętrznym frameworkiem, +- warstwa logiki biznesowej. 9. Integracja usług sieciowych: - zabezpieczanie usług OAuth, - autoryzacja i korzystanie z zewnętrznych usług. -# Kryteria zaliczenia +## Kryteria zaliczenia Zaliczenie zajęć polega na (inkrementalnym!) przygotowaniu projektu, który -pokrywa zagadnienia poruszane na zajęciach. +pokrywa zagadnienia poruszane na zajęciach: +- Zagadnienia 1-3 – 20% oceny (20 punktów do zdobycia), +- Zagadnienia 4-6 – 40% oceny (40 punktów do zdobycia), +- Zagadnienia 7-9 – 40% oceny (40 punktów do zdobycia). + +### Dodatkowe punkty + +Dodatkowe punkty można zyskać za: +- aktywność na zajęciach, +- prawidłową dekompozycję kodu: + - segregacja interfejsów; + - kohezja na poziomie klasy i metody; + - konsekwentną i logiczną organizację kodu w pakiety (np. zastosowanie Domain Driven Design), +- czystość kodu (ang. Clean Code): + - odpowiednie (ang. meaningful), anglojęzyczne nazwy zmiennych, metod, klas i pakietów; + - posortowanie atrybutów i metod według kolejności użycia lub wywołania; + - minimalizację liczby parametrów wywołania metod (lub funkcji); + - powstrzymanie się od korzystania z efektów ubocznych, niemutowalność; + - upewnienie się że metoda i klasa robi jedną rzecz (patrz kohezja); + - odpowiednią liczbę metod publicznych w klasie (do siedmiu); + - właściwą liczbę linii kodu w metodzie (5 +/- 2, przy czym strumienie należy liczyć jako jedną linię), +- stosowanie zasad: + - SOLID; + - YAGNI/KISS; + - DRY, +- zastosowanie wzorców projektowych nieujętych w zagadnieniach (Uwaga! Tam gdzie to ma sens), +- zastosowanie metodologii Test Driven Development, szczególnie w odmianie Behavior-Driven Development, +- zastosowanie paradygmatu funkcyjnego wszędzie gdzie się da. + + +### Oceny + + +| Punkty | Ocena | +|:------:|:-----:| +| do 50 | niedostateczny (2.0 | +| 51 do 60 | dostateczny (3.0) | +| 61 do 70 | dostateczny plus (3.5) | +| 71 do 80 | dobry (4.0) | +| 81 do 90 | dobry plus (4.5) | +| powyżej 90 | bardzo dobry (5.0) | +