NFYK17001U Extreme Multiprogramming (XMP)
Multithreaded programming is often considered complex, and
classic concurrency problems, such as race conditions and deadlocks
occur frequently in multithreaded programs. The overall purpose of
this course is to enable the student to use threading as the
primary design mechanism for large, maintainable, and
high-performance applications.
The course will equip the student with the tools, primarily
Communicating Sequential Processes (CSP), required to understand
and apply concurrency as a fundamental tool for building both
computational platforms (systems-level programming) and end-user
applications. It contains a brief introduction to the abstract CSP
algebra and in depth concrete realizations in practical programming
systems.
At course completion, the successful student will have:
Knowledge of:
The CSP framework: concepts, notation, and reasoning principles.
CSP-based libraries and languages, such as PyCSP, Go, or Occam.
Implementation techniques for efficiently executing concurrent programs on highly parallel platforms.
Tools for automatic analysis and verification of concurrent systems.
Skills to:
Design and implement highly concurrent programs using the CSP paradigm.
Analyze and verify properties of concurrent programs (or program fragments), with respect to both correctness and performance.
Reduce to overall complexity of managing concurrency by means of compositionality
Competences to:
Construct and validate maintainable, high-performance concurrent and/or parallel applications according to sound structuring and reasoning principles.
Communicate effectively and rigorously about key aspects of concurrent systems in both theoretical and practical contexts.
See Absalon for final course material. The following is an example of expected course litterature.
Selected articles and notes.
Supplementary textbook: Tony Hoare, Communicating Sequential Processes (freely downloadable from usingcsp.com);
- Category
- Hours
- Exam
- 50
- Lectures
- 28
- Preparation
- 128
- Total
- 206
As
an exchange, guest and credit student - click here!
Continuing Education - click here!
- Credit
- 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.
- Aid
- All aids allowed
- Marking scale
- 7-point grading scale
- Censorship form
- No external censorship
Several internal examiners
- Re-exam
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.
Course information
- Language
- English
- Course code
- NFYK17001U
- Credit
- 7,5 ECTS
- Level
- Full Degree Master
- Duration
- 1 block
- Placement
- Block 2
- Schedule
- B
- Course capacity
- No limit
- Continuing and further education
- Study board
- Study Board of Mathematics and Computer Science
Contracting department
- The Niels Bohr Institute
Course Coordinators
- Brian Vinter (6-7e71767c6d7a48766a7136737d366c73)