Concurrent Programming

Learning Outcomes

  1. recognize different types of concurrency
  2. explain concurrency mechanisms
  3. apply concurrency mechanisms in software
  4. analyze different problems in concurrent programs
  5. combine different mechanisms and develop program
  6. compare good and bad properties of some solution

Forms of Teaching

Lectures

attending lectures

Independent assignments

homework

Multimedia and the internet

recorded lectures

Laboratory

solving exercise in laboratory

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 4 % 20 % 4 % 20 %
Homeworks 0 % 10 % 0 % 0 %
Mid Term Exam: Written 0 % 30 % 0 %
Final Exam: Written 0 % 30 %
Final Exam: Oral 10 %
Exam: Written 0 % 60 %
Exam: Oral 10 %
Comment:

In oral exam (on final exam or normal exam) minimum is 50% for passing.

Week by Week Schedule

  1. Introductory considerations. Programming languages - concurrency and parallelism. Development of programming languages, types and features of languages from the point of view of application. Network management levels, models of processor and software systems.
  2. Processes and interprocess communication by exchanging messages. Presentation of parallelism in programming languages, communication and synchronization.
  3. Introduction to the Erlang programming language. Data types. Pattern matching. Modules and functions. Recursion. Branching. Higher order functions.
  4. Concurrent programming in Erlang. Creating a process. Selective and non-selective receiving of messages. Time control, registered processes. Exceptions.
  5. Distributed programming in Erlang language: Erlang in Docker, distributed mechanisms, robustness, process links, distributed process registration.
  6. Erlang programming forms: OTP, network server, RabbitMQ
  7. Concurrency in object-oriented languages. Concurrency in Java. Threads in Java, their states, priorities, groups, selfish threads.
  8. Midterm exam
  9. Concurrent programming in Java. Synchronization and multithreaded mechanisms (counting semaphor, synchronization of data collections, queue synchronization, data exchanger, barrier, ...)
  10. Application of coincurrent mechanisms in Java, graphics, network server, alarms.
  11. Concurrent model on the web: AJAX, JavaScript (async / await), long polling, SSE, WebSocket
  12. Web server concurrency: Spring Boot, connection pools, web service calls, message queues
  13. Reactive programming and performance
  14. Case study: industry experiences and new trends
  15. Final exam

Study Programmes

University graduate
Audio Technologies and Electroacoustics (profile)
Free Elective Courses (1. semester) (3. semester)
Communication and Space Technologies (profile)
Free Elective Courses (1. semester) (3. semester)
Computational Modelling in Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Computer Engineering (profile)
Elective Courses of the Profile (3. semester)
Computer Science (profile)
Free Elective Courses (1. semester) (3. semester)
Control Systems and Robotics (profile)
Free Elective Courses (1. semester) (3. semester)
Data Science (profile)
Free Elective Courses (1. semester) (3. semester)
Electrical Power Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Electric Machines, Drives and Automation (profile)
Free Elective Courses (1. semester) (3. semester)
Electronic and Computer Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Electronics (profile)
Free Elective Courses (1. semester) (3. semester)
Information and Communication Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Network Science (profile)
Elective Courses of the Profile (3. semester)
Software Engineering and Information Systems (profile)
Free Elective Courses (1. semester) (3. semester)

Literature

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

For students

General

ID 222631
  Winter semester
5 ECTS
L3 English Level
L1 e-Learning
30 Lectures
8 Laboratory exercises

Grading System

85 Excellent
75 Very Good
65 Good
55 Acceptable