Objectives and Content
The course introduces principles for programming secure, reliable and robust software in a multi-threaded or multi-process environment.
Concurrent programming techniques are particularly central to the course, but related techniques such as event-driven programming may also be covered. The course combines a strong theoretical foundation with practical exercises.
- knows common models for concurrency (software and data structures), such as shared memory, message-passing, actors, futures, and data-parallelism primitives,
- can explain the potential run-time problems arising from the concurrent operation of many separate tasks,
- can prove the most important synchronisation protocols.
- can write correct concurrent programs using appropriate programming models,
- can use synchronisation primitives in appropriate ways,
- can model a concurrent process using a formal method, and
- can use tools for analysis and verification of concurrent processes.
- can solve a varied set of problems using concurrency,
- can communicate independent work and masters language and terminology of the academic field, and
- can communicate with concurrency specialists about academic issues, analyses and conclusions in the field.
Level of Study
Semester of Instruction
Required Previous Knowledge
Credit Reduction due to Course Overlap
Access to the Course
Teaching and learning methods
Lectures: up to 4 hours per week in 13 weeks, a total of about 40 hours.
Exercise class: 2 hours per week for.
In addition, exercises and self-studies, for a total of 270 study hours.
Compulsory Assignments and Attendance
Compulsory assignments are valid two semesters: the semester when they are approved and the succeeding semester.