STATE UNIVERSITY OF NEW YORK AT OSWEGO
Computer Science Department
I. COURSE NUMBER AND CREDIT:
CSC 375 - 3 S. H.
II. COURSE TITLE:
Parallel Computing
III. COURSE DESCRIPTION:
A survey of parallel hardware and software computing
technology and an introduction to parallel
programming. Topics will include an introduction to
parallel architectures, parallel algorithms, parallel
languages, parallel algorithm design, analysis, and
debugging.
IV. PREREQUISITES:
CSC 231 and CSC 241
V. JUSTIFICATION:
Problems that must be solved in many different
disciplines are rapidly becoming too large to be
approached using traditional computing techniques.
These problems require computers that are many orders
of magnitude faster than the fastest computers
available today. Parallel computing represents one
of the most feasible avenues to achieve the
performance necessary to solve these problems.
Because our students will see and use parallel
machines in graduate school and industry, an
undergraduate course in parallel program is required.
Writing parallel programs provides a special
challenge to the computer scientist. Classic
training teaches skills that are primarily sequential
in nature. The next generation of computer
scientists must be introduced to the parallel methods
of computing in order to produce the results that
will be required of them.
Parallel programming is different from traditional
programming in that a knowledge of the computer
architecture is often necessary to develop effective
parallel algorithms. It is essential that a parallel
programmer not only understand the programming
techniques required but also understand the hardware
on which the program runs.
This course will introduce students to parallel
computing in general. Students will be introduced to
the ideas and concepts of parallel computing,
parallel computing hardware, and programs. They will
be required to write a number of programs to develop
experience in parallel programming.
This course will be offered at least once every two
years servicing 25 students.
VI. COURSE OBJECTIVES:
As a result of this course, students will be able to:
1. Understand why parallel computing is needed.
2. Understand the limitations of parallelism.
3. Be exposed to a variety of parallel
architectures.
4. Design and implement software that takes
advantage of parallel hardware.
5. Analyze parallel algorithms.
6. Study a variety of applications that use
parallel techniques.
VII. COURSE OUTLINE:
1. Introduction to Parallel Computing
a) The need for higher-performance computers
b) Methods to achieve higher performance
c) Classifying architectures
d) Memory models
e) Network topologies
2. Parallel Architectures
a) Pipelined architectures
b) Multiprocessors
c) SIMD
d) MIMD
e) Hybrid
3. Designing Parallel Algorithms
a) Introduction
b) Speed-up
c) Parallel paradigms
d) Communication costs
4. Languages
a) Extension to Sequential Languages
b) Process Oriented
c) Object Oriented
d) Functional
5. Parallel Algorithms
a) Pipelines
b) Systolic Algorithms
c) Divide and Conquer
d) Sorting Networks
6. Algorithm Analysis
a) Measures
b) Complexity
c) Speed-up
d) Communication
7. Applications
a) Weather Prediction
b) Neural Networks
c) Database Systems
VIII. METHODS OF INSTRUCTION:
1. Lectures
2. Programming assignments
IX. COURSE REQUIREMENTS:
1. Readings from a main text and current and
current papers.
2. Individual programming assignments.
3. Class presentations.
X. MEANS OF EVALUATION:
1. Individual programming assignments.
2. Examinations.
3. Class presentations.
XI. RESOURCES:
No additional resources are required.
XII. BIBLIOGRAPHY:
Akl, Selim G. The Design and Analysis of Parallel
Algorithms. Englewood Cliffs, NJ: Prentice-Hall,
1985.
Akl, Selim G. Parallel Sorting Algorithms, Orlando:
Academic Press, 1985.
Almas & Gottlieb. Highly Parallel Computing, Menlo
Park, CA: Benjamin/Cummings, 1989.
Ben-Ari, M. Principles of Concurrent and
Distributed Programming, Englewood Cliffs, NJ:
Prentice-Hall, 1948.
Brawer, Steven, Introduction to Parallel
Programming, Orlando: Academic Press, 1989.
Burns, Allan, Programming in Occam2, Menlo Park,
CA: Addison-Wesley, 1988.
Gehani and Roome, The Concurrent C Programming
Language, New York: Silicon Press, 1989.
Hillis, W. D. The Connection Machine, 2nd ed.,
Cambridge, MA: MIT Press, 1985.
Hoare, C.A.R. Communicating Sequential Processes,
Englewood Cliffs, NJ: Prentice-Hall, 1985.
Inmos, Ltd. Occam2 Reference Manual, Prentice Hall
International Series, 1988.
Quinn, Michael J. Designing Efficient Algorithms for
Parallel Computers, New York: McGraw Hill, 1987.
Sedgewick, Robert. Algorithms, 2nd ed., Menlo Park,
CA: Addison-Wesley.
Wexler, John. Concurrent Programming in Occam2, New
York: John Wiley.
Last Updated: 7/9/07