CSCI 3366 (Introduction to Parallel and Distributed Processing), Spring 2002:
Review for Exam 2
The exam will be in class April 23. You will have 75 minutes.
You may use your textbook and any notes or papers you care to bring,
but you may not use other books, a calculator or computer,
or each other's papers.
The following are some kinds of questions that might be on the exam.
It is not necessarily an exhaustive list
of all types of questions on the exam,
but should give you an idea of what to expect.
- Multiple-choice and/or short-answer questions.
- Questions in which you are given a pseudocode algorithm or
some code (using MPI functions and/or POSIX threads functions)
and asked what it does, whether it works, how to fix it, etc.
- Questions in which you are asked to write a pseudocode algorithm
or some code (using MPI or POSIX threads)
to accomplish a given task.
You may be given some of the code and asked
to ``fill in the blanks'', or you may be given descriptions
of functions to use in your solution.
The emphasis on this exam will be on topics covered since the
previous exam, but the material is cumulative, so there may be
questions that require a basic understanding of earlier topics
as well.
You are also responsible for material in the assigned reading
(see the
Homeworks and Other Assignments
Web page for a complete list), except as noted below.
- In chapter 1, you may skip sections 1.3.2 and 1.3.3
(and skim 1.4 and the rest of 1.3).
- In chapter 2, you may skip sections 2.2.2, 2.3.4, and 2.4.2
(and skim the rest of 2.3).
- In chapter 4, you may skip section 4.2.2.
- In chapter 5, you may skip sections 5.3.3 and 5.3.4.
- In chapter 6, you may skip sections 6.1.1 through 6.1.4 and
6.3.1.
- In chapter 7, you may skip sections 7.3.2 through 7.3.4 and
7.4.
- In chapter 8, you may skip sections 8.2.1, 8.3.4, 8.3.5,
8.4.1, and 8.4.3.
- You are not responsible for understanding in detail the
mathematics behind the computations (e.g., you do not need to
know, for the program of Homework 2, exactly
what the numbers being computed mean, only how
to compute them in parallel).
- You may skip or skim the textbook's analyses of running time.
You are also responsible for all material covered in class.
Below is a list of topics we have covered;
it is not necessarily exhaustive, but should
give you an idea of what topics I consider most significant.
- Why parallel programming?
- Shared-memory and distributed-memory (message-passing)
paradigms.
- ``Speedup factor'' and Amdahl's law.
- Basics of message-passing programming (processes,
point-to-point communication, how to deal with lack
of shared memory).
- Basics of shared-memory programming (threads,
shared variables, synchronization mechanisms
and why they are needed).
- ``Embarrassingly parallel'' computations --
key idea (independent tasks), examples.
- Divide-and-conquer computations -- key idea, examples.
- Pipelined computations -- key idea, examples.
- Synchronous computations -- key idea, examples.
- Load balancing -- key ideas.
Berna Massingill
2002-04-19