Cilj
Ishod
Metode izvodjenja nastave
Sadržaj
Literatura
Cilj ovog kursa je da se studenti upoznaju sa konceptima, metodama, tehnološkom infrastrukturom i softverskim alatima koji se koriste u razvoju i implementaciji paralelnih konkurentnih programa, koji se izvršavaju u distribuiranim računarskim okruženjima, kao i da stečena znanja primene u projektovanju i implementaciji rešenja jednog konkretnog i kompleksnog problema u oblasti elektronskog poslovanja.
Teorijska nastava
Racionala multiprogramskih sistema, hardverske inovacije. Kernel multiprogramskog sistema. Flunn-ova klasifikacija, MIMD mašine. Tipične organizacije multiprocesora i računarskih mreža, klasteri. Distribuirani računarski sistemi, komponente distribuiranih računarskih sistema. Tipični problemi komunikacije i sinhronizacije procesa. Sistemska i arhitektonska sredstva za kontrolu pristupa kritičnom regionu: region, semafor, dogadjaj, uslov i monitor. Koordinacija i sinhronizacija procesa u distribuiranim računarskim sistemima. Upravljanje procesima, memorijom i uredjajima u distribuiranom okruženju. Procesno i servisno orijentisane arhitekture zasnovane na distribuiranoj razmeni poruka. Konkurentno i distribuirano programiranje u programskim jezicima: C++ , JAVA i Python. Razvojna okruženja za distribuirane sisteme. Primeri primene: P2P mreže, distribuirani fajl sistemi, distribuirane baze podataka, poslovna analitika, blockchain tehnologije. Savremeni trendovi u distribuiranom i konkurentnom programiranju.
Praktična nastava
Projektovanje i implementacija distribuiranog i paralelizovanog softverskog rešenja za kompleksan i konkretan problem elektronskog poslovanja korišćenjem jednog ili više razvojnih okruženja i softverskih paketa: Pympi, OpenMP, Webmapreduce, Hadoop, Spark, Flink, Hyperledger. Projekat sadrži: projektni zadatak, dokumentaciju projektnog rešenja, implementacionu dokumentaciju i analizu postignutih rezultata. Odbrana projekta se vrši pred predmetnim nastavnicima i svim studentima modula Elektronsko poslovanje. Projektna dokumentacija se dostavlja studentima modula, a predmetni nastavnik imenuje jednog studenta koji će biti oponent i čiji zadatak će biti da na osnovu detaljno proučene dokumentacije pripremi komentare, pitanja i uz pomoć predmetnih nastavnika vodi diskusiju tokom odbrane projekta.
1.Despotović-Zrakić M., Milutinović V., Belić A. High performance and cloud computing in scientific research and education IGI Global 2014
2. N.N. Sakhare, V.V. Meshram Meshram, S.A. Chiwhane Principles of concurent and distributed programming Nirali Prakashan 2015
3. B. Burns Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services O’Reilly Media 2018
4. C. Varela Programming Distributed Computing Systems: A Foundational Approach The MIT Press 201
5. E.Hewwit Technology Strategy Patterns: Architecture as Strategy O’Reilly Media 2018
6. J.F. Gonzalez Mastering Concurrency Programming with Java 9 – Second Edition: Fast, reactive and parallel application development, 2nd Revised edition edition Packt Publishing 2017
7. B. Wittman, A. Mathur, T. Korb Start Concurrent: An Introduction to Problem Solving in Java With a Focus on Concurrency Purdue University Press 2014
8. B. Benmammar Concurrent, Real-Time and Distributed Programming in Java: Threads, RTSJ and RMI Wiley-ISTE 2017
9. M. Raynal Concurrent Programming: Algorithms, Principles, and Foundations Springer 2013
10. B. Radenković, M. Despotović-Zrakić, Z. Bogdanović, D. Barać, A. Labus Materijali za predmet Konkurentno i distribuirano programiranje – projekat, u e-formi, sa portala za eučenje moodle.elab.fon.bg.ac.rs 2021
