Complete this assignment with the same team you worked with for Substitution (Written). You and your partner must each understand the answers to all the problems, so don't just split up the work.

This assignment asks you to write a web program. At this point in the course, the purpose of this assignment seems unclear. Once the assignment has been handed in, however, we'll introduce an entirely new way of programming the web which is intimately linked with one of the fundamental ideas of programming languages. By completing this assignment now, you'll be better prepared to appreciate this idea when we introduce it in class.

Though this assignment should not take you very long, we are giving you a lot of time because we know that not everyone is familiar with web programming; you may need to do some learning on your own. Furthermore, to avoid last-minute problems, this project has an early "Hello, World!" hand-in in which you must demonstrate you have a web programming environment set up.

Choose Your Language

Unlike the other programming assignments in the course, in this one you will be able to use a programming language of your choice. If you're already familiar with web programming, choose a language that you're comfortable with. If you're not, the web is a font of meta-information, so you should have little trouble in finding resources about programming for it.

Note: For your program to work, you will have to host it on a server. The CS department provides servers which support certain web programming languages, while others will require that you host your own server. Email the TAs for more information.

"Hello, World!"

We want you to get your web programming setup sorted out early. You must demonstrate that you have by creating a "hello, world!" web application. The application should show a web page with the text "hello, world!" and the current time and date.

We won't require a formal handin for this. Instead, e-mail the TAs with the URL of your application and what language/environment you're using. We must receive this e-mail by 11PM on September 30th.

Program Requirements

You will write a simple survey, the details of which are specified below. Although this program is quite simple, it is representative of the core of much larger Web software (just as the interpreters we write in this course are themselves quite lean, but represent the core of large programming languages).

Your program must have the following features:

  1. When users finish the survey, they should see a list containing all of the questions they were asked and their responses. This list should not include any questions which a particular user was not asked.
  2. The back button should work properly. If a user answers a question, clicks the back button, then reanswers the question, the later answer should take effect.
  3. Window cloning should work properly. If a user fills out the survey to a certain point, then creates a new window (or tab) which is a copy of the current one, then it should be possible to fill out both surveys independently. Furthermore, clicking the back button in one window should not affect any others.

Survey Specification

1. Do you play World of Warcraft? Answer is yes or no. If yes, go to question 2. If no, end the survey.

2. What level is your highest-level character? Answer is a positive integer. Go to question 3.

3. What is that character's class? Answer is a string. If the answer is "Mage", go to question 4. Otherwise, go to question 5.

4. How many spells does your character know? Answer is a non-negative integer. If the answer to question 2 is 60 or less, go to question 6. Otherwise, end the survey.

5. Why don't you play a mage? Answer is a string. If the answer to question 2 is 60 or less, go to question 6. Otherwise, end the survey.

6. Have you played the expansion? Answer is yes or no. End the survey.


Turn in all files needed to run your program. In addition, include a README file containing the names of the members of the group and the URL where the web application is running.