By the end of the course you will be able to:
The final grade depends on the two exams and the assignments.
- The theory grade is T = 0.5 × grade of mid-term + 0.5 × grade of final exam. You need T ≥ 5 to pass the course.
- The practical grade P = 0.2 × first practical + 0.4 × second practical + 0.4 × third practical. You need P ≥ 5 to pass the course.
The final grade is computed as F = 0.5 × T + 0.5 × P. If you have done all of the practicals and at least one exam, then the final result of the course is:
- Passed with grade F (rounded to half points) if F ≥ 5.5 and T ≥ 5 and P ≥ 5.
- Not passed with grade 5.0 if F ≥ 5.5 but T < 5 or P < 5
- Not passed with grade F otherwise
If you have not submitted one of the practical assignments, or have not taken any of the exams, then the final result is:
The repair test requires a least a 4 for the original test.
- AANV if F ≥ 4
- NVD otherwise
The course introduces concepts of concurrency and parallelism through the programming language Haskell.
Concrete topics treated in this course include explicit management and synchronization of threads, as well as higher-level concurrency and parallelism abstractions. These ideas appear not only in Haskell, but in other modern languages such as C#, Scala, and Swift. An important part of the course is devoted to reasoning about the properties of concurrent programs.
The language Haskell imposes a strong separation between pure computations, which are always safe to execute in parallel, and those with side-effects, which may result in non-deterministic behavior when executed concurrently.
Per week 2 × 2 hour lecture and 2 × 2 hour tutorial). Attendance is not strictly mandatory (albeit recommended).
Slides from the lectures.
Recommended reading: "Parallel and Concurrent Programming in Haskell "by Simon Marlow
For more information see the course website: https://www.cs.uu.nl/docs/vakken/b3cc/index.html