COMP 430 Programming Project 4: Networking


Choose one of the following project ideas. You may work individually or in groups of no more than two.

Purpose

The main point of each of the project ideas below is to implement a networked application. You may implement your program using either sockets or remote method invocation (RMI).  You are welcome to complete this project in Java, C, or Python. If you would prefer to use a different language, please consult with me first.

Program Options

  1. Write a simple chat or messaging program that allows two (or more) people on different computers to communicate with each other in real time (e.g., not using email).
  2. Write a tic-tac-toe game that two people on different computers can play against each other. An ascii interface is fine. If you would like to implement a GUI you may use the Grid Package (grid.jar, with accompanying documentation). If you would like to use a non-client/server version tic-tac-toe program as a starting point, download and unzip TicTacToe.zip.
  3. Write a Battleship game that two people on different computers can play against each other. An ascii interface is fine.
  4. Come up with your own idea for a networked application and email me a proposal.

Helpful Hints

Whichever option you choose, keep in mind that most computers these days have software firewalls that will block incoming connections on nearly all ports. You can often get around this by tunneling the data on your port through an ssh connection. Here are steps that will work for Linux or OS X machines: For more information on port forwarding, you can check out the SSH/OpenSSH/PortForwarding web site.

Handing In

Your submission should take the form of a tarred directory as described in HW #1 . That directory should contain:

Grading

The project will be graded as follows:

Comments, documentation, code formatting, and proper submission format 20%
Coding style 20%
Functionality 60%


This project is based on a similar project from Alyce Brady's 2004 operating systems course.
This page is maintained by Pamela Cutter pcutter{at}kzoo{dot}edu.