\section*{University of California, Los Angeles}
The Computer Science Department offers a graduate course in Parallel
Architectures which covers reasons for parallel computers, 
parallel algorithms and
their representation, classification of algorithmic structures, execution
models and computer organizations, granularity and coupling,
performance evaluation measures, approaches for high speed, 
and general-purpose and special-purpose architectures.
A course is also offered in Parallel Programming, which covers mutual
exclusion and resource allocation in distributed systems, primitives
for parallel computation, specification of parallelism, interprocess
communication and synchronization. 
Finally, a section of the graduate Algorithms course covers
distributed and parallel algorithms, including models of message-passing
systems, distributed synchronization, fair-safe compilation,
models of parallel algorithms, and so forth.

Two undergraduate courses are offered.  The first
course in Parallel Programming involves mutual exclusion and resource
allocation in distributed systems, primitives for parallel
computation, specification of parallelism, interprocess communication
and synchronization, atomic actions, binary and multiway rendezvous,
and so on.
The second course in Parallel Languages and Compilers focuses on environments
for portable parallel programming, process synchronization algorithms,
heterogeneous parallel computing, distributed shared memory, concurrent
data structures, consistency models, programming shared memory 
architectures, and more.

