Konkurentno programiranje

Prikazani su podaci za akademsku godinu: 2023./2024.

Predavanja

Laboratorijske vježbe

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.

Studijski programi

Sveučilišni diplomski
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (3. semestar)
Izborni predmeti profila (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (3. semestar)
Izborni predmeti profila (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
[FER2-HR] Telekomunikacije i informatika - profil
Predmeti specijalizacije profila (3. semestar)

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

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
R1 Engleski jezik
R1 E-učenje
30 Predavanja
0 Seminar
0 Auditorne vježbe
8 Laboratorijske vježbe
0 Konstrukcijske vježbe

Ocjenjivanje

85 izvrstan
75 vrlo dobar
65 dobar
55 dovoljan