CS 549 Distributed Systems and Cloud Computing Syllabus
The syllabus below describes a recent offering of the course, but it may not be completely up to
date. For current details about this course, please contact the course coordinator. Course coordinators
are listed on the course listing for undergraduate courses and graduate courses.
The objective of this course is to give students a basic grounding in designing and implementing
distributed and cloud systems. Developers of cloud services question how those services should be
implemented. What are global consensus and Paxos, and what are their application in building cloud
systems? What are the advantages and disadvantages of using distributed NoSQL stores such as
Cassandra instead of relational stores such as MySQL? What are strong and weak consistency, what
is the "CAP Theorem," and what is its implication for building highly available services? What are the
roles of REST, Websockets and stream processing in cloud applications? This course will combine
hands-on experience in developing cloud services, with a firm grounding in the tools and principles
of building distributed and cloud applications, including advanced architectures such as peer-to-peer,
publish-subscribe and streaming. Besides cloud services, we will also be looking at cloud support for
batch processing, such as the Hadoop and Pig frameworks, and their use with NoSQL data stores
such as Cassandra.
Text Books
Required
Various authors , Various papers. , We will rely on some tutorial papers, and sections from the
recommended text.
Recommended
Dominic Duggan , Enterprise Software Architecture and Design , This book is used in CS548. In this
course, we will use some of the more advanced material in the book, that is not covered in CS548.
Antonio Goncalves , Beginning Java EE 6 with Glassfish 3 , Springer Apress, 2009
Week-by-Week Schedule
Week Topics Covered Reading Assignments
1 Introduction to distributed systems and cloud Duggan 2.1-2,
computing. Cloud architectures: SaaS, PaaS, 2.7. E2E.
IaaS. End-to-end system design. Networks and
protocol stacks.
2 Client-server computing. Sockets and remote Duggan 2.4.
procedure call. RPC.
3 Distributed file systems and cache consistency. Duggan 6.9.4. A1: RMI and sockets.
NFS, AFS. Storage in the Cloud: Google/ NFS. GFS.
Hadoop file system.
4 Web services and REST. Example: Amazon S3. Duggan 7.5.
The JAX-RS API. Persistent cloud services.
5 Failure models and failure detectors. Duggan 2.3.
6 Asynchrony: publish-subscribe. Server-side Duggan 2.5; B A2: P2P and REST
events and REST. Web sockets. Vert.x: [Link] 3.5; CL85
for Java. Distributed snapshots.
7 Distributed debugging. Time and ordering of B 2, B 3; L78
events. Causal broadcasts.
Week Topics Covered Reading Assignments
8 Batch cloud computing: map-reduce and MR, Pig, Hive A3: Server-side events
Hadoop. Domain-specific languages for cloud
data processing: Pig and Hive.
9 Transactions. Serializability and recoverability. Bien
Long-lived transactions.
10 Transactions. Atomic commitment protocols: Bien
2PC and 3PC.
11 Highly available services. Replicated services D 6.9.1-2; B 3.5; A4: Hadoop and Pig
and quorum consensus. The CAP Theorem. VS
12 NoSQL data stores. Table-based (Google BT, Dyn, Cass
BigTable), key-based (Amazon Dynamo), and
Cassandra. The Hector API. Query processing
with Map-reduce.
13 Consensus and the Paxos algorithm. L01
Applications in the cloud: Google Chubby,
Yahoo Zookeeper.
14 Peer-to-peer systems. Distributed hash tables. Chord, Mercury. A5: Websockets
Applications in multiplayer game-playing.