CMPS 3640 Distributed and Parallel Computation
Catalog Description
CMPS 3640 Distributed and Parallel Computation (3)
Introduction to core topics in distributed and parallel computation. System models, parallel vs. distributed systems, communication, locality, concurrency, non-determinism, fault tolerance, distributed algorithms, and parallel programming. Prerequisite: CMPS 3600 and 3620
Prerequisites by Topic
Fundamental concepts of Operating Systems
Networking and communication
Knowledge of a high-level programming language (C preferred)
Units and Contact Time
3 semester units. 2 units lecture (100 minutes), 1 unit lab (150 minutes).
Required for CS
Required Textbook
Distributed Systems: Concepts and Design, 5th edition, George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair, Addison-Wesley publishing, 2011, ISBN-13 9780132143011.
Recommended Textbook and Other Supplemental Materials
A guide to parallel and distributed programming is also recommended for the laboratory and programming assignments. One such guide is:
Introduction to Reliable and Secure Distributed Programming, Christian Cachin, Rachid Guerraoui, Luis Rodrigues, Springer, 2011, ISBN-13: 978-3-642-15259-7 (print) and 978-3-642-15260-3 (online).
Melissa Danforth, Donna Meyers
Student Learning Outcomes
This course covers the following ACM/IEEE CS2013 (Computer Science) Body of Knowledge student learning outcomes:

Parallel and Distributed Computing (PD):
CS-PD/Parallelism Fundamentals
CS-PD/Parallel Decomposition
CS-PD/Communication and Coordination
CS-PD/Parallel Algorithms, Analysis, and Programming
CS-PD/Parallel Architecture
CS-PD/Distributed Systems

System Fundamentals (SF):
CS-SF/Computational Paradigms
CS-SF/Reliability through Redundancy

ABET Outcome Coverage
The course maps to the following performance indicators for Computer Science (CAC/ABET):
(CAC PIc1): Identify constraints on the design problem and establish criteria for acceptability of solutions.
(CAC PIg1): Understand impact of computing solutions on society and the environment in a global economic context.
(CAC PIg3): Consider a variety of available options in computing design and make a proper choice based on their impact.
(CAC PIj1): Understand performance and cost as these relate to software/firmware-based and hardware-based implementations.
Lecture Topics and Rough Schedule
1Chapters 1 and 7 Introduction to distributed systems, Distributed vs. parallel, Review of OS concepts
2Chapters 7, 3 and 11 OS review continued, Review of networking concepts and communication security
3Chapter 2 System models: fundamental, physical, and architectural
4Chapter 4 Communication: interprocess communication
5Chapters 5 and 6 Communication: remote invocation and indirect communication
6Chapter 14 Distributed algorithms: introduction, time and state
7Chapters 14 and 15 Distributed algorithms: time and state continued, coordination and agreement
8Chapter 15 Distributed algorithms: coordination and agreement continued
9Chapter 16 Shared Data: transactions and concurrency
10Chapters 16 and 17 Shared Data: distributed transactions
11Chapters 17 and 18 Shared Data: redundancy, replication, fault tolerance
12Outside Information Programming challenges with distributed algorithms and parallel architecture
13Chapters 8 and 10 Middleware: objects and components, services
14Chapters 12 and 13 Distributed systems in practice: file systems, name services
15Chapters 19 and 20 New paradigms: Ubiquitous computing and Cloud services
Design Content Description
Not applicable to this course.
Prepared By
Melissa Danforth on 31 July 2014
Approved by CEE/CS Department on [date]
Effective Fall 2016