C S 377  - Principles and Applications of Parallel Programming

 

Spring 2003 – Instructor: J. C. Browne

 

 

1. Overview

 

Parallel programming is broadening from its traditional applications in engineering and scientific computation to data intensive and time-critical applications.  The rise of the Internet and the Grid has opened new opportunities for exploitation of parallelism. 

 

This class will introduce principles, methods and techniques for design, implementation and use of parallel and distributed programming systems.  The target audience are those interested in developing parallel and distributed applications and those interested in developing tools and methods for programming parallel and distributed applications.

 

We will use a broad range of parallel execution environments ranging from small multiprocessors to clusters operated by TACC to the Internet itself.

 

2. Lectures

 

The lecture topics to be covered will include:

 

Models of Parallel Computation

Representative Parallel/Distributed Algorithms

Overview of Parallel Architectures

Design of Parallel Programs

Measurement and Evaluation of Parallel Programs

Selected Parallel Programming Languages

Compilation of Parallel Programming Languages

Debugging of Parallel Programs.

 

3. Reference Materials and Notes

 

The text for the class is "Fundamentals of Parallel Processing" by Jordan and Alaghband.  This book is a survey of topics.  It will be supplemented by more detailed reference materials including selected papers from the classical and recent literature, copies of class notes and selected parallel programming systems available from parallel programming research groups.

 

4. Work Requirements and Grading

 

CS377 combines concepts and applications.  There will be outside assignments based on the lectures and a project where class participants will develop a parallel program and measure and analyze the execution properties of the parallel program.

 

a) Programming Project – Each participant will create a substantive parallel program in an area of interest, probably in the language system they analyzed.  Each participant can propose a project or the instructor will assign projects for those who do not have a project they wish to pursue. Projects may span from numerical computations on multiprocessors to web-based collaboration systems.  Program design and development will follow good practice.  Programs will be analyzed for its properties such as speed-up and scalability and the execution behavior of the programmed measured and modeled..  Each participant will give a presentation and prepare a report on the project and the resulting program.

 

b)  Examinations - There will be two examinations, a mid-term and a final exam.  Examinations are open book and open notes and may scheduled for an evening.

 

c) Grades - Grades will be 40% on the projects and 40% on the examinations and 20% on the outside assignments. 

 

5. Lecture Schedule and References

 

A schedule of lecture topics and the reference material for each lecture will be posted before the 3rd class meeting.

 

6. Academic Honesty

 

The University has rules of conduct for students.  It is expected that you are or will make yourself familiar with these rules of conduct and abide by them.