
Informacje podstawowe
- Kierunek studiów
- Informatyka (kierunek wspólny - WI)
- Specjalność
- -
- Jednostka organizacyjna
- Wydział Informatyki
- Poziom kształcenia
- Studia inżynierskie I stopnia
- Forma studiów
- Stacjonarne
- Profil studiów
- Ogólnoakademicki
- Cykl dydaktyczny
- 2022/2023
- Kod przedmiotu
- WIINFS.Ii20.02816.22
- Języki wykładowe
- polski
- Obligatoryjność
- Obowiązkowy
- Blok zajęciowy
- Przedmioty ogólne
- Przedmiot powiązany z badaniami naukowymi
- Tak
|
Okres
Semestr 6
|
Forma zaliczenia
Egzamin
Forma prowadzenia i godziny zajęć
Wykład:
30
Ćwiczenia laboratoryjne: 30 |
Liczba punktów ECTS
4
|
Efekty uczenia się dla przedmiotu
| Kod | Efekty w zakresie | Kierunkowe efekty uczenia się | Metody weryfikacji |
| Wiedzy – Student zna i rozumie: | |||
| W1 | Posiada szczegółową wiedzę w zakresie budowy i implementacji systemów działających w rozproszonym środowisku sieciowym. | INF1A_W04 | Egzamin |
| W2 | Ma elementarną wiedzę na temat cyklu życia systemów komputerowych | INF1A_W04 | Egzamin |
| W3 | Orientuje się w obecnym stanie oraz najnowszych trendach rozwojowych informatyki. | INF1A_W02 | Egzamin |
| Umiejętności – Student potrafi: | |||
| U1 | Potrafi tworzyć efektywne aplikacje pracujące w rozproszonych systemach komputerowych. | INF1A_U07, INF1A_U10 | Wykonanie ćwiczeń laboratoryjnych |
| U2 | Potrafi projektować i implementować oprogramowanie. | INF1A_U05 | Wykonanie ćwiczeń laboratoryjnych |
| U3 | Potrafi ocenić istniejące oprogramowanie, wskazać możliwości jego poprawy i ulepszenia | INF1A_U10 | Aktywność na zajęciach, Wykonanie ćwiczeń laboratoryjnych |
| Kompetencji społecznych – Student jest gotów do: | |||
| K1 | Potrafi odpowiednio określić priorytety służące realizacji określonego przez siebie lub innych zadania oraz adekwatnie zaplanować pracę. | INF1A_K03, INF1A_K04 | Udział w dyskusji, Wykonanie ćwiczeń laboratoryjnych |
Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć
Nakład pracy studenta
| Rodzaje zajęć studenta | Średnia liczba godzin* przeznaczonych na zrealizowane aktywności | |
| Wykład | 30 | |
| Ćwiczenia laboratoryjne | 30 | |
| Przygotowanie do zajęć | 20 | |
| Samodzielne studiowanie tematyki zajęć | 30 | |
| Egzamin lub kolokwium zaliczeniowe | 2 | |
| Dodatkowe godziny kontaktowe | 5 | |
| Łączny nakład pracy studenta |
Liczba godzin
117
|
|
| Liczba godzin kontaktowych |
Liczba godzin
60
|
|
* godzina (lekcyjna) oznacza 45 minut
Treści programowe
| Lp. | Treści programowe | Efekty uczenia się dla przedmiotu | Formy prowadzenia zajęć |
| 1. |
# *Gniazda (4 godz.). Cechy protokołów TCP/UDP.* Zastosowanie portów, definicja gniazda i asocjacji. Kolejność bajtów w przesyle danych liczbowych (Big endian / Little endian). Podstawy programowania gniazd w językach Java i Python. Przykład aplikacji klient-serwer z użyciem protokołów TCP oraz UDP. Zaprojektowanie i implementacja aplikacji do komunikacji sieciowej z użyciem gniazd TCP oraz UDP. # *Komunikacja grupowa (4 godz.).*Definicja problemu. Koncepcja wirtualnej synchroniczności. Problem porządkowania wiadomości. JGroups jako przykład realizacji wirtualnej synchroniczności. Implementacja przykładowej aplikacji. # *Samodzielne prace praktyczne (2 godz.).* - sprawdzenie wiadomości. # *Message Oriented Middleware (MOM) (4 godz.).* Modele komunikacji - synchroniczna oraz asynchroniczna. Cechy komunikacji opartej o wiadomości. RabbitMQ jako przykład realizacji MOM. Cechy i elementy składowe, nawiązywanie połączeń, deklaracja kolejek, publikowanie oraz konsumowanie wiadomości. Niezawodność oraz load-balancing, metody routingu wiadomości. Zaprojektowanie oraz implementacja zaawansowanej aplikacji wykorzystującej poznane mechanizmy RabbitMQ. # *Technologie middleware (4 godz.).* Przeźroczystość w kontekście technologii middleware. OO middleware i RPC middleware. Języki definiowania interfejsów technologii middleware. Technologie Zeroc Ice, Apache Thrift i gRPC - podstawowe informacje, porównanie i prosta aplikacja klient-serwer. Zaprojektowanie, implementacja i demonstracja zaawansowanej aplikacji wykorzystującej middleware. # *Samodzielne prace praktyczne (2 godz.).* - sprawdzenie wiadomości. # *Systemy reaktywne (4 godz.).* Cechy systemów reaktywnych według The Reactive Manifesto. Akka jako przykład platformy do budowy systemów reaktywnych. Cechy platformy Akka. Cechy, hierarchia, cykl życia aktorów. Referencje oraz ścieżki do aktorów, transparentność lokalizacji. Strategie obsługi błędów. Strumienie reaktywne z użyciem Akka Streams API. Zaprojekotwanie oraz implementacja zaawansowanej aplikacji reaktywnej z użyciem Akka. # *Środowisko Zookeeper (4 godz.).* Zookeeper jako przykład środowiska umożliwiającego koordynowanie rozproszonych aplikacji/usług. Pojęcie Znode. Rodzaje Znode - efemeryczny i sekwencyjny. Mechanizm powiadomień. Replikacja stanu serwerów Zookeeper - pojęcia lider i kworum. Gwarancje spójności. Testy działania serwera Zookeeper na pojedynczym urządzeniu oraz w środowisku zreplikowanym. Zaprojektowanie i implementacja przykładowej aplikacji wykorzystującej mechanizm obserwatorów i umożliwiającej sprawdzenie aktualnej ilości potomków oraz uruchomienie zewnętrznej aplikacji. # *Samodzielne prace praktyczne (2 godz.).* - sprawdzenie wiadomości. |
U1, U2, U3, K1 | Ćwiczenia laboratoryjne |
| 2. |
# *Systemy rozproszone – definicja, pojęcia podstawowe, usługi bazowe w systemach rozproszonych (2 godz.)* Omówienie podstawowych definicji i własności systemów rozproszonych. Przegląd usług transparentności w systemach rozproszonych. # *Pojęcia systemu operacyjnego rozproszonego, sieciowego oraz warstwy pośredniczącej (2 godz.)* Przedstawienie kategorii systemów operacyjnych dla systemów rozproszonych oraz zasad ich budowy. Wprowadzenie pojęcia warstwy pośredniczącej omówienie podstawowych usług zapewnianych przez warstwy pośredniczące. Przykłady warstw pośredniczących. # *Mechanizmy komunikacji w systemach rozproszonych - zdalne wywołanie procedury, zdalne wywołanie metody, przesyłanie komunikatów. Migracja - rodzaje oraz znaczenie w budowie środowisk przetwarzania rozproszonego (2 godz.)* Porównanie różnych mechanizmów komunikacji w systemach rozproszonych. Sposoby implementacji zdalnego wywołania procedury. Model imperatywny a model obiektowy zdalnego wywołania procedury. Techniki przesyłania komunikatów. # *Warstwy pośredniczące obiektowe – OOM, oraz zorientowane na wiadomości – MOM (2 godz.)* Charakterystyka obiektowego przetwarzania rozproszonego. Obiektowe warstwy pośredniczące oparte na mechanizmie zdalnego wywołania metod. Wady i zalety warstw pośredniczących opartych na mechanizmie zdalnego wywołania metod. Przykłady: CORBA, RMI. Charakterystyka warstw pośredniczących zorientowanych na przesyłanie komunikatów. Przykłady MOM: JMS, Active MQ. # *Model Actora - AKKA (2 godz.)* # *Systemy reaktywne, reaktywne przetwarzanie strumieniowe,zasady budowy skalowalych systemów rozproszonych(2 godz.)* # *Kanoniczne problemy systemów rozproszonych – pojęcie czasu, zegary logiczne Lamporta, zegary wektorowe (2 godz.)* Wprowadzenie do kanonicznych problemów systemów rozproszonych. Modele czasu i ich znaczenie w systemach rozproszonych. Protokół NTP. Zegary logiczne – zegar Lamporta. Zegary wektorowe i ich zastosowania. # *Modele spójności w systemach rozproszonych (2 godz.)* Pojęcie spójności danych. Modele spójności: spójność ścisła, spójność sekwencyjna, spójność linearyzowana, spójność przyczynowa, spójność FIFO. # *Replikacja oraz protokoły zarządzanie replikami danych (2 godz.)* Pojęcie globalnego stanu systemu i algorytmy jego wyznaczania. Sposoby wyznaczenia stanu zakończenia obliczenia rozproszonego. Replikacja danych i jej znaczenie dla efektywności i niezawodności dla pracy systemów rozproszonych. Algorytmy utrzymywania konsystentności replik. # *Algorytmu elekcji oraz synchronizacji w środowisku rozproszonym (2 godz.)* Rodzaje algorytmów elekcji: Bully, Ring. Zastosowanie algorytmów elekcji. Algorytmy synchronizacji i wzajemnego wkluczania w systemach rozproszonych, Zookeeper. # *Zagadnienia konstrukcji systemów rozproszonych odpornych na uszkodzenia. Semantyka błędów. Protokoły odtwarzania spójnego stanu systemu rozproszonego (2 godz.)* Omówienie sposobów replikacji systemów rozproszonych. Klastryzacja systemów rozproszonych i zasady jej konfiguracji. # *Problemy uzgadniania stanu w warunkach występowania uszkodzeń – uzgodnienie Bizantyjskie (2 godz.)* Omówienie źródeł problemów związanych z ustaleniem konsystentnego stanu rozproszonego. # *Mechanizmy bezpieczeństwa w systemach rozproszonych (2 godz.)* Omówienie zagrożeń bezpieczeństwa występujących w systemach rozproszonych oraz źródeł ich występowania. # *Teoria CAP i jej znaczenie w budowie aplikacji rozproszonych dużej skali(2 godz.)* |
W1, W2, W3 | Wykład |
Informacje rozszerzone
Metody i techniki kształcenia :
Mini wykład
| Rodzaj zajęć | Metody zaliczenia | Warunki zaliczenia przedmiotu |
|---|---|---|
| Wykład | Egzamin | |
| Ćwiczenia laboratoryjne | Aktywność na zajęciach, Udział w dyskusji, Wykonanie ćwiczeń laboratoryjnych |
Dodatkowy opis
Wykłady z przedmiotu będą prowadzone w sposob zdalny z wykorzystaniem platformy Webex/Teams.
Pozostałe zajęcia będą odbywać się w salach. Dotyczy to także zaliczeń i egzaminów odbywajacych się w sesjach egzaminacyjnych.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu
Warunkiem zaliczenia zajęć laboratoryjnych jest zrealizowanie wszystkich zadań oraz zaliczenie kolokwium. Brak zaliczenia laboratorium nie uniemożliwia przystąpienia do egzaminu.
Sposób obliczania oceny końcowej
Ocena końcowa jest oceną z laboratorium z uwzględnieniem terminu uzyskania zaliczenia: za każdy dodatkowy termin jest obniżana o pół stopnia. Ocena z laboratorium bierze pod uwagę aktywność na zajęciach i przygotowanie do nich, oceny z zadań domowych i kolokwium. Oceny są wyznaczane zgodnie z regulaminem studiów AGH.
Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach
Studenci nieobecni na zajęciach laboratoryjnych muszą samodzielnie nadrobić zaległości, oddanie zadania jest możliwe w dodatkowych terminach.
Wymagania wstępne i dodatkowe
Znajomość podstaw systemów operacyjnych oraz komunikacji sieciowej.
Zasady udziału w poszczególnych zajęciach, ze wskazaniem, czy obecność studenta na zajęciach jest obowiązkowa
Wykład: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego. Ćwiczenia laboratoryjne: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu wszystkich zajęć laboratoryjnych.
Literatura
Obowiązkowa- # Nurkiewicz Tomasz, Reactive Programming with RxJava, O'Reilly Media, Inc, USA, 2016
- # Raymond Roestenburg,Rob Bakker, Rob Williams, Akka in Action, O'Reilly Media, Inc, USA, 2014
- # A. Tanenbaum, S. Maatern, “Systemy rozproszone. Zasady I paradygmaty”, Klasyka Informatyki, WNT,2006
- # M. Henning, S. Vinowski, „Advanced CORBA Programming in C++” , Addison-Wesley, 1999
- # R. Johson, J. Hoeller, A. Anderson, T, Risberg, C. Sampaleanu, ”Spring Framework. Profesjonalne tworzenie oprogramowania w Javie”, Helion, 2006
- # G. F. Coulouris, „Systemy rozproszone. Podstawy i projektowanie”, WNT, 1999
- # W. Grosso, „Java RMI – Design and Building Distributed Systems”, O’Reilly, 2002
Badania i publikacje
Publikacje- # Przemyslaw Dadel, Krzysztof Zielinski:Evolution of Reactive Streams API for Context-Aware Mobile Applications. Computing and Informatics 35(4): 852-869 (2016)
- # Marek Psiuk, Daniel Zmuda, Krzysztof Zielinski: Distributed OSGi built over message-oriented middleware. Softw., Pract. Exper. 43(1): 1-31 (2013)
- # Pierre de Leusse, Bartosz Kwolek, Krzysztof Zielinski: A Middleware Infrastructure for Multi-rule-Engine Distributed Systems. ServiceWave 2010: 231-232
- # Pierre de Leusse, Bartosz Kwolek, Krzysztof Zielinski: A common interface for multi-rule-engine distributed systems. RuleML Challenge 2010