C S 377 - Principles and Applications of Parallel Programming
Spring 2003 – Instructor: J. C. Browne
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.
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.