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.


The objectives of this assignment are:

  1. To learn how to specify, design, and implement a  communication protocol, and
  2. 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:

  1. Add a new calendar event.
  2. Remove a calendar event.
  3. Update an existing calendar event.
  4. 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.


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:

  1. 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.
  2. 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.
  3. Enhance your protocol and server to support repetitive events.


Grading will be split in the following way:


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: