Introduction to Parallel Programming
Syllabus, Master's level, 1DL530
- Education cycle
- Second cycle
- Main field(s) of study and in-depth level
- Computer Science A1N, Technology A1N
- Grading system
- Fail (U), Pass (3), Pass with credit (4), Pass with distinction (5)
- Finalised by
- The Faculty Board of Science and Technology, 9 March 2017
- Responsible department
- Department of Information Technology
120 credits including 20 in computer science including a second course in programming using an imperative and object-oriented language and Algorithms and Data Structures I.
To pass the course, the student should be able to
- explain and recognize basic concepts of concurrent and parallel computation,
- write and modify programs that use threads and locks to exploit shared-memory concurrency,
- explain common issues in shared-memory programming and use synchronization to avoid these issues,
- implement solutions for fundamental synchronization problems,
- explain consistency models and apply them to reason about the correctness of concurrent programs,
- identify potential for concurrency or parallelism in sequential algorithms, and reimplement them accordingly.
Basic concepts of concurrent and parallel computation, e.g., speedup and parallel slowdown, Amdahl's law, Flynn's taxonomy, instruction-level parallelism, data independence. Shared-memory concurrency based on threads and locks, and its use in a language such as C++. Associated concepts and issues, e.g., synchronization, non-determinism, data races, deadlocks, fairness. Fundamental synchronization problems, such as the producer-consumer problem, and techniques for their solution. Consistency models such as linearizability and sequential consistency. The fork-join model. Task parallelism vs. data parallelism.
Oral and written examination of assignments. Written exam.
The course cannot be included in the same degree as 1DL540 Language Abstractions For Concurrent and Parallel Programming, 10 ECTS credits, or 1DT096 Operating Systems and Process Oriented Programming.