Serwisy internetowe Uniwersytetu Warszawskiego Nie 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 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
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:

○ 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 2020/21" (zakończony)

Okres: 2020-10-01 - 2021-01-31
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, 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

Zajęcia w cyklu "Semestr zimowy 2021/22" (w trakcie)

Okres: 2021-10-01 - 2022-02-20
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, 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
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.