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 some service over the
Internet.
- Task 2. Evaluate existing commercial products that provide a
similar service.
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:
- Write a server: Write a simple Web server that serves
static and dynamic content. This would be my personal choice, because
of the bragging value with friends and colleagues: "Hey, I wrote this
Web server once ...") and also because of the importance of Web
servers in ecommerce.
- Extend a server:
Write a CGI script that distills information from different sites
into one page. For example, it would be nice to be able to see
the balances from my PNC, Vanguard, and TIAA-CREF accounts all
on one page.
- Do some Web automation: Write a search engine that crawls
and indexes the CMU Web in some way. For example, your search engine
might make an HTML page with a list of (email address, web page)
pairs. (If you choose this option, be sure to talk to me about the
rules for robots.) Another option would be to manipulate DNS to do a
demographic study of the Internet. For example, determine all of the
1-letter, 2-letter, and 3-letter second level domain names that are
still available. For example, ibm.com has a 3-letter second-level
domain name.
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:
- 1. Intro. Briefly describe the service you want to provide.
- 2. Program description. Describe your program,
explaining what it does, how it works, and where it is on
euro.ecom. IMPORTANT: I'll be running each of your programs, so
please give me directions for how to use it. If your program needs any
input files, then these should be available in the same directory.
- 3. Product evaluations. Describe the requirements of your
imaginary site, evaluate existing products against these requirements,
and make a recommendation.
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