Syllabus
Instructor
Textbook:
Course prerequisites: CSC 246 or CSC 451 or CSC 501 (Operating
Systems).
Helpful: CSC 253 (C and C++ for Java Programmers), CSC 234 (Computer Organization & Assembly Language).
Course purpose: This class prepares you to understand
advanced research issues in parallel programs.
You will be introduced to parallel systems
as well as various advanced topics. The material will cover numerous research
papers besides the textbook. Current research will be presented by students
and discussed to give a better understanding of open issues in parallel systems.
Course objectives: By the end of the course, you
should be able to do the following things:
- Parallel computing basics: understand
the concepts of parallel computing, parallel systems' architecture,
and parallel algorithms.
- Parallel programming: understand the two
popular parallel programming paradigms (message passing and shared
memory); learn to design and implement parallel programs using
popular libraries in these paradigms (MPI and OpenMP); use parallel
execution environment to compile parallel programs and submit
parallel jobs; perform basic performance benchmarking and analysis.
- Parallel programs' performance:
understand major performance issues for parallel systems and
programs; critique different implementation choices; comprehend the
limitations of parallelization in terms of efficiency and
scalability; apply performance evaluation and analysis techniques to
one's own programming projects.
- Research topics: reiterate hot topics in
research on parallel computing; judge the relevance and impact of
novel approaches on the field; present recent results in a
comprehensive manner; identify open problems; prototype solutions to
selected hot topics and open problems; demonstrate the benefits of
such implementations by methodological evaluations.