CS 2135 (A01) Project
A Languages Perspective on Web Programming: Part 1

Project Motivation and Goals

The first lecture argued that programming and programming languages are deeply intertwined; programming languages affect how we think about programming, and new programming problems inspire evolution in programming languages. This project explores the relationship between batch (standard textual, sequential) and web programming to set the stage for the programming languages topics that we will cover after the midterm.

We will do the project in two stages. This handout describes the first stage; the second stage handout will be provided after the midterm.

After completing this stage of the assignment, you should be able to:


Due Date

The project is due September 22 (Saturday) at 11:59pm via turnin (use assignment name project1).

Note that the due date is right before the midterm. We will begin discussing web programming in class the day after the midterm, so you need to have done this project before we discuss web programming in class. Rather than force everyone to turn the project in earlier, I've set the due date to give you flexibility in scheduling your time. However, the due date is a rope — don't hang yourself with it. I will not grant extensions on this project unless you have a documented emergency.

If you've never written web pages or scripts, the programming parts of the assignment may be a bit time-consuming. Start early.


The Assignment, Stage 1

This stage has three parts: two programming parts, and one analytical part. Be sure to keep a copy of all work you do on this stage for use in the next stage.

Problem Set-Up

A pizzeria has hired your company to computerize their ordering system. Pizza orders consist of a name, an address, whether the pizza will be picked-up or delivered, a pizza type (thin or stuffed), size (small, medium, large), and a list of toppings (available toppings are mushroom, olive, spinach, egg, sausage, and pepperoni). Your clients want the ordering system to provide a way to save regular customers from having to type in their name and address each time they place an order (this will be called the "personalization feature" in the rest of this document).

Your boss has asked you to produce two prototypes of the interface: one textual and one web-based (the text version will run inside the pizzeria for placing phone orders, while the web version will allow customers to place their orders online). Each prototype will gather the ordering information and display the total cost of the ordered pizza. Your prototypes will not actually store orders; it will only compute the cost of the ordered pizza and display an order summary.

See the interface prototype samples for an idea of what kind of interface we expect you to develop for this assignment. You may develop a fancier interface if you choose, but be aware that it will not earn you extra points towards your project grade.

The cost of a pizza is calculated as follows:

Problems

In both programming problems, assume that the user of your programs always enters valid input. You programs do not need to do any error checking.


What to Turn In

Submit the following files via turnin:

Grading

Some notes on what we will be looking for in grading this assignment:


Links and Hints

Suggestions for links to additional tutorials and pages that you find useful in doing this assignment are welcome.


Collaboration Policy

This is an individual project. Collaboration is not permitted on this assignment. The course staff are the only people you may approach for help with this project. You may not ask anyone outside of the course staff questions on any aspect of this project, including how to write and run CGI scripts; this includes webmaster@wpi or helpdesk@wpi. If you believe there's a problem with running CGI scripts from your account that warrants CCC assistance, get permission from the course staff to contact helpdesk.

In particular, do NOT bother webmaster@wpi or helpdesk@wpi if you get an "Internal Server Error" while developing your code. This error likely appears due to a bug in your script, not a problem on the server. If you are convinced you have a server error, contact the course staff before contacting any systems staff.