Konkurentno programiranje

Opis predmeta

Konkurentnost i paralelizam procesa u mreži: istodobnost poziva i usluga, unutarnji paralelizam procesa poziva i usluga, konkurentnost u tokovima upravljanja. Komunicirajući procesi, međuprocesna komunikacija, paralelizam i konkurentnost. Jezici za programiranje telekomunikacijskih funkcija: definicija procesa, asinkrona komunikacija, stvarno vrijeme, neprekidnost operacija. Paralelizam procesa i raspoređivanje poslova. Načela konkurentnog i distribuiranog programiranja. Konkurentnost u objektno orijentiranim jezicima. Sinkronizacijski i višenitni mehanizmi. Programski jezici Erlang i Java. Razvojno okružje.

Opće kompetencije

Studenti će steći temeljna znanja o načelima konkurentnosti i paralelizma u sustavima i mreži, konkurentnom i distribuiranom programiranju, jezicima za programiranje konkurentnih i distribuiranih sustava, međuprocesnoj komunikaciji te sinkronizacijskim i višenitnim mehanizmima.

Ishodi učenja

  1. prepoznati različite oblike konkurentnosti
  2. objasniti mehanizme konkurentnost
  3. upotrijebiti mehanizme konkurentnosti u programskoj podršci
  4. analizirati različite probleme u konkurentnim programima
  5. povezati različite mehanizme za konurentnost i razviti programsko rješenje
  6. usporediti dobra i loša svojstva nekog rješenja

Oblici nastave

Predavanja

tjedna predavanja

Provjere znanja

zadaće, međuispit i završni ispit

Laboratorijske vježbe

rad u laboratoriju

Demonstracijske vježbe

na predavanju

Konzultacije

tjedne

Programske vježbe

kroz zadaće

Način ocjenjivanja

Kontinuirana nastava Ispitni rok
Vrsta provjere Prag Udio u ocjeni Prag Udio u ocjeni
Laboratorijske vježbe 0 % 20 % 0 % 20 %
Domaće zadaće 0 % 10 % 0 % 10 %
Međuispit: Pismeni 0 % 30 % 0 %
Završni ispit: Pismeni 0 % 30 %
Završni ispit: Usmeni 10 %
Ispit: Pismeni 0 % 60 %
Ispit: Usmeni 10 %
Napomena / komentar

Na usmenom je minimum za prolaz 50%. Sve zadaće moraju biti predane i s uspješnim prolazom.

Tjedni plan nastave

  1. Uvodna razmatranja. Programski jezici - konkurentnost i paralelizam. Razvoj programskih jezika, vrste i značajke jezika s motrišta primjene. Razine upravljanja u mreži, modeli procesorskih i programskih sustava.
  2. Procesi i međuprocesna komunikacija izmjenom poruka. Predočavanje paralelizma u programskim jezicima, komunikacija i sinkronizacija.
  3. Deklarativni konkurentni jezici. Programski jezik Erlang.
  4. Konkurentno programiranje u Erlangu. Kreiranje procesa, uspoređivanje uzoraka, selektivni i neselektivni prijam poruka, vremenska kontrola, registrirani procesi.
  5. Raspodijeljeno programiranje u jeziku Erlang. Referencijska transparentnost, ugrađene funkcije, robustnost, povezanost procesa.
  6. Erlang OTP: programski okvir za razvoj pouzdanih sustava s tolerancijom neispravnosti, studijski primjer
  7. Povezivanje programskih jezika Erlang i Java: vrata (port), Socket/UDP, JInterface, Thrift
  8. Međuispit
  9. Konkurentnost u objektno orijentiranim jezicima. Proširenja i modeli konkurentnosti za objektno orijenitrane jezike. Konkurentnost u jeziku Java. Niti u Javi, njihova stanja, prioriteti, sebične niti.
  10. Konkurentno programiranje u jeziku Java. Sinkronizacijski i višenitni mehanizmi (brojeći semafor, sinkroniziranje kolekcija podataka, sinkronizacija repa, izmjenjivač podataka, prepreka, uzorak zaključavanja, recikliranje niti).
  11. Primjena konkurentnih mehanizama u Javi, grafika, mrežni poslužitelj, udaljen poziv procedura, alarmi.
  12. Konkurentni model na webu (Java EE, AJAX)
  13. Konkurentnost web-poslužitelja: dugo prozivanje, WebSocket, bazeni konekcija, pozivi web-usluga.
  14. Studijski slučaj: iskustva iz industrije i novi trendovi
  15. Završni ispit

Studijski programi

Sveučilišni diplomski
Telekomunikacije i informatika (profil)
Predmeti specijalizacije profila (2. semestar)

Za upis predmeta treba položiti predmete

Literatura

J. Armstrong, R. Virding, C. Vikstroem, M. Williams (1993.), Concurrent Programming in Erlang, Prentice-Hall
D. Lea (1999.), Concurrent Programming in Java - Design Principles and Patterns (2nd edition), Addison Wesley
I. Lovrek, G. Ježžić, S. Deššić, M. Kuššek (2009.), Konkurentno programiranje: Skripta za 1. ciklus predavanja, FER - skripta
M. Kušek (2008.), Konkurentno programiranje: Skripta za 2. ciklus predavanja, FER - skripta
I. Lovrek, G. Ježić, M. Kušek (2008.), Konkurentno programiranje: Skripta za 3. ciklus predavanja, FER - skripta

Laboratorijske vježbe

Izvedba

ID 127420
  Ljetni semestar
4 ECTS
R1 Engleski jezik
R1 E-učenje
30 Predavanja
0 Auditorne vježbe
15 Laboratorijske vježbe

Ocjenjivanje

85 izvrstan
75 vrlo dobar
65 dobar
55 dovoljan