University of Belgrade, Faculty of organizational sciences

Department for e-business

Konkurentno i distribuirano programiranje – projekat

Ishod predmeta

Studenti, preko teorijske nastave i projekta stiču teorijska i praktična znanja neophodna za razvoj i implementaciju paralelizovanih programa i kompleksnih distribuiranih računarskih sistema koji imaju konkretnu primenu u elektronskom poslovanju.

Cilj predmeta

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.

Sadržaj

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, događaj, uslov i monitor. Koordinacija i sinhronizacija procesa u distribuiranim računarskim sistemima. Upravljanje procesima, memorijom i uređajima 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.

Cilj predmeta

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.

Literatura

  1. Despotović-Zrakić M., Milutinović V., Belić A. (Eds), High performance and cloud computing in scientific research and education, monografija, 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, 2013.
    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, Packt Publishing; 2nd Revised edition edition, 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. Materijali u e-formi, sa portala za e-učenje moodle.elab.fon.bg.ac.rs