Parallel architectures, programming language constructs for parallel computing, parallel algorithms and complexity. Message-passing, remote procedure call, and shared-memory models. Synchronization and data coherence. Load balancing and scheduling. Appropriate applications. Prerequisites: AUCSC 250 and AUCSC 370.