CS 625 Parallel and Distributed Computing

USF Computer Science Department

Spring 2014
MWF 11:45-12:50, LS 307

Professor: Peter Pacheco
Office: Harney 540
Phone: 422-6630
Email: user: peter, domain: usfca.edu
Office Hours: M 4-5:30, F 1-2, and by appointment
Class Website: http://cs.usfca.edu/peter/cs625
Class Mailing List: You will be automatically subscribed to the class mailing list. Please note that this list uses your USF email address. If you ordinarily read your email using another account, be sure to forward your USF email to the other account.
Prerequisites: The catalog shows no official prerequisites. However students who haven't had the equivalent of Data Structures and Algorithms (CS 245) will need to do some outside study to understand many of the lectures. Some knowledge of computer architecture and operating systems will also be useful.
Coursework and Grades: I will base your final grade on a seminar presentation, seminar participation, 5 programming assignments, a midterm, and a final exam, weighted as follows:
Seminar Presentation 10%
Seminar Participation 5%
Program 1 3%
Program 2 5%
Program 3 5%
Program 4 5%
Program 5 12%
Midterm 20%
Final Exam 35%
Total 100%
I will assign grades on a straight scale. Roughly, 90-100% is an A, 80-89% is a B, 65-79% is a C, 55-64% is a D, and 0-54% is an F.
Attendance: Attendance is not required. However, you are responsible for all of the material covered in class.
Academic Honesty: As a Jesuit institution committed to cura personalis - the care and education of the whole person - USF has an obligation to foster the values of honesty and integrity. The University requires that all the members of the academic community uphold its standards of honesty and integrity. All students are expected to know and adhere to the University's Honor Code. You can find the full text of the code online at http://www.usfca.edu/fogcutter.
From a practical standpoint it is fine for you to discuss programs with your classmates. Any other collaboration is unacceptable. In particular, copying another person's work is unacceptable. Students who violate these rules will receive an F in the course. Repeat violators may be subject to more severe punishment. In the past the University has expelled graduate students who have copied programs.

Learning Outcomes: In this course students will learn
  1. The basics of parallel architectures,
  2. How to write parallel programs using MPI,
  3. How to write parallel programs using Pthreads,
  4. How to write parallel programs using OpenMP,
  5. How to write CUDA programs,
  6. How to evaluate the performance of a parallel program,
  7. How to profile and debug parallel programs, and
  8. Fundamental parallel algorithms.

Tentative Course Outline:
Week Material
1/21-1/24 Preliminaries. Intro to parallel computing.
Foster's methodology.
1/27-1/31 Basic MPI.
Seminar 1, Friday, 1/31.
2/3-2/7 More on MPI. Pthreads.
Program 1 due, Wednesday, 2/5.
Seminar 2, Friday, 2/7.
2/10-2/14 OpenMP.
Seminar 3, Friday, 2/14.
2/18-2/21 Parallel architectures.
Seminar 4, Friday, 2/21.
2/24-2/28 GPU's and CUDA.
Program 2 due, Monday, 2/24.
Seminar 5, Friday, 2/28.
3/3-3/7 Parallel program performance.
Seminar 6, Friday, 3/7.
3/17-3/21 Parallel linear algebra.
Program 3 due, Wednesday, 3/19.
Midterm, Friday, 3/21.
3/24-3/28 Parallel Sorting.
Seminar 7, Friday, 3/28.
3/31-4/4 Task parallelism and dynamic load balancing.
Seminar 8, Friday, 4/4.
4/7-4/11 Distributed termination detection.
Program 4 due, Monday, 4/7.
Seminar 9, Friday, 4/11.
4/14-4/17 Graph algorithms.
Program 5 approval deadline, Monday, 4/14.
4/21-4/25 Dynamic programming.
Seminar 10, Friday, 4/25.
4/28-5/2 Fourier transforms.
Seminar 11, Friday, 5/2.
5/5-5/8 Program 5 reports.
Program 5 due, Monday 5/5.

File translated from TEX by TTH, version 4.03.
On 21 Jan 2014, 21:32.