University of Belgrade, Faculty of organizational sciences

Department for e-business

Concurrent and distributed programming

Study program TeachersCourse statusESPB
Software engineering and electronic bussinesBožidar LJ. Radenković, Marija S. Despotović-ZrakićElective10

The aim of the course

The aim of the course is to train students for independent scientific research and solving specific and current research problems in e-business by developing parallel concurrent programs, which are executed in distributed computing environments.


Course outcome

Students are able to design and implement research in the field of application of advanced concepts of distributed computer systems and parallel and concurrent programming. Students are familiar with the concepts of concurrent programming in different programming environments, as well as with current research results and are able to critically analyze them. Also, students are trained to apply the results of research work in practice.


Course content

Historical review and analysis of the most important scientific papers that have influenced the development of concurrent and distributed programming. Characteristics of competing, parallel and distributed programs, formal models, programming languages, operating systems and hardware architectures. Multiprogram system kernel. Distributed and competing application environments. Flunn’s classification, MIMD machines. Typical organizations of multiprocessors and computer networks, clusters. Distributed computer systems. Typical problems of communication and process synchronization. System and architectural means to control access to a critical region: region, traffic light, event, condition and monitor. Coordination and synchronization of processes in distributed computer systems. Manage processes, memory, and devices in a distributed environment. An overview of known programming and communication models of distributed and concurrent programming. Event, service and process based programming. Process and service oriented architectures based on distributed messaging. Development environments for distributed systems. Examples of applications: P2P networks, distributed file systems, distributed databases, business analytics, blockchain technologies. Review of current scientific research problems in e-business and analysis of the possibility of solving using the concepts of concurrent, parallel and distributed programming. Specifics of the methodology of scientific research work in the field of concurrent and distributed programming: review of open problems, required infrastructure, evaluation methods, review of journals and scientific conferences where the results can be published.

Literature

1. Despotović-Zrakić M., Milutinović V., Belić A. (Eds), High performance and cloud computing in scientific research and education, monografija, IGI Global, 2014.
2. Ben-Ari , Principles of concurent and distributed programming, New York: Prentice-Hall 1991.
3. Burns, Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services, O’Reilly Media, 2018
4. Varela, Programming Distributed Computing Systems: A Foundational Approach, The MIT Press, 2013.
5. Hewwit, Technology Strategy Patterns: Architecture as Strategy, O’Reilly Media, 2018.
6. F. Gonzalez, Mastering Concurrency Programming with Java 9 – Second Edition: Fast, reactive and parallel application development, Packt Publishing; 2nd Revised edition edition, 2017.
7. Wittman, A. Mathur, T. Korb, Start Concurrent: An Introduction to Problem Solving in Java With a Focus on Concurrency, Purdue University Press, 2014.
8. Garg, Concurrent and Distributed Computing in Java, Wiley-IEEE Press, 2014.
9. Benmammar, Concurrent, Real-Time and Distributed Programming in Java: Threads, RTSJ and RMI, Wiley-ISTE, 2017.
10. Raynal, Concurrent Programming: Algorithms, Principles, and Foundations, Springer, 2013.
11. Materials in e-form from the e-learning portal www.moodle.fon.bg.ac.rs