Concurrent Programming
Data is displayed for academic year: 2023./2024.
Lecturers
Associate Lecturers
Laboratory exercises
Course Description
Concurrency and parallelism of processes, threads and fibers in a network communication: simultaneous of requests and services, internal parallelism of request and service processes, concurrency in control flows. Communicating processes, inter-process communication, parallelism and concurrency. Languages for programming of distributed and telecommunication systems: process definition, sychronous and asynchronous communication, real time, continuous of operations, deadlocks, stagnation, multithreaded safety, liveness. Parallelism of processes, threads and fibers and scheduling of tasks. Principles of concurrent functional, reactive and distributed programming. Concurrency in object oriented and functional languages. Synchronisation and coordination mechanisms. Reactive programming. Programming languages Erlang and Java.
Study Programmes
University graduate
[FER3-HR] Audio Technologies and Electroacoustics - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Communication and Space Technologies - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Computational Modelling in Engineering - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Computer Engineering - profile
Elective Courses
(3. semester)
Elective Courses of the Profile
(3. semester)
[FER3-HR] Computer Science - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Control Systems and Robotics - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Data Science - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Electrical Power Engineering - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Electric Machines, Drives and Automation - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Electronic and Computer Engineering - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Electronics - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Information and Communication Engineering - profile
Elective Courses
(1. semester)
(3. semester)
[FER3-HR] Network Science - profile
Elective Courses
(3. semester)
Elective Courses of the Profile
(3. semester)
[FER3-HR] Software Engineering and Information Systems - profile
Elective Courses
(1. semester)
(3. semester)
[FER2-HR] Telecommunication and Informatics - profile
Specialization Course
(3. semester)
Learning Outcomes
- recognize different types of concurrency
- explain concurrency mechanisms
- apply concurrency mechanisms in software
- analyze different problems in concurrent programs
- combine different mechanisms and develop program
- compare good and bad properties of some solution
Forms of Teaching
Lectures
attending lectures
Independent assignmentshomework
Multimedia and the internetrecorded lectures
Laboratorysolving 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
- 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.
- Processes and interprocess communication by exchanging messages. Presentation of parallelism in programming languages, communication and synchronization.
- Introduction to the Erlang programming language. Data types. Pattern matching. Modules and functions. Recursion. Branching. Higher order functions.
- Concurrent programming in Erlang. Creating a process. Selective and non-selective receiving of messages. Time control, registered processes. Exceptions.
- Distributed programming in Erlang language: Erlang in Docker, distributed mechanisms, robustness, process links, distributed process registration.
- Erlang programming forms: OTP, network server, RabbitMQ
- Concurrency in object-oriented languages. Concurrency in Java. Threads in Java, their states, priorities, groups, selfish threads.
- Midterm exam
- Concurrent programming in Java. Synchronization and multithreaded mechanisms (counting semaphor, synchronization of data collections, queue synchronization, data exchanger, barrier, ...)
- Application of coincurrent mechanisms in Java, graphics, network server, alarms.
- Concurrent model on the web: AJAX, JavaScript (async / await), long polling, SSE, WebSocket
- Web server concurrency: Spring Boot, connection pools, web service calls, message queues
- Reactive programming and performance
- Case study: industry experiences and new trends
- Final exam
Literature
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
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
L1 English Level
L1 e-Learning
30 Lectures
0 Seminar
0 Exercises
8 Laboratory exercises
0 Project laboratory
Grading System
85 Excellent
75 Very Good
65 Good
55 Sufficient