20-755: The Internet
Project: Provide Your Own Internet Service
Assigned: Mon July 26
Proposals due: Fri July 30
Projects due: 10:30am, Fri Aug 18

Introduction

After you finish the eCommerce program, you will likely be involved in designing, implementing, and managing ecommerce sites. You will be using your expertise in business to understand the needs of a particular business, to determine how to meet those needs with an ecommerce site, to develop specifications for the site based on that understanding, to evaluate the site against those specifications, and to manage and market the site.

Although you will probably not be writing the actual code for the site, to be effective you must understand the basics of how servers work, what's possible and what's not, and the tradeoffs involved in providing different capabilities. This understanding will help you develop realistic specs that can be implemented on time and under budget. It will also help you deal more effectively with the technical people who are so crucial to developing a good site.

The purpose of the this project is to help you understand how servers work and what distinguishes different servers from each other. The project consists of two tasks:

Task 1: Write a program that provides an Internet service (60 pts)

The idea here is to write a program that uses the Internet to provide some interesting service. Your program must provide this service by communicating with another program over an Internet connection. Within these constraints, anything goes. Here are some examples to help give you some ideas: For those of you with limited programming experience, I'm writing a barebones Perl5 Web server that implements the OPTIONS and HEAD methods (to appear here soon). The minimal default project is to extend this server with a GET method that serves both static and dynamic content (via CGI). It should be able to serve text/html, image/gif, and image/jpeg files.

Feel free to extend your server in other ways as well. For example, you might implement POST as well as GET, add a request logging feature, add a security feature that allows only a certain set of hosts to accesses your server, or do all of the above if you're energetic.

Task 2: Evaluate similar commercial services (40 pts)

For this task, imagine that you want to provide the service from Task 1 at a real site. Create some high level requirements for your imaginary site, evaluate the leading existing commercial program products against these requirements, and make a recommendation about which one to get for your site. For example, if your group chooses to write a Web server, you would evaluate the Apache, Microsoft, and Netscape servers and recommend which one to get for your site.

Hand-In directions

Proposal: I'd like you to decide on your project by Friday, July 30. This is not a tight deadline, but don't take too long to decide because you'll be cutting into the time you'll need to actually do the project. Someone from your group should e-mail me a short one or two paragraph description of your project.

Project: The hand-ins for the project are (1) an HTML writeup and (2) your program. Each of you has local disk space on euro: a 15 MB login directory (e.g., "% cd ~zak") and a 100 MB www subdirectory (e.g., "% cd ~zak/www"). The www directory is accessible from the Web (e.g., "http://euro.ecom.cmu.edu/~zak"). Your writeup and program should be stored in the local www directory of one of your group members. For example:

euro.ecom.cmu.edu/~zak/www/writeup.html
euro.ecom.cmu.edu/~zak/www/httpd.pl

The writeup needn't be overly long. However, it should include the following sections:

Please send me mail by the due date with the location of your writeup and program.

Good luck! As always, contact Julio or me if you have problems or questions.


Dave OHallaron
Last modified: Sat Jul 31 22:52:38 EDT 1999