Programowanie współbieżne (Q2)

Język wykładowy Polski
Semestr Letni
Status W ofercie
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”.