Students will deeply understand concepts of concurrency and parallelism in systems and networks. They will gain practical knowledge in concurrent and distributed programming, including concepts of processes and threads, as well as inter-process communication and multithread mechanisms. Students will have practical skills to implement concurrent and distributed applications by using programming languages Java and Erlang.
- 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
homework, midterm and final examLaboratory Work
work in laboratoryExperimental Exercises
|Type||Threshold||Percent of Grade||Threshold||Percent of Grade|
|Laboratory Exercises||0 %||20 %||0 %||20 %|
|Homeworks||0 %||10 %||0 %||10 %|
|Mid Term Exam: Written||0 %||30 %||0 %|
|Final Exam: Written||0 %||30 %|
|Final Exam: Oral||10 %|
|Exam: Written||0 %||60 %|
|Exam: Oral||10 %|
Students need 50% on oral exam in order to pass exam. Students need to have all homework successfully accomplished.
Week by Week Schedule
- Introduction. Program languages - concurrency and parallelism. Development of programming languages, types, properties, application. Network layers, processor and programming models.
- Processes and inter-process message passing communication. Visualization of parallelism in programming languages, communication, synchronization.
- Declarative programming languages. Programming language Erlang.
- Concurrent programming in Erlang. Creating processes, pattern matching, selective and non-selective message receiving, time control, proces registration.
- Distributed programming in Erlang. Referential transparency, build-in functions, robustness, process links.
- Erlang OTP: programming framework for development of reliable system with fault tolerance, case study
- Connecting programs in Erlang and Java: ports, Socket/UDP, JInterface, Thrift
- Midterm exam.
- Concurrency in object oriented languages. Concurrency extensions and models for object oriented languages. Concurrency in Java. Java threads, thread states, priorities, selfish threads.
- Concurrent programming in Java. Synchronization and multi-threaded mechanisms (counting semaphore, synchronized collections, queue synchronization, data exchanger, barrier, lock pattern, thread recycling).
- Application of concurrent Java mechanisms, graphics, network server, remote procedure call, alarms.
- Concurrent model on web (Java EE, AJAX)
- Concurrency in web server: long pooling, WebSocket, connection pool, calling web services.
- Case study: experiences from industry and new trends.
- Final exam