CS555: Distributed Systems

[Schedule] [Assignments] [Infospaces] [Grading] [Syllabus]


[Announcements] [Home]


All assignments are meant to be done individually. Each assignment will include a breakdown of points and also how much they account for your course grade. There are NO team projects. Assignments will specify the third-party libraries that you are allowed to use: nothing else can be used. All assignments require you to do socket programming. Scoring will be done based on a one-on-one interview session where you will demonstrate the required functionality and explain how you implemented certain portions of your program. These 30-minute interview slots will be made available just prior to submission deadline for individual assignments.

All assignments are due at 5:00 PM on the due date. There is a late penalty of 7.5% per-day for up to a maximum of 2 days. We will rely on an honor system: please do not make changes after this point. Submissions will include the source code and supporting documentation for how to execute the programs.

Assignment 1: Building a Distributed, Replicated, and Fault Tolerant File System: Contrasting Replication and Erasure Coding

The objective of this assignment is to build a distributed, failure-resilient file system. The fault tolerance for files is achieved using two techniques: replication and erasure coding. As part of this assignment, you should identify the trade-off space involving these techniques. For example, your analysis could contrast storage efficiency, CPU overheads, and memory utilization. This assignment has several sub-items associated with it. Additonal details are available here.

JAR file for Reed-Solomon codes is available here.

Posted: 8/28/2019
Due: 9/25/2019

Assignment 2: Implementing the Pastry Peer to Peer Network

The objective of this assignment is to build a simple peer to peer network where individual peers have 16-bit identifiers. This assignment has several sub-items associated with it: this relates to constructing the logical overlay and traversing the network efficiently to store and retrieve content. Your routing solution must be decentralized and leverage the Leaf Set and the Routing Table at each peer.  Additional details are available here.

Posted: 9/10/2019
Due: 10/16/2019

Assignment 3:

The objective of this assignment is to gain experience in developing MapReduce programs. As part of this assignment, you will be working with datasets released by the United States Bureau of Transportation Statistics. You will be developing MapReduce programs that parse and process the on-time performance records for flights operated by major carriers in the U.S. from October, 1987 to April, 2008. You will be using Apache Hadoop (version 3.1.2) to implement this assignment. Additional details are available here.

Posted: 10/3/2019
Due: 11/06/2019

Term Project & Report

The objective of this assignment is for you to apply concepts that you have learned in class to an original problem that you have devised.  You are required to demonstrate that you are solving an important problem and there are restrictions on the types of projects that you can choose. This assignment accounts for 35% of your course grade. Additional details about the term project are available here.

Posted: 8/28/2019
Due Dates: There are multiple deliverables associated with the Term Project.

[TP-D0] Friday, September 20th 2019, @5:00 pm [Team composition]
[TP-D1] Friday, October 18th 2019, @ 5:00 pm [2-page Term Project Proposal & Presentation Slides]
[TP-D2] Wednesday, December 4th, 2019 @ 5:00 pm [Software Submission]
[TP-D3] Friday, December 6th, 2019 @ 5:00 pm [Report]
[TP-D4] Friday, December 6th, 2019 @ 5:00 pm [PowerPoint Presentation]










Department of Computer Science, Colorado State University,
Fort Collins, CO 80523 USA
© 2019 Colorado State University