Zaawansowana Java 1000-2M22ZJ
Celem tego przedmiotu jest zapoznanie studentów z zaawansowanymi aspektami języka Java (refleksja, anotacje, classloadery, dynamic proxy) oraz ich praktyczne użycie w bibliotekach i frameworkach.
W ramach wykładu zapoznamy się z budową kontenera servletów i postaramy się go zaimplementować w kilkuosobowych zespołach. Następnie przetestujemy go wydajnościowo, postaramy się ustalić wąskie gardła (bottleneck) naszego rozwiązania i poprawić jego wydajność (performance tuning). Nie będziemy używać gotowych rozwiązań i bibliotek, tylko wzorując się na istniejących implementować własne w Java SE.
Podobnie dla specyfikacji jax-rs i jpa – zaimplementujemy uproszczoną wersję biblioteki wspierającej tworzenie serwisów restowych oraz oraz rozwiązania wpierającego mapowanie obiektowo relacyjne (ORM).
Wszystko to z wykorzystaniem git, testów jednostkowych, integracyjnych i CI/CD.
W części laboratoryjnej sprawdzimy jak sztuczna inteligencja oparta na sieci neuronowej lub algorytmie genetycznym daje sobie radę w walce na https://www.codingame.com/multiplayer/bot-programming z programami opartymi na heurystykach, Minimaxie lub metodzie Monte Carlo.
Rodzaj przedmiotu
Efekty kształcenia
Wiedza:
* Zna szczegółowo wybrane narzędzie lub język programowania [K_W02, K_W09, K_W10].
Umiejętności:
* Umie pozyskiwać informacje z literatury, baz wiedzy, Internetu oraz innych wiarygodnych źródeł, integrować je, dokonywać ich interpretacji oraz wyciągać wnioski i formułować opinie (K_U02)
* Umie samodzielnie planować i realizować własne uczenie się przez całe życie (K_U09).
* Umie ocenić, na podstawowym poziomie, przydatność rutynowych metod i narzędzi informatycznych oraz wybrać i zastosować właściwą metodę i narzędzia do typowych zadań informatycznych (K_U18).
* Umie planować i organizować pracę indywidualnie i w zespole, także o charakterze interdyscyplinarnym; zarządzać swoim czasem oraz podejmować zobowiązania i dotrzymywać terminów (K_U29).
Kompetencje społeczne:
* Student jest gotów do krytycznej oceny posiadanej wiedzy i odbieranych treści (K_K01).
* Student jest gotów do pracy z zachowaniem uczciwości intelektualnej w działaniach własnych i innych osób; przestrzegania zasad etyki zawodowej i wymagania tego od innych oraz dbałości o dorobek i tradycje zawodu informatyka (K_K02).
* Student jest gotów do uznawania znaczenia wiedzy w rozwiązywaniu problemów poznawczych i praktycznych oraz wyszukiwania informacji w literaturze oraz zasięgania opinii ekspertów (K_K03).
Kryteria oceniania
Zaliczenie wykładu:
poprzez zespołowe napisanie serwera webowego zbliżonego do kontenera servletów, biblioteki wspierającej tworzenie serwisów restowych oraz biblioteki wspierającej mapowanie obiektowo relacyjne.
Zaliczenie laboratorium:
poprzez napisanie kilku małych programów (5-6) grających na https://www.codingame.com/multiplayer/bot-programming
Literatura
JSR 340: Java Servlet 3.1 Specification
JSR-000370 Java API for RESTful Web Services 2.1 Specification Final Release
JSR 338: JavaTM Persistence 2.2
Więcej informacji
Więcej informacji o poziomie przedmiotu, roku studiów (i/lub semestrze) w którym się odbywa, o rodzaju i liczbie godzin zajęć - szukaj w planach studiów odpowiednich programów. Ten przedmiot jest związany z programami:
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: