CS735/CS835
Introduction to Parallel and Distributed Programming
Course Outline
- Introduction
[Andrews,
Chapter 1]
- the noosphere:
everything is connected, parallel, distributed!
- hardware architectures
- applications and programming styles
- Programming with Java threads
[Andrews,
Section 5.4; The
Java Language Specification]
- Thread class
- synchronized statements and methods
- wait and notify
- numerical integration using Java threads: code and performance
- Shared-variable programming fundamentals
[Andrews,
Chapters 2-5, Section 7.6]
- atomic actions and locks
- barrier synchronization
- semaphores
- monitors
- case study: POSIX threads
- are Java monitors brain-dead?
(CSP and
JCSP)
- Programming with Java RMI
[Andrews,
Section 8.5; The
Java Tutorial: RMI;
Java RMI
documentation]
- java.rmi package
- remote method invocation
- registry service
- numerical integration using Java RMI: code and performance
- Message-passing programming
[Andrews,
Sections 7.1, 7.4, 7.5, 7.8 and 11.1]
- collective communication: hypercube-based algorithms
- performance models: latency and bandwidth
- case study: MPI
- Message-passing case studies
[Quinn,
Sections 6.2, 6.3, 7.4, 10.5, 13.3 and 13.4]
- Jacobi iteration
- matrix multiplication
- sorting
- combinatorial search
- client-server applications
- Message-passing implementation issues
[Active Messages
paper;
SBP paper;
LFC
paper;]
- active messages
- eliminating O.S. overhead
- integrating message passing and thread scheduling
- Programming the World Wide Web
Last modified on August 29, 2002.
Comments and questions should be directed to
pjh@cs.unh.edu