- To provide students with a deep, critical and systematic understanding of key issues and effective solutions for parallel programming for systems with multi-core processors.
- To develop students appreciation of a variety of approaches to parallel programming, including using a low level raw thread model and a high level task-based programming.
- To develop the students skills in parallel programming using Intel Threading Building Block library.
- J. Reinders: Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism. O'Reilly (latest edition).
- Walter J. Savitch: Absolute C++ . Pearson/Addison-Wesley (latest edition).
Formal lectures : In a typical week, students will be expected to attend two to three hours of formal lectures per week. In the lectures the main concepts and methods covered by the module will be introduced.
Pacticals/Tutorials: Students will be expected to attend one to two hours of supervised tutorials/computer lab practicals, which would allow students to perform practical exercises. The tutorial/lab exercises will focus on the design, implementation and analysis of parallel programs using approaches disscussed in the lectures. Whenever appropriate the remotely accessible Intel's Manycore Testing Lab will be used for testing and scalability analysis of proposed solutions.
Private study: In atypical week students will be expected to devote 9 hours of unsupervised time to private study. Private study will provide time for reflection and consideration of lecture material, background reading and completion of the assessment tasks.
Assessment: Continuous assessment, consisting of programming assignments that will necessitate the development of parallel programs running on multicore systems and analysis of their efficiency and scalability, will be used to test to what extent practical skills have been learnt. A written examination at the end of the module will assess the academic achievement of students.