Department of Computer Science and Technology

Course pages 2018–19

Multicore Semantics and Programming

This course is offered to both Part II and ACS/Part III students. A core set of exercises and practical work is completed by students on both courses. A further set of additional questions are to be completed by ACS/Part III students to provide the opportunity to demonstrate the qualities that are expected for the higher ACS/Part III grades.

Assessment Overview

  • Assignment 1, for 50% of the overall grade. Written coursework comprising a series of questions on hardware and software relaxed-memory concurrency semantics.
  • Assignment 2, for 25% of the overall grade. Written coursework comprising a series of questions on the design of mutual exclusion locks and shared-memory data structures.
  • Assignment 3, for 25% of the overall grade. Practical report.

Submission Deadlines

Friday 30th November 2018

Assessment Details

First part: exercises

The written coursework comprises a series of questions on hardware and software relaxed-memory concurrency semantics.

Assignment 1, written coursework for 50% of the overall grade.

Second part: exercises

Assignment 2, written coursework for 25% of the overall grade.

The written coursework comprises a series of questions on the design of mutual exclusion locks and shared-memory data structures. Pseudo-code can be used when writing algorithms, and a sequentially-consistent memory model can be assumed. For questions about performance, it is sufficient to describe how an algorithm is likely to interact with a classical MESI cache in a machine with multiple cores and/or multiple sockets.

Second part: practical report

Assignment 3, practical report and example code.

The report is required to describe the experiments carried out to a sufficient level of detail to enable someone else to repeat them. The report should include information about the hardware and software used (such as the operating system and compilers). The report should also describe the experimental techniques that were used, such as how the timed portions experiments were run, how variability between runs was examined, and how you confirmed that results are showing stable behavior rather than “warm up” effects. In addition, the report should describe any control made over the placement of threads within the machine (e.g., whether threads were placed on the same socket, or on different sockets). On Unix, tools such as “top” may be used to watch the behavior that occurs in practice. On Windows, the task manager tool may provide this information.