CS 595 - Design and Analysis of Distributed System Infrastructures
|
Programming Assignment
There are many pieces to a P2P system, and instead of having each student program all of them, I would like each student (or students) to program a different one. The pieces include, but are not limited to:
- User interface - This is what the user sees. It must therefore give access to all the P2P user functionality.
- Search protocol - This is how a P2P system finds what it's looking for.
- Low-level transport - What does the P2P system have to do to initiate contact with a peer, and send data over?
- Security subsystem - How can we ensure that data are safely transferred?
Now we consider software engineering. Each of these components may seem easy at first, so perhaps the larger challenge is to put all the pieces together. Students must somehow design their pieces to be pluggable into others' pieces.
I also want the code to live, and be useful in the future. The student must therefore do two things:
- Debug - The student must make sure that the code has few or no bugs by the end of the class, and be able to prove it.
- Document - Document your code. Tell what objects are defined, and how they interact with each other. Tell what interface your code provides for the other pieces.
- Justify interface design - Justify why the interface is designed as it is. Why are the functions you have described general enough?
We will allocate class time to discuss each student's piece. At the end of the class, the students will demonstrate the system's functionality with all the pices integrated.