• Home
  • About
  • Mobile
  • Open Content
  • Search

Module Overview


  • Description
  • Facilitators
  • Weblinks
  • Timetable
CS3211 

PARALLEL AND CONCURRENT PROGRAMMING
   2016/2017, Semester 2
   School of Computing (Computer Science)
Modular Credits: 4
  Tags: --

Prerequisites

TopCS2106 or CG2271

Workload

Top2-1-0-3-3

Workload Components : A-B-C-D-E
A: no. of lecture hours per week
B: no. of tutorial hours per week
C: no. of lab hours per week
D: no. of hours for projects, assignments, fieldwork etc per week
E: no. of hours for preparatory work by a student per week

Course Outline

Top

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.


Contact

  • IVLE Webmaster

Social Media

Latest Alerts

  • IVLE scheduled maintenance every Tuesday 0300 hrs - 0700 hrs

Centre for Instructional Technology

Legal  |  Acceptable Use Policy

Copyright © 2015, National University of Singapore. All rights reserved.