
Basic information
- Field of study
- Computer Science
- Major
- -
- Organisational unit
- Faculty of Computer Science
- Study level
- First-cycle (engineer) programme
- Form of study
- Full-time studies
- Profile
- General academic
- Didactic cycle
- 2022/2023
- Course code
- WIINFS.Ii20.02816.22
- Lecture languages
- Polish
- Mandatoriness
- Obligatory
- Block
- General Modules
- Course related to scientific research
- Yes
|
Period
Semester 6
|
Method of verification of the learning outcomes
Exam
Activities and hours
Lectures:
30
Laboratory classes: 30 |
Number of ECTS credits
4
|
Course's learning outcomes
| Code | Outcomes in terms of | Learning outcomes prescribed to a field of study | Methods of verification |
| Knowledge – Student knows and understands: | |||
| W1 | Posiada szczegółową wiedzę w zakresie budowy i implementacji systemów działających w rozproszonym środowisku sieciowym. | INF1A_W04 | Examination |
| W2 | Ma elementarną wiedzę na temat cyklu życia systemów komputerowych | INF1A_W04 | Examination |
| W3 | Orientuje się w obecnym stanie oraz najnowszych trendach rozwojowych informatyki. | INF1A_W02 | Examination |
| Skills – Student can: | |||
| U1 | Potrafi tworzyć efektywne aplikacje pracujące w rozproszonych systemach komputerowych. | INF1A_U07, INF1A_U10 | Execution of laboratory classes |
| U2 | Potrafi projektować i implementować oprogramowanie. | INF1A_U05 | Execution of laboratory classes |
| U3 | Potrafi ocenić istniejące oprogramowanie, wskazać możliwości jego poprawy i ulepszenia | INF1A_U10 | Activity during classes, Execution of laboratory classes |
| Social competences – Student is ready to: | |||
| 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 | Participation in a discussion, Execution of laboratory classes |
Program content ensuring the achievement of the learning outcomes prescribed to the module
Student workload
| Activity form | Average amount of hours* needed to complete each activity form | |
| Lectures | 30 | |
| Laboratory classes | 30 | |
| Preparation for classes | 20 | |
| Realization of independently performed tasks | 30 | |
| Examination or final test/colloquium | 2 | |
| Contact hours | 5 | |
| Student workload |
Hours
117
|
|
| Workload involving teacher |
Hours
60
|
|
* hour means 45 minutes
Program content
| No. | Program content | Course's learning outcomes | Activities |
| 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 | Laboratory classes |
| 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 | Lectures |
Extended information/Additional elements
Teaching methods and techniques :
Lectures
| Activities | Methods of verification | Credit conditions |
|---|---|---|
| Lectures | Examination | |
| Lab. classes | Activity during classes, Participation in a discussion, Execution of laboratory classes |
Additional info
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.
Conditions and the manner of completing each form of classes, including the rules of making retakes, as well as the conditions for admission to the exam
Warunkiem zaliczenia zajęć laboratoryjnych jest zrealizowanie wszystkich zadań oraz zaliczenie kolokwium. Brak zaliczenia laboratorium nie uniemożliwia przystąpienia do egzaminu.
Method of determining the final grade
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.
Manner and mode of making up for the backlog caused by a student justified absence from classes
Studenci nieobecni na zajęciach laboratoryjnych muszą samodzielnie nadrobić zaległości, oddanie zadania jest możliwe w dodatkowych terminach.
Prerequisites and additional requirements
Znajomość podstaw systemów operacyjnych oraz komunikacji sieciowej.
Rules of participation in given classes, indicating whether student presence at the lecture is obligatory
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.
Literature
Obligatory- # 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
Scientific research and publications
Publications- # 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