CSCI.4220/CSCI.6964 Network
Programming
Fall, 2002
Programming Assignment 2.
This assignment is to be done either individually or in
pairs. Do not show your code to any other group and do not look at any other
group's code. Do not put your code in a public directory or otherwise make it
public. However, you may get all the help you need from the TAs or the
instructor. You are encouraged to use the WebCT Discussions page to post
problems so that other students can also see the answers.
Objective:
The objectives of this assignment are:
- To learn how to specify, design, and implement a communication
protocol, and
- To understand how the Transmission Control Protocol (TCP) works.
In this assignment, you need to come up with a calendar protocol that uses
TCP. You need to implement the protocol, and write a client and a server
that communicate using your protocol through TCP sockets. Your calendar server
should be a multithreaded application that handles different calendar clients at
the same time. Your calendar protocol should be able to allow the following
functionalities:
- Add a new calendar event.
- Remove a calendar event.
- Update an existing calendar event.
- Get all the events for a specific time or a time range.
You can use different techniques to store and manage your calendar at the
server side: using simple text files, or java object serialization, or databases,
etc. It is up to you to choose the appropriate way to implement your calendar
protocol.
All exceptions must be properly handled.
Extensions:
Completion of one of this extensions will result in a better grade; however,
groups of more than one person MUST complete this extension to receive a full
grade. It should also be noted that, if you have an idea for a different
extension, ask either the instructor or TAs for approval:
- Enhance your server to be able to handle multi-user calendars. You server
should also allow the users to log in and out and access their individual
calendars.
- Find an algorithm that finds a common meeting time using different
calendars. In this case you will either have an application that supports
multi-users calendars or you can have many calendar servers that communicate
between themselves to find a common meeting time.
- Enhance your protocol and server to support repetitive events.
Grading:
Grading will be split in the following way:
- 60% correctness (Does it do what it's supposed to?)
- 20% error handling (Can it easily be crashed?)
- 20% documentation (Is it easy to read and understand the code?)
Submission:
The due date for this project is September 24th, 2002, 11:55pm EST. You
should use the assignments drop-off box located at the course's WebCT page.
Upload a JAR file containing all the relevant documented Java files,
along with a README file describing the project and its usage.
Late submissions:
- 10% penalty for a one-day late submission.
- 25% penalty for up to a three-day late submission.
- Submissions more than 3 days late will not be accepted.