The official course description from SoC/NUS is as follows:
A concurrent system consists of a set of processes that executes simultaneously and that may collaborate by communicating and synchronising with one another. Examples of concurrent systems are parallel programs that describe sets of collaborating processes. This module introduces the design, development and debugging of parallel programs. It will build on the concurrency concepts gained from the Operating Systems module. It covers concepts and modelling tools for specifying and reasoning (about the properties of) concurrent systems and parallel programs. It also covers principles of performance analysis, asynchronous and asynchronous parallel programming, and engineering concurrent systems and parallel programs.
We expect to explore the following components/topics during the course (John can you correct me on this - have I missed anything?):
- Theoretical background to speedup (Amdahl/Gustafson and so on), and performance analysis.
- Practical experience in measurement and performance analysis of programs (in projects).
- Analysis of concurrency issues that arise in parallel systems, along with practical experience in modelling parallel systems and analysing their behaviour for correctness (this year using CSP).
- Practical experience (through projects), with GPU programming (using webgl or gpu.js on your own PC), openMP programming, and HPC (most likely using MPI on the NSCC computer - see http://www.nscc.sg/).
- Architectural approaches - an overview of current architectures (multicore, GPU, ... ), and also some research/future approaches (perhaps cellular automatons). This component will include information on architectural issues in building parallel systems (communication architectures and so on).
- Language, design and algorithmic issues - an overview of languages for parallelism, discussion on design approaches for parallelism, and also the common algorithm types used in HPC (The famous dwarves - monte-carlo, map reduce and so on).
- Accuracy issues - an overview of issues in accuracy in representation of values - which is compounded in a parallel environment. John will also show some research/future approaches.
I hope this clarifies the content of the course.