CS455: Introduction to Distributed Systems

[Announcements] [Syllabus] [Grading] [Schedule] [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. All assignments will be posted at least 2 weeks prior to its due date. We will have a mix of both written and programming assignments. All assignments will be posted on this page. All assignments should be submitted using the checkin system. Comprehensive instructions for using this is available in this PDF document.

Each assignment in this course is split into two components: a programming component that accounts for 80% of the grade for the assignment and a written component that accounts for the remaining 20%. The written part of the assignment will be posted after the programming component has been submitted. The questions in the written part are intended to reflective so that you think a little deeper about your implementation choices, possible extensions to your work, and how you would address inefficiencies in your work. Programming assignments are due on Wednesdays and written assignments including term papers/presentations are due on Fridays.

Assignment HW-Test: Test of the Checkin system
This assignment just makes sure that you are able to use the checkin system. There are no points for this assignment, but it is mandatory. The checkin folder set aside for this submission is HW-TEST. More details are available here.

HW-TEST posted 01/16 due 01/25 @ 5:00 pm

Assignment 1: Using Dijkstra’s Shortest Paths to Route Packets in a Network Overlay

The objective of this assignment is to get you familiar with coding in a distributed setting where you need to manage the underlying communications between nodes. Upon completion of this assignment you will have a set of reusable classes that you will be able to draw upon. As part of this assignment you will be: (1) constructing a logical overlay over a distributed set of nodes, and then (2) computing shortest paths using Dijkstra’s algorithm to route packets in the system. More details for HW1-PC are available here.

Details about the Written Component (HW1-WC) are available here.

Programming Component (HW1-PC) posted 01/16 due 02/15 checkin-folder: HW1-PC

Written Component (HW1-WC) posted 02/15 due 02/17 checkin-folder: HW1-WC

Assignment 2: Scalable Server Design: Using Thread Pools to Manage Active Network Connections

As part of this assignment you will be developing a server to handle network traffic by designing and building your own thread pool. This thread pool will have a configurable number of threads that will be used to perform tasks relating to network communications. Specifically, you will use this thread pool to manage all tasks relating to network communications. This includes: managing incoming network connections, receiving data over these network connections, and sending data over any of these links. More details are available here.

Details about the Written Component (HW2-WC) are available here

Programming Component (HW2-PC) posted 01/31 due 03/08 checkin-folder: HW2-PC

Written Component (HW2-WC) posted 03/08 due on 03/10 checkin-folder: HW2-WC


Assignment 3 : Using MapReduce (Hadoop) for Analytics of the US Census Dataset

As part of this assignment you will be working with datasets released by the United States Census Bureau. You will be developing MapReduce programs that parse and process the 1990 US Census dataset to support knowledge extraction over demographic data from all fifty states. Additional information about the assignment is available here.

Additional Useful Documents:
[1]. Hadoop Setup Guide

[2]. Running the WordCount example

Details about the Written Component (HW3-WC) are available here

Programming Component (HW3-PC) posted 03/09 due 04/12 checkin-folder: HW3-PC

Written Component (HW3-WC) posted 04/12 due on 04/14 checkin-folder: HW3-WC

Term Project & Paper [This is a group assignment: Teams of 3-4]
CS455 is a capstone course and includes a writing component in the form of a term project and paper. As part of this assignment you will be doing a term project that involves using Apache Spark for performing analytics. You are free to use Spark for processing on-disk files or to use it for processing data streams. Additional details about the Term Project are available here.

Requirements posted 03/23 due 04/26 [Source Codes]
Term Project Report & Powerpoint Presentation due 04/28

There is also a separate presentation component for your term project. All presentations must follow the Term Project Presentation Guidelines.




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