Programowanie współbieżne
Informacje ogólne
Kod przedmiotu: | 1000-213bPW | Kod Erasmus / ISCED: |
11.3
![]() ![]() |
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 ![]() ![]() |
||
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: ○ komunikacja synchroniczna, ○ komunikacja asynchroniczna (przestrzeń krotek). ● 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 CPP. Laboratorium: ● Współbieżność POSIX-owa: ○ fork, ○ pthreads (bez cancel), ○ semafory. ● Współbieżność w Javie: ○ monitory, ○ java.util.concurrent. ● Współbieżność w CPP: ○ atomic data types, ○ transactional memory, ○ task - based parallelism. Ćwiczenia: ● algorytmy wzajemnego wykluczania -pamięć współdzielona, ● algorytmy wzajemnego wykluczania -rozproszone (przez komunikaty), ● semafory, ● monitory, ● komunikacja synchroniczna, ● 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 2020/21" (zakończony)
Okres: | 2020-10-01 - 2021-01-31 |
![]() |
Typ zajęć: |
Ćwiczenia, 30 godzin ![]() Laboratorium, 30 godzin ![]() Wykład, 30 godzin ![]() |
|
Koordynatorzy: | Marcin Engel, Agata Janowska | |
Prowadzący grup: | Piotr Cyrankiewicz, Marcin Engel, Konrad Iwanicki, Andrzej Jackowski, Agata Janowska, Daniel Kałuża, Konrad Majewski, Mirosława Miłkowska, Krzysztof Rządca, Aleksy Schubert, Krzysztof Szafran, Artur Zaroda | |
Lista studentów: | (nie masz dostępu) | |
Zaliczenie: | Egzamin | |
Tryb prowadzenia: | zdalnie |
Właścicielem praw autorskich jest Uniwersytet Warszawski.