SluitenHelpPrint
Switch to English
Cursus: INFOB3CC
INFOB3CC
Concurrency
Cursus informatie
CursuscodeINFOB3CC
Studiepunten (EC)7,5
Cursusdoelen

By the end of the course you will be able to:

  • Design and implement a multithreaded application in Haskell, using techniques and concepts such as:
    • Managing threads
    • Synchronise with locks, semaphores, etc.
    • Data-flow parallelism
    • Data-parallelism
  • Understand the difference between concurrency and parallelism and where techniques for each can be applied to solve problems

  • Calculate the complexity (work and span) of parallel algorithms

  • Reason about the properties of a concurrent algorithm
Assessment
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:

  • AANV if F ≥ 4
  • NVD otherwise
The repair test requires a least a 4 for the original test.
Inhoud

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.

Course form
Per week 2 × 2 hour lecture and 2 × 2 hour tutorial). Attendance is not strictly mandatory (albeit recommended).

Literature
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

SluitenHelpPrint
Switch to English