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 informatyki Przedmioty obowiązkowe dla II roku JSIM - wariant 3I+4M Przedmioty obowiązkowe dla II roku JSIM - wariant 3M+4I |
||
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: Student ● 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 zasady działania systemów operacyjnych ze szczególnym uwzględnieniem procesów, współbieżności, szeregowania zadań i zarządzania pamięcią (K_W07); ● 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). Umiejętności: Student ● potrafi pisać, uruchamiać i testować programy w wybranym środowisku programistycznym; ● projektuje, analizuje pod kątem poprawności i złożoności obliczeniowej oraz programuje algorytmy; wykorzystuje podstawowe techniki algorytmiczne i struktury danych; ● rozumie niskopoziomowe zasady wykonywania programów; ● opisywać problemy związane z wykonywaniem programów współbieżnych (K_U10); ● 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; ● pozyskiwać informacje z literatury, baz wiedzy, Internetu oraz innych wiarygodnych źródeł, integrować je, dokonywać ich interpretacji oraz wyciągać wnioski i formułować opinie (K_U02); ● samodzielnie planować i realizować własne uczenie się przez całe życie (K_U09). Kompetencje społeczne: Student ● jest gotów do krytycznej oceny posiadanej wiedzy i odbieranych treści (K_K01); ● jest gotów do pracy z zachowaniem uczciwości intelektualnej w działaniach własnych i innych osób; przestrzegania zasad etyki zawodowej i wymagania tego od innych oraz dbałości o dorobek i tradycje zawodu informatyka (K_K02); ● jest gotów do uznawania znaczenia wiedzy w rozwiązywaniu problemów poznawczych i praktycznych oraz wyszukiwania informacji w literaturze oraz zasięgania opinii ekspertów (K_K03). |
Zajęcia w cyklu "Semestr zimowy 2021/22" (zakończony)
Okres: | 2021-10-01 - 2022-02-20 |
![]() |
Typ zajęć: |
Ćwiczenia, 30 godzin ![]() Laboratorium, 30 godzin ![]() Wykład, 30 godzin ![]() |
|
Koordynatorzy: | Marcin Engel, Agata Janowska | |
Prowadzący grup: | Witalis Domitrz, Marcin Engel, Andrzej Głuszak, Andrzej Jackowski, Agata Janowska, Daniel Kałuża, Rafał Maj, Konrad Majewski, Mirosława Miłkowska, Krzysztof Rządca, Krzysztof Szafran, Marcin Wrochna, Artur Zaroda | |
Lista studentów: | (nie masz dostępu) | |
Zaliczenie: | Egzamin |
Zajęcia w cyklu "Semestr zimowy 2022/23" (jeszcze nie rozpoczęty)
Okres: | 2022-10-01 - 2023-01-29 |
![]() |
Typ zajęć: |
Ćwiczenia, 30 godzin ![]() Laboratorium, 30 godzin ![]() Wykład, 30 godzin ![]() |
|
Koordynatorzy: | Marcin Engel | |
Prowadzący grup: | Witalis Domitrz, Marcin Engel, Konrad Iwanicki, Agata Janowska, Konrad Majewski, Mirosława Miłkowska, Krzysztof Rządca, Marcin Wrochna, Artur Zaroda | |
Lista studentów: | (nie masz dostępu) | |
Zaliczenie: | Egzamin |
Właścicielem praw autorskich jest Uniwersytet Warszawski.