Lab 1 - Proxy Cache

Due - Monday January 31, 2011 - 11:59PM

The goal of this assignment is refresh your memory of socket programming and HTTP. For this assignment, you will complete Assignment 4: Web Proxy Server (http://media.pearsoncmg.com/aw/aw_kurose_network_3/labs/lab4/lab4.html) described in the Kurose/Ross text.

Description

    1. For full credit, you must implement caching as described in the Caching section and #3 of the Optional Exercises.
    2. You may use a programming language other than Java, but you must use raw sockets. If you use a HTTP library you will not receive full credit for the assignment.
    3. If you use Java, your program must run as described on the assignment page: java ProxyCache port
    4. If you use Java, you do not need to use the sample code provided on the website if you feel another design would be more appropriate.
    5. If you use a programming language other than Java, you must include a README that clearly describes how to compile and run your program on the CS lab machines and a run script that will run your program on the lab machines.

Submission

    1. By the deadline, all source code must be checked in to SVN at /<username>/cs621/lab1.
    2. Late projects will receive a score of 0.
    3. Projects that are submitted incorrectly will receive a deduction of up to 20%. This includes incorrectly named directories and missing source files. Double check your submission!

Grading

    1. 20 points - Compiles and runs as specified (includes was submitted in the correct directory)
    2. 10 points - Correctly fetches uncached pages
    3. 10 points - Correctly returns cached pages
    4. 10 points - Saves objects to disk
    5. 15 points - Use of sockets (correct and well-designed solution)
    6. 15 points - Use of threads (correct and well-designed solution)
    7. 10 points - Design of data structure
    8. 10 points - Code design