|
Liczba godz.
|
Nazwa przedmiotu (kod)
|
Treść przedmiotu
|
Wyk
|
Ćwi
|
∑
|
SEMESTR 1
|
|
|
|
|
---|
Podstawy programowania w Javie ( PPJ )
|
Ogólna charakterystyka języka, nowe podejście do przenośności i bezpieczeństwa kodu. Kompilacja i wykonanie, program źródłowy, kod bajtowy, maszyna wirtualna. Ewolucja języka, obecny status biznesowy technologii Java. Zarządzanie projektem. Komponowanie programu, klasy, metody, deklaracje, instrukcje, wyrażenia. Konwencje nazewnicze. Reguły gramatyczne: poziom leksykalny i składnia bezkontekstowa. Słowa kluczowe, identyfikatory, literały, operatory, separatory i ograniczniki. Operacje we/wy oraz wyrażenia i instrukcje. Konwersje. Statyczna kontrola typów. Deklarowanie i inicjowanie zmiennych/obiektów, cykl życia. Klasa String. Współpraca z konsolą. Obliczenia na typach prymitywnych, instrukcje wyrażeniowe, przypisania. Przetwarzanie tablic, iteracje while, do, dwie wersje instrukcji for; instrukcje sterujące. Przetwarzanie łańcuchów znakowych. Definiowanie klasy, składowe instancyjne, składniki statyczne. Specyfikacje dostępności. Definiowanie metod, parametryzacja, przeciążanie. Konstruktory. Dziedziczenie rozszerzające klasy, klasa bazowa implikowana Object, polimorfizm metod. Jednoczesne dziedziczenie rozszerzające i dziedziczenie ról. Eksplorowanie środowiska Java. Komentowanie. Dokumentacja pakietów i klas platformy. Narzędzia pomocnicze w JDK.
|
6
|
10
|
16
|
Programowanie obiektowe ( OBI )
|
Odnośniki. Używanie klas predefiniowanych. Tworzenie własnych klas. Relacje pomiędzy klasami. Dostępność. Enkapsulacja. Konstruktory: bezargumentowy, przeciążony, wywołanie. Metody. Przeciążanie metod. Inicjacja pól. Pola i metody statyczne. Stałe statyczne. Metoda main(). Metody fabryczne. Niszczenie obiektów. Importowanie klas, dodawanie klasy do pakietu, zasięg. Komentarze dokumentacyjne. Wskazówki dotyczące projektowania klas. Klasy bazowe i pochodne. Hierarchia dziedziczenia. Polimorfizm. Wiązanie dynamiczne. Ograniczenie. Rzutowanie. Klasy i metody abstrakcyjne. Klasy wyliczeniowe. Wskazówki dotyczące dziedziczenia. Klasa Class. Analiza funkcjonalności. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Interfejsy i klasy wewnętrzne. Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do stanu obiektu. Lokalne klasy zewnętrzne. Dostęp do zmiennych finalnych z metod zewnętrznych. Anonimowe klasy wewnętrzne. Statyczne klasy wewnętrzne.
|
12
|
20
|
32
|
Programowanie zdarzeniowe ( ZDA )
|
Podstawy obsługi zdarzeń. Pojęcie zdarzenia. Klasy i obiekty słuchaczy. Rejestracja słuchaczy. Obsługa naciśnięcia przycisku. Rozpoznawanie obiektu zdarzenia. Zastosowanie klas anonimowych do implementacji słuchacza zdarzeń. Zdarzenia semantyczne. Zaawansowana obsługa zdarzeń. Hierarchia zdarzeń. Przechwytywanie zdarzeń okna. Obsługa kliknięcia myszy. Typy zdarzeń niskiego poziomu. Zdarzenia dotyczące myszki. Zdarzenia klawiatury. Multicasting. Kolejka zdarzeń. Definiowanie własnych zdarzeń.
|
6
|
10
|
16
|
Interfejs użytkownika ( INU )
|
Prezentacja aplikacji z graficznym interfejsem użytkownika – przegląd możliwości. Przegląd podstawowych elementów interfejsu użytkownika wraz ze sposobami ich wykorzystania (m.in. pola wyboru, przełączniki, listy, suwaki). Projektowanie formularzy i okienek dialogowych. Metody projektowania i rozmieszczania elementów w oknach dialogowych. Wykorzystanie paneli. Tworzenie menu. Obsługa zdarzeń. Architektura Model-View-Controller. Serializacja. Zaawansowane elementy interfejsu użytkownika. Tworzenie elementów interfejsu użytkownika z niestandardową zawartością. Rysowanie. Obsługa ikon i czcionek, rysowanie dowolnych elementów, prosta animacja.
|
12
|
20
|
32
|
Produkcja i testowanie oprogramowania ( PTE )
|
Strategie produkcji oprogramowania. Tworzenie testów z testowaniem istniejącego kodu, wytwarzanie sterowane testami. Testowanie jednostkowe i integracyjne. Projektowanie testów: przypadek testowy (dane testowe, wyrocznia). Testy jednostkowe w Javie (annotacje, asercje) organizacja i uruchamianie z JUnit. Dobre praktyki testowania jednostkowego. Wybrane metody testowania oprogramowania, kryteria wyboru testów, testy białej i czarnej skrzynki, klasy równoważności, pokrycie strukturalne kodu. Proces testowania, testy hierarchii obiektów, testy GUI, testy systemowe, testy regresyjne, akceptacyjne. Wykorzystanie dublerów w wytwarzaniu i testowaniu kodu. Poprawa jakości kodu. Wzorce projektowe. Refaktoryzacja kodu, zapachy w kodzie, przykładowe przekształcenia refaktoryzacyjne.
|
6
|
10
|
16
|
Projekt przejściowy ( PRP )
|
Celem przedmiotu jest wykorzystanie w praktyce i utrwalenie wiedzy zdobytej w trakcie semestru. Słuchacz pod koniec semestru pisze i samodzielnie uruchamia w laboratorium program pod opieką prowadzącego przedmiot. Przykładowe programy to: kalkulator, zegar, edytor figur graficznych itp. Słuchacz ma zrealizować zadaną funkcjonalność. Zasadą jest, że słuchacz wykonuje projekt pod bezpośrednim nadzorem prowadzącego, który dodatkowo robi specjalny przegląd postępów po dwunastej godzinie projektu. Celem jest stworzenie warunków zachęcających słuchaczy do samodzielności działania, bez korzystania z pomocy innych słuchaczy.
|
--
|
16
|
16
|
w semestrze
|
128
|
|
Liczba godz.
|
Nazwa przedmiotu (kod)
|
Treść przedmiotu
|
WYK
|
ĆWI
|
∑
|
SEMESTR 2
|
|
|
|
|
---|
Struktury danych ( STD )
|
Obiekty, typy, struktury danych, metody agregowania; struktury statyczne i dynamiczne, liniowe, drzewiaste, grafowe. Ocenianie złożoności pamięciowej i czasowej struktur i operacji na nich. Krotki, wektory, listy, stosy, kolejki i kopce; operacje; interfejsy struktur liniowych. Algorytmy rekurencyjne, przykłady problemów i rozwiązań; drzewa, rekurencyjne scenariusze eksploracji; drzewa binarne szukania, zrównoważone. zbiory i drzewa, operacje na zbiorach rozłącznych. Interfejsy. Sortowanie. Przegląd algorytmów, złożoność pesymistyczna i oczekiwana. Grafy skierowane, nieskierowane, ważone, koszt reprezentacji, operacje zwiedzania w głąb i wszerz; badanie właściwości, metoda zachłanna, programowanie dynamiczne; wyznaczanie minimalnego drzewa rozpinającego, najkrótsze ścieżki w grafie.
|
6
|
10
|
16
|
Aplikacje w technologii Java EE ( ATJ )
|
Aplikacje internetowe w technologii Java. Protokół HTTP. Serwlety. JSP. Kontenery serwletów i kontenery ziaren. Technologie JSF. Mechanizm odwróconego sterowania, wstrzykiwanie zależności, konteksty. Sewery aplikacji Java EE i ziarna. Typy ziaren, metody implementacji. Wykorzystanie adnotacji. Sposoby testowania. Konfiguracja serwerów aplikacji. Metody uwierzytelniania, typowe zagrożenia i metody zabezpieczeń. Technologia JMS. Wykorzystanie komunikatów. Rozgłaszanie. Ziarenka sterowane komunikatami. Usługi internetowe. Metody implementacji usług.
|
12
|
20
|
32
|
Wybrane elementy technologii Java ( WET )
|
Wielowątkowość. Procesy i wątki: uruchamianie i przerywanie. Zagrożenia współbieżnego wykonania, wyścig, zakleszczenie. Struktury danych wspierające bezpieczne wątki. Stany i właściwości wątków. Mechanizmy synchronizacji, blokady, warunki. Egzekutory i synchronizatory. Bezpieczeństwo. Przegląd mechanizmów zapewniających bezpieczeństwo. Ładowanie klas. Weryfikacja kodu maszyny wirtualnej. Zarządzanie bezpieczeństwem operacji wykonywanych na maszynie wirtualnej, zbiory pozwoleń, udzielanie pozwoleń. Mechanizm podpisywania apletów, podpis cyfrowy, certyfikaty. Podpisywanie kodu. Szyfrowanie, szyfrowanie symetryczne, szyfrowanie kluczem publicznym.
|
6
|
10
|
16
|
Obsługa baz danych ( OBD )
|
Podstawowe pojęcia: baza danych, system zarządzający, tabele, relacje, zapytanie itp. oraz podstawy działania systemów baz danych. Podstawy języka SQL. Wprowadzenie do tworzenia zapytań. Zapytania zwykłe, manipulujące danymi oraz definiujące i kontrolujące dane. Budowanie złożonych zapytań. Dostęp do baz danych ze środowiska Java. Architektura JDBC, zestawianie połączenia z bazą danych, wykonywanie przedstawionych wcześniej zapytań z poziomu kodu. Zaawansowane pojęcia baz danych. Konfigurowanie środowiska do współpracy z bazą danych. Transakcje i wycofywanie zmian.
|
6
|
10
|
16
|
Projekt końcowy ( PRK )
|
Projekt końcowy polega na samodzielnym napisaniu, uruchomieniu i udokumentowaniu programu wykorzystującego technologie poznane na drugim semestrze. Projekt końcowy kończy się prezentacją wyników przed komisją oceniającą oraz grupą słuchaczy. Projekt końcowy może być realizowany w zespołach 2-3 osobowych pod warunkiem precyzyjnego udokumentowania wkładu pracy każdego z członków zespołu, aby możliwe było wystawienie niezależnej oceny każdej z osób. Przykładowa tematyka projektu końcowego: planszowe gry sieciowe, komunikator, radio internetowe, przeglądarka zdjęć. Załącznik:
|
--
|
32
|
32
|
w semestrze
|
112
|
Razem
| 240
|
|