Programowanie współbieżne (Q2) lato 2018/19

Język wykładowy Polski
Opiekun Zdzisław Spławski
Liczba godzin 16 (wyk.) 16 (prac.)
Rodzaj Informatyczny 1
ECTS 3
Polecany dla I roku Nie
Egzamin Tak

Opis przedmiotu:

_Przedmiot będzie prowadzony w drugiej połowie semestru - pierwsze zajęcia odbędą się **11 kwietnia**._ Współbieżność pozwala na zorganizowanie programu w formie komponentów, które są wykonywane niezależnie i komunikują się ze sobą tylko wtedy, kiedy to konieczne. Współbieżność ma fundamentalne znaczenie dla programów podlegających interakcji ze swoim środowiskiem, np. agentów, interfejsów GUI, systemów operacyjnych itd. Obecnie jednak można ją z pożytkiem wykorzystać praktycznie w każdej aplikacji, ponieważ wysokopoziomowe mechanizmy programowania współbieżnego pozwalają pisać efektywne programy, wykorzystujące procesory wielordzeniowe. Celem zajęć jest zapoznanie studentów ze współczesnymi mechanizmami programowania współbieżnego (na ile to możliwe w tak krótkim czasie). Będą przedstawione mechanizmy niskopoziomowe (wątki z pamięcią współdzieloną i blokadami wewnętrznymi), narzędzia tradycyjne (egzekutory i pule wątków, zmienne atomowe, kolekcje współbieżne i równoległe). Nacisk będzie położony na mechanizmy wysokopoziomowe, m.in. programowanie asynchroniczne (Future i Promise), strumienie reaktywne i model aktorów (z wykorzystaniem platformy Akka, dostępnej dla języków Scala i Java). Programy będą pisane w języku Scala. Scala jest współczesnym wieloparadygmatycznym językiem programowania posadowionym na platformie JVM (a także .NET). **Z podstawami programowania w języku Scala studenci zostaną zapoznani na pierwszych wykładach.** Najważniejsze cechy języka Scala są przedstawione na stronie: [http://](http://docs.scala-lang.org/tour/tour-of-scala.html)[docs.scala- lang.org/tour/tour-of-scala.html](http://docs.scala-lang.org/tour/tour-of- scala.html) Oprócz wymienionych tam cech Scala wspiera niskopoziomowe programowanie współbieżne za pomocą wątków, ale oferuje wiele mechanizmów na wyższym poziomie abstrakcji, np. mechanizm aktorów, mechanizm Future, strumienie reaktywne, kolekcje współbieżne i równoległe, pamięć transakcyjną. Na zajęciach w pracowni studenci będą pisali proste programy, których tematyka będzie zsynchronizowana z zagadnieniami, omawianymi na wykładzie. Wymagana jest podstawowa znajomość programowania funkcyjnego i obiektowego. Konieczne jest zaliczenie „Metod programowania”, zalecane jest także „Programowanie funkcyjne”.

Wykłady

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
Zdzisław Spławski
Q2
cz 10:00-12:00 (s. 140) 300 13 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.

Pracownie

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
Zdzisław Spławski
Q2
cz 08:00-10:00 (s. 108) 15 13 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.


Konsultacje prowadzących:


Imię i nazwisko Pokój Konsultacje
Zdzisław Spławski 340 Czwartki godz.9:00-10:00 (konieczne jest wcześniejsze uzgodnienie). Możliwe są też inne terminy po uzgodnieniu za pośrednictwem poczty elektronicznej: zs@cs.uni.wroc.pl.