Konkurentno programiranje
Prikazani su podaci za akademsku godinu: 2023./2024.
Nositelji
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)[FER3-HR] Automatika i robotika - profil
Izborni predmeti
(1. semestar)
(3. semestar)
[FER3-HR] Elektroenergetika - profil
Izborni predmeti
(1. semestar)
(3. semestar)
Izborni predmeti
(1. semestar)
(3. semestar)
[FER3-HR] Elektronika - profil
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)
[FER3-HR] Računalno inženjerstvo - profil
Izborni predmeti
(3. semestar)
Izborni predmeti profila
(3. semestar)
Izborni predmeti
(1. semestar)
(3. semestar)
[FER3-HR] Računarska znanost - profil
Izborni predmeti
(1. semestar)
(3. semestar)
[FER3-HR] Znanost o mrežama - profil
Izborni predmeti
(3. semestar)
Izborni predmeti profila
(3. semestar)
[FER3-HR] Znanost o podacima - profil
Izborni predmeti
(1. semestar)
(3. semestar)
[FER2-HR] Telekomunikacije i informatika - profil
Predmeti specijalizacije profila
(3. semestar)
Ishodi učenja
- prepoznati različite oblike konkurentnosti
- objasniti mehanizme konkurentnosti
- upotrijebiti mehanizme konkurentnosti u programskoj podršci
- analizirati različite probleme u konkurentnim programima
- povezati različite mehanizme za konurentnost i razviti programsko rješenje
- usporediti dobra i loša svojstva nekog rješenja
Oblici nastave
Predavanja
pohađanje predavanja
Samostalni zadacidomaće zadaće
Multimedija i mrežasnimljena predavanja
Laboratorijrješ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
- 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.
- Procesi i međuprocesna komunikacija razmjenom poruka. Predočavanje paralelizma u programskim jezicima, komunikacija i sinkronizacija.
- Uvod u programski jezik Erlang. Vrste podataka. Podudaranje uzoraka. Moduli i funkcije. Rekurzija. Grananje. Funkcije višeg reda.
- Konkurentno programiranje u jeziku Erlang. Kreiranje procesa. Selektivni i neselektivni prijam poruka. Vremenska kontrola, registrirani procesi. Iznimke.
- Raspodijeljeno programiranje u jeziku Erlang: Erlang u Dockeru, raspodijeljeni mehanizmi, robusnost, povezanost procesa, raspodijeljena registracija procesa.
- Programski obrasci u jeziku Erlang: OTP, mrežni poslužitelj, RabbitMQ
- Konkurentnost u objektno orijentiranim jezicima. Konkurentnost u jeziku Java. Dretve u Javi, njihova stanja, prioriteti, grupe, sebične dretve.
- Međuispit
- Konkurentno programiranje u jeziku Java. Sinkronizacijski i višedretveni mehanizmi (brojeći semafor, sinkroniziranje kolekcija podataka, sinkronizacija repa, izmjenjivač podataka, prepreka, ...)
- Primjena konkurentnih mehanizama u Javi, grafika, mrežni poslužitelj, alarmi.
- Konkurentni model na webu: AJAX, JavaScript (async/await), dugo prozivanje, SSE, WebSocket
- Konkurentnost web-poslužitelja: Spring Boot, bazeni konekcija, pozivi web-usluga, repovi poruka
- Reaktivno programiranje i performanse
- Studijski slučaj: iskustva iz industrije i novi trendovi
- 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
0 Vježbe tjelesnog odgoja
Ocjenjivanje
85 izvrstan
75 vrlo dobar
65 dobar
55 dovoljan