This exam is open-book and take-home. Do not discuss your answers or the problems with other students, however. If you are relying on a section of a book or Web page, cite the source.
When you are through with the exam, send your work by email (in plain text, please) to Instructor.
You have one week to complete the exam.
Here are some resources that will help you answer the questions below.
Suppose that you are part of committee designing a Web service for intramural sports at MIT. Visit the MIT IM sports site to get an idea of what an attempt to build a site like this looks like but do not be constrained in your thinking by what you see there.
What are the user classes for an ideal site like this? What should each class of user be able to do? What are the core benefits of doing this as a Web application instead of adding a section to the Tech?
How would you configure existing modules? Which ones would you have to extend via writing new code? What new modules would you have to write?
Suppose that the publisher of the IM sports site hires a Chief Technology Officer. This will be a person who cannot program. In order to bolster his or her ego, you'll get questioned:
Discuss the relative merits of the following approaches to user activity analysis:
Every successful Web project has at least one participant who is passionate about the end-user experience. It is important to become skilled at working through a usage scenario and noting specifically what should be changed on each page. We haven't built our ideal IM sports site so we'll shift gears to a real running system: http://photo.net/ (the image sharing service portion of the site was built as a 6.170 project in Spring 1999).
Work through the following scenarios:
Write up a usability analysis stating, for each page, what you'd change to make the experience better. Note that your analysis may suggest changing the flow, adding new pages, eliminating pages, or adding configuration switches for users.
A really effective use for a Web-based system is to support cooperative work, i.e., a purposeful community. When people seek an information system to support their work together, it is usually because the workflow is at least a little bit complex, e.g., someone in the support group must write an answer to a customer inquiry, Amanda or Barney must approve it but if they disapprove the answer, the inquiry gets kicked back into the poor of questions to be answered.
A good way to support workflow is with a finite-state machine modelled in the database. See the Oracle Workflow product description in the Oracle documentation for some ideas about how engineers have approached this problem.
Build the SQL data model for a finite-state machine-based workflow system. It should be powerful enough to handle the approval process for purchasing in a company, with states such as "employee_wants_thing", "supervisor_has_approved_thing", "thing_is_on_order", "thing_was_received", "thing_was_paid_for". Have a journal where data accumulated during state transitions, e.g., how much was paid for the thing, may be logged.
This problem set was written by Philip Greenspun in April 2000. It is copyright 2000 by him but may be reused provided credit is given to the original author.