Systemy rozproszone

Diffuse systems

2017L

Kod przedmiotu2317N2-SYSROZ
Punkty ECTS 4,5
Typ zajęć Wykład
Ćwiczenia laboratoryjne
Przedmioty wprowadzające sieci komputerowe, systemy operacyjne, programowanie obiektowe
Wymagania wstępneprogramowanie obiektowe
Opis ćwiczeńĆwiczenia zostały podzielone na 2 logiczne części. Podczas pierwszej z nich, student poznaje zagadnienia praktyczne związane z budową systemów rozproszonych, takie jak: programowanie wielowątkowe, synchronizacja wątków, komunikacja klient-serwer przy użyciu gniazd, komunikacja przy pomocy obiektów zdalnych (Java RMI). Druga część ćwiczeń polega na wykonaniu dwóch mini projektów, w oparciu o umiejętności uzyskane w części pierwszej ćwiczeń i wiedzę omawianą w ramach wykładu . Projekty wykonywane są w parach i polegają na implementacji wybranej aplikacji rozproszonej, lub algorytmu rozproszonego.
Opis wykładówWykład omawia zasady działania, oraz sposoby konstruowania rozproszonych aplikacji i systemów operacyjnych. Prezentowane zagadnienia dotyczą różnych aspektów systemów rozproszonych takich jak: komunikacja, procesy, nazewnictwo, synchronizacja, spójność i zwielokrotnianie, tolerowanie awarii, czy bezpieczeństwo. Dodatkowo wykład omawia istniejące systemy rozproszone, zorganizowane według szczególnego paradygmatu, tzn. oparte na: obiektach rozproszonych, dokumentach, rozproszonych systemach plików, koordynacji. Podstawy organizacji systemów GPU, elementy programowania równoległego na przykładzie języka CUDA_C
Cel kształceniaNabycie wiedzy dotyczącej zasad i mechanizmów funkcjonowania wybranych aspektów systemów rozproszonych, oraz sposobu realizacji takich zagadnień jak: komunikacja, synchronizacja, zwielokrotnianie, tolerowanie awarii. Nabycie umiejętności praktycznych w zakresie programowania rozproszonych aplikacji i algorytmów.
Literatura podstawowa1) a, 1) S. Tannenbaum, M. Steen, 2006r., "Systemy rozproszone, Zasady i paradygmaty", wyd. WNT 2) 2. G. Coulouris, J. Dollimore, T. Kindberg, 1998r., "Systemy rozproszone Podstawy i projektowanie", wyd. WNT., a, 2
Literatura uzupełniająca1) Jason Sanders, Edward Kandrot, wyd. Helion, CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GPU, 2012r., tom 2) Jason Sanders, Edward Kandrot, wyd. NVIDIA, CUDA by Example: An Introduction to General‑Purpose GPU, 2010r., tom 3) Paweł Majdzik, wyd. Helion, Programowanie współbieżne. Systemy czasu rzeczywistego, 2013r., tom , 320s. 4) Karbowski Andrzej, Niewiadomska-Szynkiewicz Ewa, wyd. Politechnika Warszawska, Programowanie równoległe i rozproszone , 2013r., tom , 428s. 5) Mateusz Warczak, Jacek Matulewski, Rafał Pawłaszek, Piotr Sybilski, Dawid Borycki, wyd. Helion, Programowanie równoległe i asynchroniczne w C# 5.0, (ebook), tom , 440s. 6) Antonio Melé, wyd. Helion, Django. Praktyczne tworzenie aplikacji sieciowych, 2016r., tom 7) Bończak Krzysztof, wyd. Wydawnictwo Naukowe PWN, W poszukiwaniu zwinności w architekturze systemów IT, 2017r., tom
Uwagi