Lecture Time and Location. MoFr 1:00 pm  2:20 pm, Javits 101, West Campus
Instructor. Rezaul A. Chowdhury (rezaul{at}cs{dot}stonybrook{dot}edu)
Office Hours. MoFr 3:00 pm  4:30 pm, 239 New Computer Science Building
Course Description. We will explore algorithms and techniques for programming stateoftheart sharedmemory (e.g., multicores) and distributedmemory parallel computers. The course will include both theoretical and programming components. Topics to be covered include: analytical modeling of parallel programs, bounds on parallel performance, scheduling, synchronization, programming using the messagepassing paradigm and for shared addressspace platforms, parallel algorithms for dense matrix operations, sorting, searching, graphs, computational geometry, and dynamic programming, concurrent data structures, and transactional memory.
This course is supported by an educational grant from XSEDE (Extreme Science and Engineering Discovery Environment). We will use the computing environment provided by XSEDE for all homeworks and projects. Students will have access to the following supercomputing resources: Stampede, Comet and SuperMIC.
Prerequisites. Background in algorithms analysis (e.g., CSE 373 or CSE 548) and programming languages (e.g., C/C++) is required (or consent of instructor). Computer architecture background (e.g., CSE 320 or CSE 502) will be helpful, but not essential.
Recommended Textbooks.
Course Requirements. There will be 3 homework assignments (with both theory and programming components) and a final group project. Each student will be responsible for scribing one lecture. The course grade will be based on the following.
Blackboard. Some course documents will be available through Blackboard.
Lecture Schedule.
Date  Topic  Notes / Reading Material 
Mon, Jan 23  Introduction   
Fri, Jan 27  Analytical Modeling of Parallel Programs 

Mon, Jan 30  Analytical Modeling of Parallel Programs (continued) 

Fri, Feb 3  The Cilk++ Concurrency Platform 

Mon, Feb 6  The Cilk++ Concurrency Platform (continued) 

Fri, Feb 10  The Cilk++ Concurrency Platform (continued) Greedy Scheduling Scheduling and Work Stealing (continued to next lecture) 

Mon, Feb 13  Scheduling and Work Stealing 

Fri, Feb 17  Scheduling and Work Stealing (continued) 

Mon, Feb 20  Scheduling and Work Stealing (continued) 

Fri, Feb 24  High Probability Bounds Basic Parallel Algorithmic Techniques 

Mon, Feb 27  Basic Parallel Algorithmic Techniques (continued) 

Fri, Mar 3  Analyzing DivideandConquer Algorithms 

Mon, Mar 6  Analyzing DivideandConquer Algorithms (continued) 

Fri, Mar 10  Parallel Quicksort and Selection 

Mon, Mar 13  Spring Break   
Fri, Mar 17  Spring Break   
Mon, Mar 20  Parallel Quicksort and Selection (continued) 

Fri, Mar 24  Parallel Quicksort and Selection (continued)   
Mon, Mar 27  Parallel Connected Components 

Fri, Mar 31  Parallel Connected Components (continued)   
Mon, Apr 3  Minimum Spanning Trees (and Radix Sort) 

Fri, Apr 7  Class Canceled   
Mon, Apr 10  Minimum Spanning Trees (and Radix Sort) (continued) 

Fri, Apr 14  Maximal Independent Set 

Mon, Apr 17  The Message Passing Interface 

Fri, Apr 21  DistributedMemory Algorithms: Dense Matrices 

Mon, Apr 24  DistributedMemory Algorithms: Dense Matrices (continued) DistributedMemory Algorithms: Sorting and Searching 

Fri, Apr 28     
Mon, May 1     
Fri, May 5     