Course description
The course introduces concepts of concurrency and parallelism through the programming language Haskell.
Concrete topics treated in this course include explicit management and synchronisation of threads, as well as higherlevel 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 sideeffects, which may result in nondeterministic behaviour when executed concurrently.
Schedule
The load per week is 2 × 2 hour lectures and 2 × 2 hour working college. Attendance is not strictly mandatory, albeit recommended.
Grading
The final grade depends on the two exams and the assignments.

The theory grade is T = 0.5 × grade of midterm + 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 exams, then the final result of the course is:

Passed with grade F (rounded to one decimal place) if F ≥ 5.5 and T ≥ 5 and P ≥ 5.

Not passed with grade 5 if F ≥ 5.5 but T < 5 or P < 5

Not passed with grade 5 if 5.0 ≤ F < 5.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:

AANV if F ≥ 4

NVD otherwise
If you didn’t pass the course, you may do a retake if the final result is at least a 4 or AANV (see EER/OER). You may attempt the retake exam if T < 5. There will be a single retake exam covering the entire content of the course. Your final theory grade will then be whatever combination of the three exams that (a) covers the entire course content; and (b) gives you your highest final grade. That is:
 T = MAX ( 0.5 × T1 + 0.5 × T2, 0.5 × T1 + 0.5 × T3, 0.5 × T2 + 0.5 × T3, T3 )
You may attempt the retake practical if P < 5. For the practical retake you may resubmit one of the practical assignments you have previously attempted. If you choose the second or third practical, it must be done individually.
If F < 5.5 and T ≥ 5 and P ≥ 5 you may attempt both the practical and exam retakes.
Contact me to discuss transporting practical results from previous years.
Grading for 5EC for exchange students
Exchange students that leave before Christmas can follow this course for 5EC. The third practical assignment and the second exam are then not part of the course. The final grade is then computed with the following changes:
 The theory grade T is the grade of the first exam.
 The practical grade P is 0.333 × first practical + 0.667 × second practical.
When performing a retake exam, its grade will replace the entire theory grade.