Konkurentno programiranje

Opis predmeta

Konkurentnost i paralelizam procesa, dretvi i vlakana u mrežnoj komunikaciji: istodobnost zahtjeva i usluga, unutarnji paralelizam procesa zahtjeva i usluga, konkurentnost u tokovima upravljanja. Komunicirajući procesi, međuprocesna komunikacija, paralelizam i konkurentnost. Jezici za programiranje raspodijeljenih i telekomunikacijskih sustava: definicija procesa, sinkrona i asinkrona komunikacija, stvarno vrijeme, neprekidnost operacija, zastoji, stagnacija sustava, višedretvena sigurnost, živost sustava. Paralelizam procesa, dretvi i vlakana i raspoređivanje poslova. Načela konkurentnog funkcijskog, reaktivnog i raspodijeljenog programiranja. Konkurentnost u objektno orijentiranim i funkcijskim jezicima. Sinkronizacijski i koordinacijski mehanizmi. Reaktivno programiranje. Programski jezici Erlang i Java.

Ishodi učenja

  1. prepoznati različite oblike konkurentnosti
  2. objasniti mehanizme konkurentnosti
  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

pohađanje predavanja

Samostalni zadaci

domaće zadaće

Multimedija i mreža

snimljena predavanja

Laboratorij

rješavanje zadataka u laboratoriju

Način ocjenjivanja

Kontinuirana nastava Ispitni rok
Vrsta provjere Prag Udio u ocjeni Prag Udio u ocjeni
Laboratorijske vježbe 4 % 20 % 4 % 20 %
Domaće zadaće 0 % 10 % 0 % 0 %
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 ispitu (završni i ispitni rok) potrebno je ostvariti minimalno 50% bodova iz usmenog ispita.

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 razmjenom poruka. Predočavanje paralelizma u programskim jezicima, komunikacija i sinkronizacija.
  3. Uvod u programski jezik Erlang. Vrste podataka. Podudaranje uzoraka. Moduli i funkcije. Rekurzija. Grananje. Funkcije višeg reda.
  4. Konkurentno programiranje u jeziku Erlang. Kreiranje procesa. Selektivni i neselektivni prijam poruka. Vremenska kontrola, registrirani procesi. Iznimke.
  5. Raspodijeljeno programiranje u jeziku Erlang: Erlang u Dockeru, raspodijeljeni mehanizmi, robusnost, povezanost procesa, raspodijeljena registracija procesa.
  6. Programski obrasci u jeziku Erlang: OTP, mrežni poslužitelj, RabbitMQ
  7. Konkurentnost u objektno orijentiranim jezicima. Konkurentnost u jeziku Java. Dretve u Javi, njihova stanja, prioriteti, grupe, sebične dretve.
  8. Međuispit
  9. Konkurentno programiranje u jeziku Java. Sinkronizacijski i višedretveni mehanizmi (brojeći semafor, sinkroniziranje kolekcija podataka, sinkronizacija repa, izmjenjivač podataka, prepreka, ...)
  10. Primjena konkurentnih mehanizama u Javi, grafika, mrežni poslužitelj, alarmi.
  11. Konkurentni model na webu: AJAX, JavaScript (async/await), dugo prozivanje, SSE, WebSocket
  12. Konkurentnost web-poslužitelja: Spring Boot, bazeni konekcija, pozivi web-usluga, repovi poruka
  13. Reaktivno programiranje i performanse
  14. Studijski slučaj: iskustva iz industrije i novi trendovi
  15. Završni ispit

Studijski programi

Sveučilišni diplomski
Audiotehnologije i elektroakustika (profil)
Slobodni izborni predmeti (1. semestar)
Automatika i robotika (profil)
Slobodni izborni predmeti (1. semestar)
Elektroenergetika (profil)
Slobodni izborni predmeti (1. semestar)
Elektroničko i računalno inženjerstvo (profil)
Slobodni izborni predmeti (1. semestar)
Elektronika (profil)
Slobodni izborni predmeti (1. semestar)
Elektrostrojarstvo i automatizacija (profil)
Slobodni izborni predmeti (1. semestar)
Informacijsko i komunikacijsko inženjerstvo (profil)
Slobodni izborni predmeti (1. semestar)
Komunikacijske i svemirske tehnologije (profil)
Slobodni izborni predmeti (1. semestar)
Programsko inženjerstvo i informacijski sustavi (profil)
Slobodni izborni predmeti (1. semestar)
Računalno modeliranje u inženjerstvu (profil)
Slobodni izborni predmeti (1. semestar)
Računarska znanost (profil)
Slobodni zborni predmeti (1. semestar)
Telekomunikacije i informatika (profil)
Predmeti specijalizacije profila (3. semestar)
Znanost o podacima (profil)
Slobodni izborni predmeti (1. semestar)

Literatura

J. Armstrong (2013.), Programming Erlang: Software for a Concurrent World, (2nd edition), Pragmatic Bookshelf
D. Lea (1999.), Concurrent Programming in Java – Design Principles and Patterns, (2nd edition), Addison Wesley
B. Codenotti, M. Leoncini (1992.), Introduction to Parallel Processing, Addison-Wesley Longman
J. Armstrong, R. Virding, C. Vikstroem, M. Williams (1996.), Concurrent Programming in Erlang, Prentice-Hall Europe
B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, D. Lea (2006.), Java Concurrency in Practice, Addison-Wesley Professional
I. Lovrek, G. Ježić, S. Dešić, M. Kušek (2017.), Konkurentno programiranje, FER - https://www.fer.unizg.hr/_download/repository/Konpro-2017.pdf

Za studente

Izvedba

ID 222631
  Zimski semestar
5 ECTS
R3 Engleski jezik
R1 E-učenje
30 Predavanja
8 Laboratorijske vježbe

Ocjenjivanje

85 izvrstan
75 vrlo dobar
65 dobar
55 dovoljan