CSCI/ECEN 5673: Distributed Systems

Spring 2011

Department of Computer Science, University of Colorado at Boulder

Professor Rick Han

Revised syllabus.  See original syllabus here.

This course is available via CU's CAETE distance learning online library.


See the Moodle class Web page at

Schedule & Location: Mon, Wed 5-6:15 pm, ECCS 1B28 (also offered as a CAETE course)
Course number: CSCI 5673-002
.  See also the CS Web site and look under the Courses option.
Prerequisites: CSCI 5573 Advanced OS.

Instructor: Professor Rick Han,
Office: ECCR 1B05F
Office Hours:
Tuesdays 2-3 pm and Wednesdays 1-2 pm in ECCR 1B09 (next door to my office).  Additional appointments as needed.
Phone: 303-492-0914


Other optional references: 

class Web site:
See the Moodle class Web page at  Assignments, lecture slides, and announcements can be found there.  The moodle has a variety of useful features, including a forum for posting questions.  Each student should establish an account on the moodle and then subscribe to our class on the moodle using the special enrollment key given out in class.  The moodle has been upgraded to v2.0, so you must create a new account.


The topics to be covered include the following.  We will seek to adhere to the timeline, but as the situation warrants new topics may be added and/or others shortened, eliminated, or shifted around in time, and due dates may be modified.  Stay tuned to the moodle for changes in this schedule.

Introduction (review stuff you should already know: DNS, SSL/TLS, NFS), Cloud Computing, Google File System
(MLK Holiday) Google MapReduce
Google BigTable,  Google Web search infrastructure.  Programming assignment: Hadoop/MapReduce on Amazon EC2 Cloud.
Amazon Web Services, EC2, S3, SimpleDB.  Individual project pitches in class.
Amazon Dynamo, Parallel DBs.  Group project proposals due.
Open Source Cloud Computing, Peer-to-Peer (P2P) Systems, Chord/DHTs.
BitTorrent, Content Distribution/Delivery Networks (CDNs), Akamai.
SETI@Home, Folding@Home, PlanetLab.  Programming assignment due.
Parallel Programming (MPI), Dryad Distributed Execution Engine.
ACID/BASE, CAP, Event Ordering/Time Synchronization, NTP.  Midterm Exam.
Chapter 11 of CDK: Lamport Logical Clocks, Vector Clocks
Chapter 12 of CDK: Distributed Mutual Exclusion, Elections, Consensus (Byzantine Generals)
Chapter 13 of CDK: Distributed Transactions
Chapter 14 of CDK: Two-Phase Commit, Replication/Consistency
Chapter 15 of CDK: Sequential Consistency Protocols (Totally ordered multicast, quorum),
Chapters 4 and 5 of CDK: RPC, Java RMI
Chapter 19 of CDK: XML Web Services, SOAP, REST, 
Google Pregel
Final project presentations and reports (Also during the final exam time slot, so no final exam).

Wish we had time for: Publish-subscribe, Bayou, Coda, AFS, grid computing.  Intrusion Detection.  Service discovery/naming, Fault Tolerance, Reliable multicast/group communication.  Social networks.  Mobility.  Skype/multimedia.  Storage Area Networks, Security, Privacy, Load Balancing, Caching, Application layer multicast.  VMWare fault tolerance paper.


20%  Midterm exam
15%  Programming assignment
50%  Final project report and presentation
15%  Class participation, paper reviews, possibly other presentations

Programming assignments and reviews must be submitted by uploading them to the moodle class Web page by the deadline, unless otherwise noted.    Extensions will not be granted except at the instructor's discretion in documented cases of extreme hardship, unless otherwise noted.  All programming assignments and reviews should be your original work, unless otherwise noted.

Plagiarism policy.

Additional Policies:

Disability Policy

Religious Observances Policy

Discrimination and Sexual Harassment Policy

Classroom Behavior Policy