There are several project options for the Fall 2003 semester of Computer Networks. The deliverables for all projects are a paper in standard IEEE conference paper format, source code, and a demonstration. The purpose of the project is for a student to work with sockets programming and explore an interesting idea or research direction (i.e., to not implement some already existent and well-know application or some "useless" application). I believe all of the projects offered below have the potential for leading to further investigation beyond this semester. Please read this page very carefully to understand all the parameters of the class project.
Project Idea #2:One of my graduate students, Sai Sakamuri is studying ways of solving the spam problem. We have an idea called email++ where all email messages are validated via an out-of-band TCP connection between the receiving and sending user agent. For more information see:
A two-person project is to implement an email++ POP3 user agent. A three-person project is to implement an email++ POP3 user agent that also implements a puzzle solving feature where the sender user agent "pays" for received email in CPU cycles. A four-person project is to implement an SMTP server that implements email++ as a proxy for a user agent. This will likely entail implementing both a user agent and a minimum-function SMTP server.Project Idea #3:One of my graduate students, Graciela Perera is investigating distributed search techniques in peer-to-peer networks. One idea being investigated is to implement a hybrid search procedure that considers flooding as well as direct access based on download history. Nodes maintain statistics on what other nodes they download files from. When a node is searching for a file it first directly checks nodes from which is has had good success (in finding files) in previous searches. If this fails to find the desired file, first then is the request flooded. This scheme trades-off response time for a reduction in network traffic. For further information, see:
A two-person project is to develop is a Gnutella servent that maintains statistics on what nodes it finds files. A three-person project is to build a servent that maintains statistics (as above) and uses these statistics to attempt a direct search before resorting to flooding. For both projects, an experimental evaluation of the servent must be completed. For the two-person case, the evaluation is a characterization of file-node relationships For the three-person case, the evaluation is a measurement of how many searches can be satisfied with a direct (as opposed to flooding) search.Project Idea #4: There is no project idea #4, but you are very welcome to propose your own project. A good project will emphasize sockets programming and implement some new idea or concept, or be a tool for an interesting study. Clearly, "a Visual Basic front-end on a database" is not within the scope or interest of this class! Nothing in Java is of interest unless you can make a case why Java, and not C, is needed to implement your idea.