NFYK18002U Concurrent and Distributed Systems
MSc Programme in Physics
A large set of computer applications are inherently asynchronous, meaning that the program execution order is cannot be scheduled at the time the program is written. The asynchronicity may arise from several sources, such as events, instrument observations, human input, or a combination of program states that trigger a new state. The challenges that stems from asynchronicity are amplified by the fact that any computer CPU has a number of processor-cores, and this number is steadily rising. Thus, working with programs that may have an enormous state-space, and processing these on many-core systems, often triggers errors such as program deadlock, race-conditions, and other more exotic errors. These errors are impossible to test for and hard eliminate with debugging. Thus, the class will introduce a formal algebra, CSP, that provides programmers the means of formally proving that a program is free from a set of known concurrency errors. Tools that automate these proofs and techniques for writing efficient concurrent and correct programs are central to the class. Tools that map solutions to hardware, rather than programs, are also covered.
Many application domains include several, independent, computers that communicate through a network, forming a distributed system. In addition to concurrency errors, such systems must also function in the presence of hardware errors. The class introduces the additional error-models that may arise in distributed systems and the common techniques for addressing these.
At course completion, the successful student will have:
- Multi- and many-core hardware
- The CSP programming abstraction: concepts, notation, and reasoning principles.
- CSP-based tools, libraries and verification systems.
- Implementation techniques for efficiently executing concurrent programs on highly parallel platforms.
- Distributed systems and managing errors in these
- Write programs that may be formally verified.
- Design and implement highly concurrent programs.
- Design a distributed, fault tolerant, system.
- Construct and validate maintainable, high-performance concurrent and/or parallel applications according to sound structuring and reasoning principles.
- Construct and manage distributed systems.
See Absalon for final course material.
- 7,5 ECTS
- Type of assessment
- Written assignment, 12 daysAn individually written report based on a fixed assignment, containing both design, reasoning and programming tasks. The report is due on the last day of the exam period and is submitted electronically.
- Exam registration requirements
All mandatory homework assignments (three to five) must be approved for the student to participate in the exam.
- All aids allowed
- Marking scale
- 7-point grading scale
- Censorship form
- No external censorship
Several internal examiners
One-week take-home assignment + 30-minute oral examination without preparation; electronic submission.
If student is not yet qualified for the exam, qualification can be achieved by hand-in and approval of equivalent assignments. The assignments must be submitted no later than 14 days before the start of the re-exam.
Criteria for exam assesment
See learning outcome.