You are now in the main content area

COE892 Distributed and Cloud Computing (cross listed as EE8229 Distributed and Cloud Computing)

Calendar Description

This course covers topics related to distributed computing and cloud systems. It presents distributed system architectures; client-server and peer to peer system design; Threading and multi-process computing models; concurrency, synchronization, and inter-process communication; replication, consistency, fault tolerance and recovery. Client-server application design for web application and its full stack implementation are discussed. Web application development using Python framework on a public cloud is covered. Cloud service models; virtualization using VM and containers; their orchestration and performance issues are discussed. Case studies on public and private clouds are presented. Recent developments of multi-cloud and edge clouds are introduced. It includes a major project on the development of distributed software using Python framework and its deployment on a public cloud. 

Topics

  • Introduction to distributed computing and system, distribution of computing anddata, virtualization, and cloud systems; Architecture: Client-server system (webapplication); Peer to peer system, structured (DHT) and unstructured (Gnutella)
  • Process: Multi-threading (Python Thread library) and multi-processing (PythonSocket API); Hypervisor and Virtualization -- VM and containers (Dockers)
  • Concurrency and Synchronization; Communication -- Remote Procedure Call(gRPC)
  • Communication: message passing (AMQP), publisher-subscriber model(MQTT), multicast
  • Coordination: Logical clocks, mutual exclusion, election algorithms
  • Replication and Consistency models
  • Reliability and Fault-tolerance, consensus algorithms, checkpointing
  • Client-Server application framework (e.g., FastAPI)
  • Cloud Systems, Cloud application design on a public cloud (e.g., Azure),Container Orchestration

Labs

  • Lab 1: Multi-threading using shared memory and lock
  • Lab 2: gRPC
  • Lab 3: RabbitMQ
  • Lab 4: FastAPI
  • Lab5: Container
  • Project: A web application on public cloud

Recommended Text Book

  1. Distributed System 3/e by Maarten van Steen and Andrew Tanenbaum
  2. Lecture Notes (mostly rely on lecture notes)

Reference Text Books

  1. Modern Operating Systems 5/e, Andrew Tannenbaum and Herbert Bas, Pearson.
  2. Distributed Computing 2/e, Hagit Attiya and Jennifer Welch, Wiley.
  3. Computing 3/e,Dan Marinescu, Morgan Kaufman Publishers

Course Evaluation

  • Quizzes  10%
  • Midterm exam  20%
  • Final exam  30%
  • Lab reports and demo  20%
  • Project  20%