milestone: CGI vs. WIG

For this milestone you must:

  1. Make sure you all understand the CGI protocol, at least as far as described in the reading for Week 5, An instantaneous introduction to CGI scripts and HTML forms.

  2. Set up an environment for compiling and running WIG programs following these instructions.

  3. Write a WIG service benchmark, and provide a link to it running somewhere. Your WIG service should be interactive and attempt to take advantage of WIG language features. We will be grading it for meaningful feature coverage, clarity, documentation, correctness, and originality. However, please do not worry about your program doing everything possible with WIG unless you really want it to. You can see the example programs in the wig/ directory as well as old WIG benchmarks for reference. You can test your WIG service using the binary versions of existing WIG compilers, assuming your environment is set up properly.

  4. Write a CGI script that implements some WIG service (i.e. "compile" a WIG service manually), and provide a link to it running somewhere. It does not need to be a full CGI implementation of your actual WIG benchmark, although it can be if you like. If it differs, you should include the service you are starting from. You can use any language, and you should discuss how a compiler might go about generating this code starting from a WIG service, and what extra complications might be required to translate your actual WIG benchmark. Your choice of language here does not commit you to using it as your WIG compiler target.

  5. Read the WIG project description and grammar and report on what you see as potential difficulties. In particular, what language features do not have immediately apparent semantics, based on your knowledge of C, Java, and HTML? What might be the right semantics for these features? It will be interesting for you to compare these notes with your actual experience after completing the project.

You should check in the source code for question 3 into group-X/wig/benchmark/ and the source code for question 4 into group-X/wig/cgi/. You should also check in a group-X/wig/benchmark/README file to accompany your WIG benchmark. You should finally check in a milestone report that addresses tasks 3--5 as group-X/reports/cgi_vs_wig.txt. Your milestone will not be complete until all of these things have been received. Following good Subversion practice, you should not check in any automatically generated files. On the other hand, if you want to use non-text media files, it is fine to check those in.

This milestone is small and you should be able to complete it quickly. You should take the time now to ensure that you are familiar with either SableCC, Flex and Bison, or whatever your chosen implementation toolset is, because you will be writing the WIG scanner, parser, and pretty printer for the next milestone. If possible, get started on the next milestone early, because it will probably take you somewhat longer than this one.

This milestone is due by midnight on Friday of Week 6. It will count for 5% of your grade. Marks will be generously deducted for late submissions.

Maintained by Chris Pickett. [HOME]