UW-Madison
Computer Sciences Dept.

CS739 Spring 2009: Assignment 5 -- Distributed or Good-Bye Erlang

Due: Thursday, April 16
Reading: Chapter 9 and 10 of Programming Erlang

For this assignment, you have two different paths you may go down.

If you are still interested in learning Erlang, you can follow the steps described here. Over the rest of the semester, you will then have two more assignments of similar scope.

On the other hand, if you've seen enough of Erlang and want to branch out on your own, you are more than welcome to define your own project. This project can be in any programming language or environment. Possible options would be to modify the Hadoop environment in some way (e.g., to schedule between multiple users or to can handle input sets that do not partition well across reducers as described here: setup and design) or to write a new application. You can work in project groups of one, two, or three students. If you choose this path, you will need to write up a report describing what you did and what you found. You should meet with me by April 16th to let me know what you are planning.

Overview of Distributed Erlang Assignment

For this assignment, you will extend the concurrent program from assignment 5 so that it re-starts faulty servers and distributes the servers across different physical machines.

First, add error handling. If one of the 3 servers dies, you should detect this and start that server over again. To make it more interesting/challenging, you should also re-start a server if it ever returns a faulty (i.e., disagreeing) answer.

For demonstration/testing purposes, each server should have some fixed probability of crashing or returning a faulty answer.

Second, you should distribute the 3 servers and the clients to different machines (4 total machines). Machines in the instructional clusters should be fine.

Turning in your assignment

Please copy your code to the directory ~cs739-1/Spring09/handin/[login]/P5 where [login] is your CS login name.

Again, comment your code enough that someone can follow what you did.

We won't grade you on elegance, or simplicity, or creativity, or anything other than functionality and comments. If different students come up with wildly different solutions, we'll try to share some of the different approaches.

You are welcome to look at other students' code for P4. You should be able to read them now.