DM563: Concurrent Programming
Comment
Entry requirements
Academic preconditions
Course introduction
The course aims at describing and explaining the fundamental concepts and techniques of concurrent programming, where programs use multiple interacting threads or processes. Besides a systematic treatment of concepts and methods for concurrency, the course focuses on applying the methods to gain experiences in concurrent programming.
- Give the competence to: handle complex and development-oriented situations in academic and work settings; identify own learning needs and structure own learning in different learning environments.
- Give skills to: make and justify decisions based on the education; describe, formulate and communicate problem statements and results to peers and non-specialists or partners and users.
- Give knowledge and understanding of principles for the design of computer systems, including distributed and parallel systems.
Expected learning outcome
After the course the student is expected to be able to:
- identify the use of concurrency in programs
- describe the concurrency mechanisms covered in the course
- explain fundamental problems, techniques, and solutions for concurrent programs
- reason about properties of concrete concurrent programs
- describe and analyze concurrent architectures using model-based approaches
- design and implement non-trivial concurrent programs
- account for some common concurrent program architectures
Content
The following main topics are contained in the course:
- Processes
- threads
- monitor concept
- shared memory
- synchronization
- safety and liveness
- modellling of concurrency
- dynamic systems
- message passing
- concurrent architecture.
Literature
Examination regulations
Exam element a)
Timing
Tests
Mandatory project
EKA
Assessment
Grading
Identification
Language
Examination aids
ECTS value
Indicative number of lessons
Teaching Method
Teaching activities are reflected in an estimated allocation of the workload of an average student as follows:
- Intro phase (lectures) - 20 hours
- Training phase: 22 hours, including 22 hours laboratory
75% of teaching activities will take place online, both synchronously (live chat) and asynchronously (videos and exercises).
Both frontal lectures and training hours are focused on the application of techniques for concurrent programming to concrete problems. The difference is in the teaching method. In frontal lectures, learning will be driven by discussions directed by the teacher, whereas in training hours the students will have to try applying the concepts first.
Activities during the studyphase:
- Reading of course material
- Reflection on methods and theoretical concepts