Uniwersytet Warszawski - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Programowanie współbieżne

Informacje ogólne

Kod przedmiotu: 1000-213bPW Kod Erasmus / ISCED: 11.3 / (0612) Database and network design and administration
Nazwa przedmiotu: Programowanie współbieżne
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obowiązkowe dla II roku (3. semestr) JSIM - wariant 3I+4M
Przedmioty obowiązkowe dla II roku (3. semestr) JSIM - wariant 3M+4I
Przedmioty obowiązkowe dla II roku informatyki
Punkty ECTS i inne: 7.50
zobacz reguły punktacji
Język prowadzenia: polski
Rodzaj przedmiotu:

obowiązkowe

Skrócony opis:

Celem wykładu jest przedstawienie podstawowych problemów oraz technik programowania systemów współbieżnych i rozproszonych. Wykład

zorganizowany jest wokół dwóch kluczowych zagadnień: poprawności i wydajności systemów współbieżnych. W kontekście podstawowych problemów synchronizacji, takich jak wzajemne wykluczanie czy problem czytelników i pisarzy, omawiane są podejścia do synchronizacji procesów, bazujące na współdzielonych zmiennych oraz wymagające wsparcia w konstrukcjach programowych języków wysokopoziomowych.

Pełny opis:

Wykład:

● Metody synchronizacji w modelu współbieżnym:

○ zmienne współdzielone (koalgorytmy wzajemnego wykluczania),

○ semafory,

○ monitory.

● Analiza poprawności algorytmów współbieżnych (bez użycia LTL - u).

● Metody synchronizacji w modelu rozproszonym:

○ spotkania, czyli klient - serwer (Ada),

○ wymiana komunikatów (CSP),

○ wspólna przestrzeń adresowa (Linda).

● Spójność i modele spójności:

○ linearizability (or atomicity),

○ sequential consistency,

○ causal consistency,

○ eventual consistency.

● Wydajność w modelu współbieżnym:

○ work, span, speed - up, parallelization - ilustrowane i szacowane programami w CILK - u.

● Metody programowania współbieżnego (wykłady wprowadzające do laboratoriów; synchronizowane z laboratoriami):

○ wątki POSIX,

○ współbieżność w Javie (klasyczna, java.util.concurrency),

○ współbieżność w C11.

Laboratorium:

● Współbieżność POSIX-owa:

○ fork,

○ pthreads (bez cancel),

○ semafory.

● Współbieżność w Javie:

○ monitory,

○ java.util.concurrent.

● Współbieżność w C11/CPP11:

○ atomic data types,

○ transactional memory,

○ task - based parallelism.

Ćwiczenia:

● algorytmy wzajemnego wykluczania -pamięć współdzielona,

● algorytmy wzajemnego wykluczania -rozproszone (przez komunikaty),

● semafory,

● monitory,

● CSP: message passing,

● Ada: randki (model dla klient-serwer),

● Linda: synchronizowana baza danych (model dla rozproszonych struktur danych typu BigTable),

● CILK: obliczanie work, span, parallelism.

Literatura:

1. M. Ben - Ari, Podstawy programowania współbieżnego i rozproszonego

2. Z. Gruźlewski, Z. Weiss, Programowanie współbieżne i rozproszone w przykładach i zadaniach

3.M. Herlihy, N. Shavit, Sztuka programowania wieloprocesorowego

4. H. Casanova, A. Legrand, Y. Robert, Parallel Algorithms

5. T. H.Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Alghorithms, 3rd edition

6.W. R. Stevens, Programowanie w środowisku systemu UNIX

7.B. Eckel, Thinking in Java

Efekty uczenia się:

Wiedza:

● ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie programowania, algorytmów i złożoności, architektury systemów komputerowych, systemów operacyjnych, technologii sieciowych, języków i paradygmatów programowania, baz danych, inżynierii oprogramowania (K_W02);

● zna podstawowe metody projektowania, analizowania i programowania algorytmów (projektowanie strukturalne, rekurencja, metoda dziel i rządź, programowanie z nawrotami, poprawność, metoda niezmienników, złożoność obliczeniowa) (K_W04).

Umiejętności:

● potrafi pisać, uruchamiać i testować programy w wybranym środowisku programistycznym (K_U05);

● projektuje, analizuje pod kątem poprawności i złożoności obliczeniowej oraz programuje algorytmy; wykorzystuje podstawowe techniki algorytmiczne i struktury danych (K_U07);

● rozumie niskopoziomowe zasady wykonywania programów (K_U08);

● opisuje problemy związane z wykonywaniem programów współbieżnych (K_U11);

● potrafi 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_U22)

Zajęcia w cyklu "Semestr zimowy 2018/19" (zakończony)

Okres: 2018-10-01 - 2019-01-25
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marcin Engel
Prowadzący grup: Marek Dopiera, Marcin Engel, Konrad Iwanicki, Agata Janowska, Marcin Przybyłko, Krzysztof Szafran, Artur Zaroda, Paweł Żuk
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin

Zajęcia w cyklu "Semestr zimowy 2019/20" (w trakcie)

Okres: 2019-10-01 - 2020-01-27
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Ćwiczenia, 30 godzin więcej informacji
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Agata Janowska
Prowadzący grup: Piotr Cyrankiewicz, Andrzej Jackowski, Agata Janowska, Łukasz Mikulski, Mirosława Miłkowska, Adam Paszke, Aleksy Schubert, Krzysztof Szafran, Artur Zaroda, Paweł Żuk
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.