Parallel Computing

Almost all computing devices are armed by multiple processors or multiple cores, pushing the availability of parallel computing to even devices such as smartphones or smart watches. This focus area equips students with core knowledge of parallel computing systems, algorithms, software engineering, and processors.  Students will learn to architect algorithms, software and solutions that can take full advantage of the latest hardware.

Primaries

The primaries of the focus area cover a broad spectrum of knowledge pertaining to parallel computing. Students interested in this area can take CS3210 Parallel Computing, which introduces students to key concepts and ideas in parallel computing systems. CS3211 Parallel and Concurrent Programming focuses on how one can develop software that exploits parallelism and concurrency for efficiency, including using software libraries, tools, and formal techniques for design and verification. CS4231 Parallel and Distributed Algorithms exposes students to algorithms for problem-solving in a parallel and/or distributed context. Finally, CS4223 Multi-core Architecture provides a deep perspective into the design issues of multi-core processors, such as memory, communication, and scheduling.

Electives

Students who are interested in the area of parallel computing can consider the following related electives:

  • CS5222 Advanced Computer Architectures is an advanced module that covers modern design techniques and issues in computer architectures, and is a natural follow up to CS4223.
  • CS5223 Distributed Systems and CS5224 Cloud Computing examine the principles and practice of designing and developing distributed computing systems and cloud computing systems respectively.
  • CS5239 Computer System Performance Analysis develops students’ expertise in modeling and analyzing the performance of computer systems, through mathematical models and measurements.
  • CS5250 Advanced Operating Systems looks at the design methodologies and considerations of modern OSes.