This is a take-home exam. You can take it where you want to and use any resources you like, except that you must do the exam by yourself. 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. At the beginning of the message, please include a statement affirming that you worked on the exam completely by yourself.
You have one week to complete the exam.
Here are some resources that will help you answer the questions below.
Problems or questions? Email instructor.
Visit netflix.com. Sign up for the free 10-day trial membership and take the following steps:
Now develop a data model for the netflix.com site. Your data model should be complete enough to handle all of the preceding actions and operate the core netflix.com service. You may assume the existence of a users table, keyed with user_id. Your data model should include appropriate integrity constraints and indices to facilitate the queries that you believe are necessary for the pages that you just experienced. Your data model should contain appropriate in-line comments.
Test your data model by feeding it to an RDBMS and making sure that the CREATE TABLE and index definition statements are accepted without errors. You will probably want to create a new database user so that your table definitions don't conflict with any tables that you might have defined for your team project.
Expected length of answer: if your data model contains more than 15 or 20 tables, you're probably handling too many special cases.
Write a computer program that generates the page "here are the movies that we recommend based on your ratings of movies compared to other users' ratings of movies in the database" by querying the data model that you defined in Question 1. Ideally your program will be a single SQL query that returns rows in descending order of likeliness that the user will like a movie. It is acceptable to use procedural language crutches, e.g., PL/SQL functions in Oracle.
Test your query by feeding your data model from Question 1 into the RDBMS that you've been using this semester. Fill the tables with at least the following test data (you may add more if you like):
Print out a transcript of a database session in which you use your query to generate movie recommendations to Biff and Ronald. Note that your query should never recommend a movie that the person has already seen.
Visit photo.net with the goal of uploading three photos and sharing them with six friends (by emailing them a URL).
Take the following steps:
Critique the user experience. Your critique should be clear concerning what is wrong with the current system. Your critique should be explicit about what to change, such that a junior programmer could implement your improvements without depending on his or her own taste and judgement.
Expected length of answer: 1-2 pages.
Suppose that someone notices the inconsistencies and prevailing lameness of the average MIT campus organization's Web site (see Activities and Clubs at MIT for a list of offenders). Here we are at the school that invented the Web (with a bit of help from the Swiss physicists and NCSA) and this is the best we can do?
Imagine that you've been asked by the Associate Dean for Internet Self-Esteem to develop a central server that will provide outsourced IT to MIT student organizations. Each organization will get its own corner of this server rather than having to build a standalone Web site. What services should this central facility provide to organizations? To a club leader? To a club member? To a new student trying to figure out which clubs to join? To an MIT Dean trying to figure out which clubs to fund?
Expected length of answer: 2-3 pages.
Pick some hardware and software tools to support the outsource-IT-for-MIT-clubs system that you designed for Question 4. Explain these decisions in terms of required user capacity, any special circumstances attributable to the service being run at MIT, and with an eye toward long-term maintainability. Try to anticipate and answer questions that someone coming fresh to the problem might have, such as the following:
Expected length of answer: 2 pages total.
Please email your answers to the questions to instructor.
At the beginning of the message, please include a statement affirming that you worked on the exam completely by yourself.