|
|
| Assigned | Due (11:59pm) | Work | Topics | FAQ |
|---|---|---|---|---|
| Tue. Sept. 29 | Mon. Oct. 5 | Gradiance Exercises #1 (2 sets) RA Query Assignment | Relations, XML, Relational algebra | -- |
| Tue. Oct. 6 | Mon. Oct. 12 | Gradiance SQL Labs Challenge Problems #1 | Relational algebra, SQL | -- |
| Tue. Oct. 13 | Mon. Oct. 19 | XML Query Assignment | XPath, XQuery, XSLT | XML Query FAQ |
| Tue. Oct. 20 | Mon. Oct. 26 | Gradiance Exercises #2 (3 sets) Challenge Problems #2 | Relational design | -- |
| Tue. Oct. 20 | Mon. Nov. 2 | Project Part 1 (2 weeks) | -- | Project 1 FAQ Help session slides |
| Tue. Nov. 3 | Mon. Nov. 9 | Gradiance Exercises #3 (2 sets) Project Part 2 (1 week) | UML, Constraints and triggers | Project 2 FAQ |
| Tue. Nov. 10 | Mon. Nov. 16 | Gradiance Exercises #4 (2 sets) Challenge Problems #3 | Transactions, Indexes, Views | -- |
| Tue. Nov. 10 | Thu. Nov. 19 | Project Part 3 (1.5 weeks) | -- | Project 3 FAQ |
| Tue. Nov. 17 | Thu. Dec. 3 | Gradiance Exercises #5 (3 sets) Challenge Problems #4 | Authorization, Recursion, Warehousing & Mining | -- |
|
(20% of your final grade) |
Gradiance exercises are based on "root questions," from which the system generates different instances of the exercises each time you try an assignment. Thus, you can test yourself on the same exercises multiple times, and you receive immediate feedback for each attempt. The Gradiance SQL Lab component automatically tests assigned SQL queries for correctness against a real database, and provides immediate feedback. Overall, using Gradiance avoids many shortcomings of the traditional submit-and-then-wait-for-grades approach, while allowing you to perform assignments as many times as you wish in order to ensure you've mastered the material. We strongly encourage you to continue testing on each topic until you complete the assignment with a 100% score at least once.
For Gradiance exercise sets, your score is the highest score
achieved as of 11:59pm on the due date. For Gradiance labs, your
score is the most recent score achieved as of 11:59pm on the due
date. There is no late allowance for Gradiance work.
|
(7% of your final grade) |
We ask you to type up your solutions to the challenge problems and
submit them electronically. (Details are provided with the
assignments, and students who strongly prefer to hand-write their
solutions may scan them for submission.) The late
policy for challenge problems is outlined below.
|
(8% of your final grade) |
|
(20% of your final grade) |
We will expect certain minimal functionality in each AuctionBase system -- beyond that, the sky's the limit. Minimal functionality includes a variety of queries and browsing capabilities over the current items up for auction, the bids on those items, and the sellers and bidders. AuctionBase also must provide a means for entering bids, and for concluding auctions on individual items. Various integrity constraints must be monitored. Although AuctionBase uses the MySQL DBMS and therefore has transaction support, multi-user issues are not a focus of the project.
Web programming skills are not required for the AuctionBase project. We will provide skeleton PHP code for most aspects of the web interface. Those students savvy in web programming may rewrite or extend the interface as they please.
At the end of the course, there will be a small contest in which we select a few of the best AuctionBase systems to be demonstrated in class and linked to the course home page. No extra credit is given, but winners will be invited to enjoy lunch at the Stanford Faculty Club with Prof. Widom, the TA's, and the other contest winners.
The scope of the AuctionBase project is such that it can easily be completed by each student in the class individually -- partners or teams will not be used.
To develop the project all students will use the open-source MySQL relational database management system and the PHP scripting language, running under Unix. (See Interfacing with Stanford's Unix Machines.) An initial part of the project involves standalone parsing and processing of XML data, which is typically done using Java.
We will assume students are proficient already with Unix and Java, but we are not assuming familiarity with web or database programming -- help sessions will be provided. (See Help Sessions in the Administrative Information page.)
In general, students are welcome to use alternative languages, systems, and tools if they wish. However, only MySQL and PHP on the Stanford Unix Myth machines will be supported by the course staff, and the specifications for the project must be met regardless of the languages or tools used. We will provide an XML parser in Java for processing the initial XML data, but students may use other tools or languages if they prefer.
Important note: Students using alternative languages, systems, and tools must be able to submit all of their code using the standard submission procedure. Furthermore, the TA's must be able to compile and run all submitted code on the Stanford Unix Myth machines without any additional packages or runtime support, and with no additional effort over that required for projects using the supported languages and tools.
You will be given a large volume of data downloaded from the eBay web site and stored in XML files. You will examine the data and design a good (we hope) relational schema for it. You will then write a program or scripts to transform the data from its XML form into MySQL's load file format, conforming to your relational schema. You will create your schema in your own MySQL database and load the data.
This part of the project will expose you to some additional aspects of MySQL, using the AuctionBase data. You will experiment with indexes, views, and stored procedures, and you will implement some constraint-checking features using triggers. You will also add a "current time" feature to your AuctionBase database.
As a baseline, you will design an appropriate set of queries and updates for your AuctionBase system and create a simple web interface for them. Ambitious students may migrate the simple front-end into a user-friendly web interface that looks like a real auction site, and may exploit triggers, stored procedures, or other MySQL features for additional functionality. Use your creativity. Several projects will be selected to be demonstrated on the last day in class (for glory, not grades).
|
|
|
|
cs145@cs explaining
precisely why. Please do not ask for a regrade on a challenge problem
until you have studied our sample solution. Include your name, @stanford
username, and an exact pointer to the work in question. The TA
responsible for grading the work will contact you.
Please note that sometimes during regrading we discover a grading
error or misjudgement in which too many points were awarded. In this
case, your score will be lowered. In other words, a regrade
request may result in a higher score, a lower score, or no change.
|
|
Under the Honor Code at Stanford, each of you is expected to solve Gradiance exercises and labs independently, and to submit your own original work for challenge problems, query assignments, and the programming project. On many occasions when working on assignments (but never exams!) it is useful to ask others -- the instructor, the TA's, or other students -- for hints, or to talk generally about aspects of the assignment. Such activity is both acceptable and encouraged, but you must indicate on all submitted work any assistance (human or otherwise) that you received. Any assistance received that is not given proper citation will be considered a violation of the Honor Code. In any event, you are responsible for understanding, performing or writing up, and being able to explain on your own, all Gradiance exercises, Gradiance lab queries, and other work that you submit. The course staff will pursue aggressively all suspected cases of Honor Code violations, and they will be handled through official University channels.
If you have any questions about this policy or about the degree to which we will pursue Honor Code violations, please discuss your concerns with the course staff immediately.