To qualify for this year's Web Programming Competition and compete for cash prizes, you must put together a team that is eligible to participate. Your team must build a Web application that matches one of the competition themes, and meets our technical requirements. Your development schedule must align with our milestones. Your team may wish to enter the rookie division.
Anyone is permitted to listen in on our lectures and workshops (although priority will be given to those enrolled in our course), and any team with 1-4 students that completes our milestones and submits a website that meets the technical requirements will get academic credit for the course (but may not be eligible for cash prizes; see below).
The following rules regard eligibility to compete for cash prizes.
- Undergraduate students: All undergraduate students enrolled at MIT or another college which has an official cross-registration program with MIT (Harvard, Wellesley, etc.) are considered to be eligible.
- Graduate students: MIT graduate students are considered to be eligible.
- Other students: A full-time undergraduate student who does not satisfy the above requirements may participate in the competition if more than 50% of the team is eligible as described above.
- Team size: Teams competing in the main division may have 1-3 students. Teams competing in the rookie division may have up to 4 students.
- Outside help: Non-team members may not contribute to a site's implementation or design (including graphic design). However, team members may use publicly available components (see Original Design and Implementation)
- Past winners: Past competitors who have won more than $2000 total in their 6.470 career are not eligible to compete. As an example, if a team of 3 wins $6470, each team member is considered to have won $6470/3 and is not eligible to compete again. However, members of a team of 3 that won $5000 can compete again. Special prizes do not count towards this restriction. If in doubt, please contact the staff.
- Staff: Current staff members and their immediate family members cannot compete.
You do not have to officially register for the course (6.148) to compete, as long as you are eligible. We strongly encourage that you register for the course so we have a count on the number of competitors for logistics. However, you may compete in 6.470 even if you are taking another 12 unit class during IAP by not registering officially for 6.470.
All teams' sites must satisfy the following technical requirements to qualify for competition and gain academic credit. The requirements are intended to ensure entries entail a significant programming effort, and aim to expose students to users' expectations for modern web sites.
You may not begin development on your site until Monday, January 6, 2014 at 11AM. Failure to do so will result in disqualification.
Your site must meet all the following basic requirements.
- Dynamically-generated, database-backed pages. Your site must contain pages that are produced dynamically by a back-end (like PHP, Python, or Ruby scripts) that uses the results of database queries.
- Personalized experience based on user accounts. Your site must have a sign-in feature. The feature can use 3rd party authentication, such as OpenID or Facebook Connect. At a minimum, a personalized UI can be achieved by including the user's name in the header. Signing off and account management (e.g., password change) are optional. Note: If your site will use MIT certificates, you must implement an alternative form of authentication for our non-MIT judges.
- Original design and implementation. Your site's high-level design and the implementation of key features must be original. Customizing a CMS (e.g., Alfresco, Drupal, Wordpress) will most likely result in a site that violates this requirement. You may use open-source or publicly-available closed-source components, as long as the top-level design is original. You may use Web application frameworks like Django or Ruby on Rails.
Your site must help users access a nontrivial amount of content. You must achieve this goal by one of the following methods.
- Pre-generated dataset. Your database contains a processed version of a publicly accessible dataset, or you can bootstrap your site with fake data. You will need to either show us the original dataset or briefly describe the method used to generate the data. Be creative when generating your data! Judges will be bored by a site where the same three names show up everywhere! We recommend that this data take up at least 100 database entries.
- 3rd party data access. Your back-end uses another application's publicly accessible API to access and return data on the fly. Please keep in mind that the 3rd-party data must be received by your server, You must show us the application, API description, and your implementation. If you go this route, you must use a database as a cache and fallback mechanism for API requests. You will fail milestone check-offs if your application malfunctions due to 3rd party API failures, and you may be disqualified if this happens when we test your application after the submission deadline.
Your site must contain a dynamic, nontrivial frontend feature. You might achieve this by implementing one of the following features:
- Data visualization. Your application presents data in a visual manner that enhances the users' understanding of the data. The visualization should highlight some feature of the data that isn't obvious or trivial. The user must be able to influence which data gets displayed in the visualizations. You are allowed to use a pre-existing implementation for your visualization, like a jQueryUI widget, provided that it fits with your application. Original visualizations will be recognized with special awards.
- Dynamic filtering. Your application shows a small (< 10%) subset of data which is most relevant to the user at the moment, or ranks the data such that the most relevant items are shown first. The subset and/or the ordering of the data must change in response to the user's actions. Three examples that would fulfill this requirement are full-text search, criteria-based search, and a "recommended for you" section. For the latter, you will have to convince us that the contents changes based on user actions.
- Asynchronous viewing/modification of data. After your application is loaded, future additions, modifications, or deletions are done asynchronously (without a new page load). A "one-page site" that contains significant functionality implemented via asynchronous calls to your server would satisfy this requirement.
Your must use version control with Git to develop your site. When submitting the second milestone and the final product, you must include a Git commit hash that is accessible by the staff.
We recommend that you use Github. MIT provides students with Github repos at github.mit.edu (certificates required). We will have a tutorial on how to use Git during the first week of class; if you need help, you can also email the staff or attend office hours.
Your site must comply with U.S. law and MIT academic policy. Here are the issues that are usually relevant.
- Intellectual property use. Make sure you only use publicly-available data for your site. This applies to both the data in your database, and the implementation. Pay particular attention to images, fonts, and CSS, as most cease-and-desist letters refer to these.
- Old or proprietary code. Besides your code, all the 3rd-party software that your site uses, whether compiled binaries (e.g. DLLs) or source code (e.g. a PHP library), that you use must be publicly available, either for free or for a fee. Most importantly, you may not use any code that you wrote before January 6, 2014, unless it was publicly released.
- Plagiarism. We will ask you to name all your team members, and list all the 3rd party data, code, and media that you have used. Please keep careful track of your sources, just like you would for any other course. Plagiarism may result in disqualification, a failing grade, and referral to MIT's Committee of Discipline.
- Straight-forward evil. Do not spam. Do not encourage or assist users in breaking non-disclosure agreements or infringing copyright. Do not abuse MIT's infrastructure or databases. Do not interfere with other contestants' development process.
Your site must work in one of the following browsers (you will specify which one in the milestones). We will use the browser you specify to view your website for judging and grading purposes. The latest release of each of these browsers will be used.